« RaXino♪(ラクシーノ)基板ができてきた!! | トップページ | RXマイコンのUSB開発(2) »

2011.12.21

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でダンプしながら進められるので、開発がとても楽になります。
Rxusb

で、HEW→GCCへ移行してみたら、割り込み関係の#pragma文が関係するところを若干の修正しただけで見事に動きました。

パソコンにつないだら、新しいデバイスとして認識されました。この時点ではまだドライバがないので?がついています。
Rxusb1

INFファイルを書いて、Windows標準のusbser.sysがロードされるようにしました。
Rxusb2

ドライバのインストールは成功です。
Rxusb3

デバイスマネージャにも正しく登録されるようになりました。
Rxusb4

そして、TeraTermから仮想COMポート(このPCでは26番に割り当てられた)として開くことができ、ちょっとしたサンプルプログラムを作って、通信できることも確かめました。
Rxusb5

1MByteのデータを送ってRX62N→PC方向への転送速度(つまり、IN方向)を測ったところ、約174kB/secでていました。約1.3Mbpsなのでまずまずといえるでしょう。仮想シリアルではなく生で使ったらもっと速くなるかもしれません。
もともとのルネサスのサンプルプログラムにはいろいろ問題があるので、まだ実用的ではありませんが、今後、これをベースにいろいろ作って生きたいと思います。

目標としては、RX62Nのプログラムで、物理的なUART(SCI0,SCI1・・・)への入出力と、USB経由の仮想シリアルポートへの入出力に、同じ関数を使うことができるようにしたいと考えています。

RX62NのUSB開発(1)

|

« RaXino♪(ラクシーノ)基板ができてきた!! | トップページ | RXマイコンのUSB開発(2) »

コメント

コメントを書く



(ウェブ上には掲載しません)




« RaXino♪(ラクシーノ)基板ができてきた!! | トップページ | RXマイコンのUSB開発(2) »