ルネサスRX62Nにはイーサネットコントローラが内蔵されています。
この使い方がわかってきたので、備忘録に書いておきます。
検証に使うのは特電RX62N評価ボード。
基板上にイーサネットのパルストランス内蔵コネクタが乗っています。
イーサネットのサンプルプログラムは、ルネサスのWebサイトのRXマイコンのコーナーにある「アプリケーションノート サンプルコード」にあります。この中からEthernetで絞り込むと、「RX62Nグループ UIP TCP/IPプロトコルスタックデモンストレーション アプリケーションノート DEC.27.10 Rev.1.00 R01AN0169JU0100 source」というのが見つかりますので、ダウンロードします。
2段なって出てくるので、下の段の、sourceをクリックしてダウンロードします。
an_r01an0169ju_rx62n_ether.zipというファイルがダウンロードされるので、解凍します。
解凍したプロジェクトフォルダをC:\WorkSpaceに移動し、RX_uIP.hwsというプロジェクトファイルをHEWで開きます。
ぱっと見て非常にたくさんのファイルがあり、どこからどう手をつけていいか分かりません。
src\bsp、src\driver、src\uip、src\user-appという4つのフォルダにソースコードが入っています。src\bspはボード特有の処理、src\driverはPHYチップを叩くための低レベルな階層、src\uipはオープンソースのTCP/IPプロトコルスタック、src\user-appはユーザアプリケーション(CGIからLEDをコントロールするためのプログラム)です。
何はともあれ、コンパイルしてみましょう。すると・・・
なんと、HEWの評価版の128kB制限にひっかかってしまうではないですか!?
そんなに巨大なコードなのかと思いきや、どうやら、コード中に埋め込まれているWebページのデータが大きかったようです。具体的にいうと、an_r01an0169ju_rx62n_ether\workspace\src\uip\apps\webserver\httpd-fsdata.cというファイルの中にあるdata_RX62N_jpg[]という配列です。これを
static const unsigned char data_RX62N_jpg[] = {
/* /RX62N.jpg */
0x2f, 0x52, 0x58, 0x36, 0x32, 0x4e, 0x2e, 0x6a, 0x70, 0x67, 0,
/*
0xff, 0xd8, 0xff, 0xe0, 00, 0x10, 0x4a, 0x46, 0x49, 0x46,
・・・
・・・(中略)
・・・
0xf2, 0x9c, 0xd6, 0x9c, 0x27, 0x8c, 0xcb, 0x69, 0x54, 0x73,
#endif
0x4a, 0x57, 0x71, 0x8b, 0x97, 0xfe, 0x5, 0xcb, 0x7f, 0xc8,
0xff, 0xd9, 0};
として短くします。すると、コンパイルが通るようになります。
このサンプルコードはルネサスのスタータキット用に作られているので、ボードにあわせて修正すべきなのは、以下の7つのファイルです。
① src\bsp\hwsetup.c
汎用I/Oポートの設定が書かれています。LEDやスイッチとして使われるポートです。動作の核心となる部分ではありません。修正しなくても動きますが、変な端子から信号が出ないよう、ボードにあわせて変更したほうがいいでしょう。
② src\bsp\rskrx62n.h
前述のI/Oポートに関して書かれている部分を書き換えます。LEDはCGIの中から操作されたり、タイマで点滅させるためにあるようです。スイッチは使われていないようです。
③ src\bsp\lcd.c
ルネサススタータキット用のLCDに表示するためのプログラムですが、必要なければ中の関数をごっそり削除します。また、void DisplayString(unsigned char position, _far char * string)という関数が呼び出されたときに自分の関数を呼ぶようにすれば、LCDに表示されるメッセージをシリアルコンソールに出したりすることもできます。
あとは、src\bsp\intprgを書き換えて割り込みを使えるようにしたり、src\bsp\resetprg.cを書き換えてUARTの初期化をしたり、src\bsp\stacksct.hを書き換えてスタックサイズを増やしたりということを、お好みで行います。
次の記事では、核心部分であるイーサネットコントローラのコードの書き換えを行います。
最近のコメント