RXマイコンのUSB開発(1)
来週、RaXino基板が出来上がってきます。
RaXino基板にはUSB-JTAGや、USB仮想シリアル変換のためのICがのっていません。
RX62Nにプログラムを転送するには、FDT(Flash Development Tool)を使って内蔵ROMに書き込むしかありませんでした。
これでは不便なので、RX62Nの内蔵USBファンクションを仮想COMポートにして、RX62N単体で動くUSBブートローダ兼モニタを作ろうと思います。
まず、ルネサスのWebサイトからUSBのサンプルプログラムをダウンロードしてきます。USBでXMODEM転送を行うサンプルがあったので、それを参考にします。このサンプルプログラムはRX62Nの内蔵USBファンクションをCDCというものに設定します。
CDCというのは、いわゆる仮想COMポートです。標準的な仮想COMポートなので、デバイスドライバはWindowsにあらかじめ組み込まれているusbser.sysが使えます。開発者としてはinfファイルだけを書き換えれば動くので、楽です。
ただし、ルネサスのWebサイトにあるUSBのサンプルは、HEW用に作られているので、GCCでコンパイルするためにはいくつか修正しなければなりません。
ここでは開発用に特電の究極のRX62Nボードという評価ボードを使います。このボードはレガシーのRS232Cのポートもついているので、レガシーCOMポートに直につなぐことができます。こうすると、これから開発するUSB関係の内蔵ペリフェラルレジスタの内容を、sprintfとsci_putsでダンプしながら進められるので、開発がとても楽になります。
で、HEW→GCCへ移行してみたら、割り込み関係の#pragma文が関係するところを若干の修正しただけで見事に動きました。
パソコンにつないだら、新しいデバイスとして認識されました。この時点ではまだドライバがないので?がついています。
INFファイルを書いて、Windows標準のusbser.sysがロードされるようにしました。
そして、TeraTermから仮想COMポート(このPCでは26番に割り当てられた)として開くことができ、ちょっとしたサンプルプログラムを作って、通信できることも確かめました。
1MByteのデータを送ってRX62N→PC方向への転送速度(つまり、IN方向)を測ったところ、約174kB/secでていました。約1.3Mbpsなのでまずまずといえるでしょう。仮想シリアルではなく生で使ったらもっと速くなるかもしれません。
もともとのルネサスのサンプルプログラムにはいろいろ問題があるので、まだ実用的ではありませんが、今後、これをベースにいろいろ作って生きたいと思います。
目標としては、RX62Nのプログラムで、物理的なUART(SCI0,SCI1・・・)への入出力と、USB経由の仮想シリアルポートへの入出力に、同じ関数を使うことができるようにしたいと考えています。
RX62NのUSB開発(1)
| 固定リンク
コメント