1. 概要 ... 2
1.1 概要 ... 2
1.2 RTX について ... 2
1.3 lwIP について ... 2
1.4 動作モード ... 2
1.5 開発環境について ... 4
1.6 ワークスペースについて ... 4
2. サンプルプログラムの構成 ... 5
2.1 フォルダ構成 ... 5
2.2 ファイル構成 ... 6
3. AP-RZA-1A サンプルプログラム ... 9
3.1 ビルド・デバッグ方法 ... 9
3.2 ブート処理 ... 18
3.3 サンプルプログラム概要 ... 19
3.4 サンプルプログラムの使用方法 ... 19
3.5 ネットワーク通信設定 ... 20
3.6 サンプルプログラム動作手順 ... 22
3.7 RAM 動作時のメモリマップ ... 24
3.8 ROM 動作時のメモリマップ ... 25
AP-RZA-1A (RZ/A1H CPU BOARD)
RTX Ethernet サンプルプログラム解説
1. 概要
1.1
概要
本アプリケーションノートでは、オープンソースの TCP/IP スタックである lwIP を使用した、 AP-RZA-1A 用 Ethernet サンプルプログラムについて解説します。 本サンプルプログラムの概要を以下に記します。 サンプルプログラム 動作内容 Ethernet サンプルプログラム ・TCP サーバ ・TCP クライアント1.2
RTX について
CMSIS-RTOS RTX は ARMTM社によって提供される無料の RTOS です。ロイヤリティフリーであり、BSD ライセンスの下、
ソースコードにて提供されるリアルタイムオペレーティングシステムです。
タイマ、セマフォ、シグナル管理、ミューテックス、メモリプール、メールボックスなどの機能を備えています。 CMSIS-RTOS RTX は ARM 純正リファレンスソフトウェア開発環境である ARM Development Studio5TM(DS-5TM)に
付属しています。
1.3
lwIP について
lwIP は組み込みシステム向けに設計されている、オープンソースの TCP/IP スタックです。 本サンプルプログラムは、lwIP を使用して、Ethernet 通信を行います。 lwIPの詳細に関しては、lwIPの公式WEBサイト(http://savannah.nongnu.org/projects/lwip/)を参照してください。 本サンプルプログラムで使用した lwIP のバージョンを以下に記します。 バージョン 1.4.11.4
動作モード
本サンプルプログラムは、AP-RZA-1A で動作します。CPU 動作モードは下記のようになっています。 モードの設定方法等につきましては、「AP-RZA-1A ハードウェアマニュアル」をご覧下さい。 なお、下記条件以外で動作させる場合には、ソースファイルやコンパイラオプションなどを変更する必要があります。 ブートモード : シリアル FlashROM からブートCPU ボードの設定を製品出荷時の設定とし、使用方法に合わせて以下の各スイッチの設定を行ってください。 JSW1 <JSW1 設定> ブートモード : シリアル FlashROM からブート ・JSW1 JSW1
1.5
開発環境について
本サンプルプログラムは総合開発環境 ARM Development Studio 5TM (DS-5)を用いて開発されています。
サンプルプログラムに対応する開発環境、コンパイラのバージョンは次のようになります。 開発環境 バージョン コンパイラ名 バージョン 備考 ARM Development Studio 5 5.19.1 ARM Compiler 5.04 update 2
1.6
ワークスペースについて
本サンプルプログラムの総合開発環境 ARM Development Studio 5 ワークスペースは次のフォルダに格納されています。
サンプルプログラム フォルダ
AP-RZA-1A サンプルプログラム(lwIP) プロジェクトフォルダ
2. サンプルプログラムの構成
2.1
フォルダ構成
本サンプルプログラムは下記のようなフォルダ構成になっています。 sample
ap_rza_1a_rtx_lwip AP-RZA-1A サンプルプログラム(lwIP)
プロジェクトフォルダ BAT バイナリ生成用バッチファイルフォルダ Debug RAM 動作用ワークフォルダ Include RTX インクルードフォルダ LWIP lwIP フォルダ Release ROM 動作用ワークフォルダ RTX RTX フォルダ SCAT スキャッタローディングファイルフォルダ SRC ソースファイルフォルダ ap_rza_1a ボード依存部ソースフォルダ boot ブート処理フォルダ gpio GPIO ドライバフォルダ scif SCIF ドライバフォルダ common.h 共通ヘッダファイル main.c メインソースファイル retarget.c 出力再定義ファイル
2.2
ファイル構成
サンプルプログラムは以下のファイルで構成されています。 <\sample フォルダ内>
ap_rza_1a_rtx_lwip ・・・ AP-RZA-1A サンプルプログラム(lwIP) プロジェクトフォルダ <\sample\ap_rza_1a_rtx_lwip フォルダ内> .cproject ・・・ CPROJECT ファイル .project ・・・ PROJECT ファイル <\sample\ap_rza_1a_rtx_lwip\BAT フォルダ内> make_bin.bat ・・・ バイナリファイル生成用バッチファイル <\sample\ap_rza_1a_rtx_lwip\Release フォルダ内> ap_rza_1a_rtx_lwip.axf ・・・ サンプルプログラム ROM 動作用オブジェクトファイル コンパイル後は SRC フォルダが生成され、SRC フォルダ下 にオブジェクトファイル等が生成されます。 <\sample\ap_rza_1a_rtx_lwip\Debug フォルダ内> ap_rza_1a_rtx_lwip.axf ・・・ サンプルプログラム RAM 動作用オブジェクトファイル コンパイル後は SRC フォルダが生成され、SRC フォルダ下 にオブジェクトファイル等が生成されます。 <\sample\ap_rza_1a_rtx_lwip\Include フォルダ内> arm_common_tables.h ・・・ コモンテーブルヘッダファイル arm_math.h ・・・ DSP 共通ヘッダファイル core_ca_mmu.h ・・・ MMU スタートアップファイル core_ca9.h ・・・ ペリフェラルアクセスレイヤヘッダファイル core_caFunc.h ・・・ コアファンクションアクセスヘッダファイル core_caInstr.h ・・・ コアペリフェラルアクセスヘッダファイル core_cm0.h ・・・ Cortex-M0 コアペリフェラルアクセスヘッダファイル core_cm0plus.h ・・・ Cortex-M0+ コアペリフェラルアクセスヘッダファイル core_cm3.h ・・・ Cortex-M3 コアペリフェラルアクセスヘッダファイル core_cm4.h ・・・ Cortex-M4 コアペリフェラルアクセスヘッダファイル
core_cm4_simd.h ・・・ Cortex-M4 SIMD ヘッダファイル
core_cmFunc.h ・・・ Cortex-M コアファンクションアクセスヘッダファイル
core_cmInstr.h ・・・ Cortex-M コア命令アクセスヘッダファイル
core_sc000.h ・・・ SC000 コアペリフェラルアクセスレイヤヘッダファイル
<\sample\ap_rza_1a_rtx_lwip\LWIP フォルダ内>
api ・・・ lwIP API フォルダ
app ・・・ lwIP サンプルアプリケーションフォルダ core ・・・ lwIP 低レベルドライバフォルダ driver ・・・ lwIP ドライバフォルダ include ・・・ lwIP インクルードフォルダ netif ・・・ 汎用ネットワークドライバフォルダ CAHNGELOG ・・・ lwIP ファイル更新履歴ファイル COPYING ・・・ lwIP ライセンス情報ファイル FILES ・・・ lwIP フォルダ構成ファイル README ・・・ lwIP リードミーファイル UPGRADING ・・・ lwIP アップデート履歴ファイル <\sample\ap_rza_1a_rtx_lwip\RTX フォルダ内> INC ・・・ RTX インクルードフォルダ LIB ・・・ RTX ライブラリフォルダ <\sample\ap_rza_1a_rtx_lwip\RTX\INC フォルダ内> cmsis_os.h ・・・ RTX テンプレートヘッダファイル RTX_CM_lib.h ・・・ RTX カーネルコンフィグレーションファイル <\sample\ap_rza_1a_rtx_lwip\RTX\LIB フォルダ内> ARM ・・・ ARM 用ライブラリフォルダ <\sample\ap_rza_1a_rtx_lwip\RTX\LIB\ARM フォルダ内> RTX_CA9_L.lib ・・・ Cortex-A9 用ライブラリファイル RTX_CM0.lib ・・・ Cortex-M0 用ライブラリファイル RTX_CM0_B.lib ・・・ Cortex-M0 用ライブラリファイル RTX_CM3.lib ・・・ Cortex-M3 用ライブラリファイル RTX_CM3_B.lib ・・・ Cortex-M3 用ライブラリファイル RTX_CM4.lib ・・・ Cortex-M4 用ライブラリファイル RTX_CM4_B.lib ・・・ Cortex-M4 用ライブラリファイル <\sample\ap_rza_1a_rtx_lwip\SCAT フォルダ内> ap_rza_1a_rtx_ram.scat ・・・ サンプルプログラム RAM 動作用スキャッタローディング ファイル ap_rza_1a_rtx_rom.scat ・・・ サンプルプログラム ROM 動作用スキャッタローディング ファイル <\sample\ap_rza_1a_rtx_lwip\RTX\SRC フォルダ内> common.h ・・・ 共通インクルードヘッダファイル main.c ・・・ メイン処理 retarget.c ・・・ C ライブラリ用再実装
<\sample\ap_rza_1a_rtx_lwip\RTX\SRC\ap_rza_1a フォルダ内> ARM ・・・ ARM 処理フォルダ iodefine ・・・ RZ 内部レジスタ定義ヘッダファイルフォルダ gic.c ・・・ GIC ファンクション処理 gic.h ・・・ GIC ファンクションヘッダファイル iodefine.h ・・・ 内部レジスタ定義ファイル mmu_Renesas_RZ_A1.c ・・・ MMU スタートアップ処理 pl310.c ・・・ PL310 処理 pl310.h ・・・ PL310 処理ヘッダファイル r_typedefs.h ・・・ 型宣言ファイル Renesas_RZ_A1.h ・・・ ペリフェラルアクセスヘッダファイル RTX_Conf_CM.c ・・・ RTX コンフィグレーションファイル system_Renesas_RZ_A1.c ・・・ RTX デバイス処理 system_Renesas_RZ_A1.h ・・・ RTX デバイス処理ヘッダファイル typedefine.h ・・・ 型宣言ファイル <\sample\ap_rza_1a_rtx_lwip\RTX\SRC\boot フォルダ内> boot.c ・・・ ブート処理 boot.h ・・・ ブート処理ヘッダファイル <\sample\ap_rza_1a_rtx_lwip\RTX\SRC\gpio フォルダ内> gpio.c ・・・ GPIO ドライバ gpio.h ・・・ GPIO ドライバヘッダファイル <\sample\ap_rza_1a_rtx_lwip\RTX\SRC\scif フォルダ内> scif.c ・・・ シリアル通信ドライバ scif.h ・・・ シリアル通信ドライバヘッダファイル
3. AP-RZA-1A サンプルプログラム
3.1
ビルド・デバッグ方法
(1) プロジェクトのインポート
① DS-5 を起動し、メニューバーの[ファイル]→[インポート]を選択します。
③ [ルート・ディレクトリーの選択]を選択し、[参照]からサンプルプログラムのフォルダを選択します。
(2) プロジェクトのビルド
メニューの「ビルド」アイコンを選択します。
構成が Debug の場合、\Debug ワークフォルダに RAM 動作用のオブジェクトファイルが、Release の場合、 \Release ワークフォルダ内に ROM 動作用のオブジェクトファイルが生成されます。
(3) RAM 上でのデバッグ
① 「「DS-5 デバッグ」 パースペクティブ」をクリックし、DS-5 のデバッグ画面へ移行します。
③ 「DS-5 デバッガ」を選択します。
④ 「名前(N)」に「ap_rza_1a_rtx_sample」と入力し、ターゲットに「Renesas」→「RZ/A1H R7S721001」→「BereMetal Debug」→「Debug Cortex-A9」を選択します。
⑤ 「ターゲット接続」を「ULINK2」に設定し、「接続」の「参照...」を選択してホスト PC に接続しているデバッガ(ULINK2) を選択します。
⑥ 「ファイル」タブを選択し、「ワークスペース」からビルドしたオブジェクトファイル(ap_rza_1a_rtx_lwip.axf) を選択します。
⑦ 「OS の認識機能」タブを選択し、プルダウンメニューから「Keil CMSIS-RTOS RTX」を選択します。
⑨ 「ターゲットに接続」アイコンを選択します。
3.2
ブート処理
AP-RZA-1A のブートモードが「シリアル FlashROM からブート」に設定されている場合、パワーオンリセット 解除後に CPU は 0xFFFF0000(内臓 ROM)に格納されているブートプログラムを実行します。 このブートプログラムにより、SPI マルチ I/O バスコントローラが外部アドレス空間リードモードに設定され、基板上に 実装されたシリアルフラッシュに対し直接データの読み出しが可能になります(SPI マルチ I/O バス空間:0x18000000~)。 ブートプログラムの終了後、CPU は 0x18000000 に分岐します。 そのため、本サンプルプログラムでは例外処理ベクタテーブルを 0x18000000 に配置しブートプログラムの終了後に リセットハンドラ処理に分岐するようにしています。 リセットハンドラ処理ではベクタベースアドレスの設定、スタックの初期化、内臓 RAM 書き込みの許可、MMU・キャッシュ の 初期化、クロック周波数の設定やボードの初期化を行い、最後に ARM 統合開発環境 DS-5 のコンパイラツールチェーンによっ て 提供されるC標準ライブラリ関数__main に分岐します。 __main 関数内ではスキャッタローディングファイルを利用したセクションの初期化やデータのコピーなどが行われ、 $Sub$main 関数を経た上で$Super$main 関数がコールされ main 関数に分岐します。CPU のブートモードとブートモードに依存するそれぞれのブート処理に関しての詳細は下記資料を参考にしてください。 ・ 「RZ/A1H グループ ユーザーズマニュアル ハードウェア編」 ・ 「RZ/A1H グループ 初期設定例」 これらの資料は下記 URL から入手が可能です。 http://japan.renesas.com/products/mpumcu/rz/Documentation.jsp http://japan.renesas.com/products/mpumcu/rz/Application_Notes.jsp
3.3
サンプルプログラム概要
本サンプルプログラムは、下記の動作を行います。 ● TCP サーバ AP-RZA-1A を TCP サーバとして動作させます。 指定した IP アドレスで TCP クライアントからの接続を待ちます。 クライアントとの接続が確立後、AP-RZA-1A はクライアントから送信されたデータに対してエコーバック処理 を行います。 ● TCP クライアント AP-RZA-1A を TCP クライアントとして動作させます。 指定した IP アドレスの TCP サーバに接続を行います。 サーバとの接続が確立後、AP-RZA-1A はサーバから送信されたデータに対してエコーバック処理を行います。3.4
サンプルプログラムの使用方法
サンプルプログラムを実行する際には、「\sample\ap_rza_1a_rtx_lwip\SRC」にある main.c において、 使用する機能を選択してください。 main.c では、define 定義を使用して処理の有効及び無効を決定しています。 有効にする機能の define 定義を 1 に設定し、使用しない機能は 0 に設定することで機能の選択を行います。 複数の機能を同時に動作させることはできないため、有効にする機能は必ず1つだけを選択してください。 main.c の修正を行う箇所を以下に示します。 \sample\ap_rza_1a_rtx_lwip\SRC\main.c 26 27 #define TCPCLIENT 0 #define TCPSERVER 1 どちらか一方のみの値を 1 にし、 その他は 0 にしてください。3.5
ネットワーク通信設定
本サンプルプログラムに実装されたネットワーク通信の確認に必要な推奨環境は以下の通りです。
ホスト PC PC/AT 互換機
OS Windows Vista/7/8
LAN ポート 10/100BASE-TX 以上対応の LAN ポート
LAN ケーブル クロスケーブル 3.5.1 ネットワーク設定 本サンプルプログラムで使用するデフォルトのネットワーク設定は以下のようになっています。 IP アドレス 192.168.1.200 サブネットマスク 255.255.255.0 ゲートウェイ 192.168.1.254 MAC アドレス 00-0C-7B-38-XX-XX ※ XX-XX の値は製品ごとに異なります。 ※ この値は本製品背面に添付された製品番号 シールに同等の値が印字されている他、 出荷時に EEPROM の先頭 6byte に保存されています。 ※本製品の MAC アドレスは、弊社が米国電気電子学会(IEEE)より取得したアドレスとなります。 MAC アドレスを変更される際は、お客様にて IEEE より MAC アドレスを取得し、設定してください。
ネットワークの設定は次の 4 つのファイルで行っています。 ・sample\ap_rza_1a_rtx_lwip\LWIP\app\tcp_client_sample.h ・sample\ap_rza_1a_rtx_lwip\LWIP\app\tcp_server_sample.h ・sample\ap_rza_1a_rtx_lwip\LWIP\driver\lwip.h ・sample\ap_rza_1a_rtx_lwip\SRC\main.c ご使用の環境に合わせてネットワークの設定を変更する際には上述の各ファイルの設定値を修正してください。 各ファイルの修正を行う箇所を以下に示します。 通信相手のポート番号、IP アドレスを設定する場合 sample\ap_rza_1a_rtx_lwip\LWIP\app\tcp_client_sample.h 21 22 #define HOST_IP_ADDR ("192.168.1.201") #define HOST_PORT (50000) AP-RZA-1A のポート番号を設定する場合 sample\ap_rza_1a_rtx_lwip\LWIP\app\tcp_server_sample.h 21 #define TCP_SERVER_PORT (50000) AP-RZA-1A のネットワークの設定(ポート番号除く)をする場合 sample\ap_rza_1a_rtx_lwip\LWIP\driver\lwip.h 21 22 23 #define LWIP_IP_ADDR ("192.168.1.200") #define LWIP_NET_MASK ("255.255.255.0") #define LWIP_GATEWAY ("192.168.1.254") AP-RZA-1A の MAC アドレスの設定をする場合 sample\ap_rza_1a_rtx_lwip\SRC\main.c
32 const unsigned char TM_FIXED_MAC[6] = {0x00, 0x0C, 0x7B, 0x38, 0x01, 0x00};
※ここで定義されている値は、サンプルプログラムを動作させる上での仮の値となります。 閉鎖されていないネットワークに本製品を接続しサンプルプログラムを動作させる場合、 必ず TM_FIXED_MAC の値を変更し、 基板ごとに定義された値、あるいは、お客様が取得された MAC アドレスの値を設定してください。 通信相手のネットワーク設定 AP-RZA-1A のネットワーク設定 AP-RZA-1A のネットワーク設定 AP-RZA-1A の MAC アドレス設定(16 進数)
3.6
サンプルプログラム動作手順
以下の手順に従い、ネットワーク動作を確認してください。
なお、ネットワークの設定はデフォルトの設定として説明を行いますので、ネットワークの設定を変更された場合には、適宜 その項目を読み替えてネットワーク動作を確認して下さい。
① LAN クロスケーブルを使い CPU ボードの LAN コネクタ(CN3)とホスト PC を接続します。 接続図を以下に示します。 ② ホスト PC 上でネットワークの設定を行います。 CPU ボードの設定に合わせるため、ホスト PC のネットワーク設定を下記の内容に変更してください。 IP アドレス 192.168.1.201 サブネットマスク 255.255.255.0 ゲートウェイ 192.168.1.254 ネットワークの設定以降は、動作させるプログラムによって動作確認方法が異なります。 各プログラムの動作確認方法を以下に示します。 機種 :PC/AT 互換機 OS :WindowsVista Windows7 Windows8 CN3 DC+5V AP-RZA-1A イーサネットポートに接続 イーサネットケーブル ホストコンピュータ
・TCP サーバ ③ CPU ボードに電源を投入し、サンプルプログラムを動作させます。 AP-RZA-1A は TCP サーバとして動作し、TCP クライアントからの接続を待ちます。 ④ ホスト PC 上で TCP 通信が可能なソフトを起動し、TCP/IP 通信を行います。 ホスト PC は TCP クライアントとして動作させます。 TCP/IP の設定は、次の通りです。 ・ホスト PC の IP アドレス:192.168.1.201 ・AP-RZA-1A の IP アドレス:192.168.1.200 ・ポート番号:50000 ・サブネットマスク:255.255.255.0 ・ゲートウェイ:192.168.1.254 ⑤ ホスト PC 上で TCP サーバとの接続が確認できましたら、ホスト PC から任意のパケットを送信してください。 送信したパケットに対して、エコーバック処理が確認できれば TCP サーバ動作確認は終了です。 ・TCP クライアント ③ ホスト PC 上で TCP 通信が可能なソフトを起動し、TCP/IP 通信を行います。 ホスト PC は TCP サーバとして動作させます。 TCP/IP の設定は、次の通りです。 ・ホスト PC の IP アドレス:192.168.1.201 ・AP-RZA-1A の IP アドレス:192.168.1.200 ・ポート番号:50000 ・サブネットマスク:255.255.255.0 ・ゲートウェイ:192.168.1.254 ④ CPU ボードに電源を投入し、サンプルプログラムを動作させます。 AP-RZA-1A は TCP クライアントとして動作し、TCP サーバであるホスト PC に対して接続を行います。 ⑤ ホスト PC 上で TCP クライアントからの接続が確認できましたら、ホスト PC から任意のパケットを送信してください。 送信したパケットに対して、エコーバック処理が確認できれば TCP クライアント動作確認は終了です。
3.7
RAM 動作時のメモリマップ
3.8
ROM 動作時のメモリマップ
商標について
・ARM Development Studio 5TM (DS-5TM) は ARM 社の登録商標、商標または商品名称です。
・RZ および RZ/A1H は、ルネサスエレクトロニクス株式会社の登録商標、商標または商品名称です ・その他の会社名、製品名は、各社の登録商標または商標です。
ALPHA PROJECT Co.,LTD.
株式会社アルファプロジェクト