===================================================================== BlueNinja依存部 Last Modified: 2015 Nov 12 ===================================================================== (1) 対応しているターゲットシステムの種類・構成 BlueNinja依存部は,CEREVO社のBlueNinjaをサポートしている. ・CDP-TZ01B (TOSHIBA TZ1001MBG) 使用しているリソースは, ・UART1(syslog出力,低レベル出力) ・TMR0,TMR1(システム時刻,イベント時刻) であり,TOSHIBA TZ1001MBGを使用しているターゲットであれば, 容易にポーティング可能である. ターゲット初期化およびOpenOCD動作のためには,東芝社から提供されている "TZ1000 BSP",および,CEREVO社から提供されている"BlueNinja BSP"を用いる. (2) 使用する開発環境と動作検証した条件(バージョン,オプション等) コンパイラはGCCを用いる.動作確認に用いたコンパイラは以下の通りである. arm-none-eabi-gcc 4.8.4 (GCC ARM Embedded in Launchpad 4.8-2014-q3) arm-none-eabi-gcc 4.9.3 (GCC ARM Embedded in Launchpad 4.9-2015-q1) デバッグ環境は,BlueNinjaに付属するブレイクアウトボードのmbed相当の 書込み機能を利用したFlashへの書込み,また,ブレイクアウトボードの CMSIS-DAPインターフェースを利用した,GDBとOpenOCDによるデバッグを 確認した. ホストPCのOSがWindowsの場合には,ブレイクアウトボードのmbed相当の機能を 利用するために,デバイスドライバのインストールが必要である. 下記のURLの,"Download latest driver"リンクから,デバイスドライバを ダウンロードし,ホストPCにインストールする. https://developer.mbed.org/handbook/Windows-serial-configuration MacOSX環境では,上記デバイスドライバのインストールは必要ない. おそらく,Linux環境でも必要ないと思われるが,要確認である. 動作確認に用いたGDBは,上記GCCのパッケージに同梱されているGDBである. また,動作確認に用いたOpenOCDのバージョンは,OpenOCD 0.8.0である. TZ1000 BSPを用いるために,以下の環境構築が必要である. 1. CMSISの入手 http://www.keil.com/dd2/pack/ のURLの,ARM > CMSIS CMSIS (Cortex Microcontroller Software Interface Standard) > Version: 3.20.4 ARM.CMSIS.3.20.4.pack にある"Download"ボタン から,ARM.CMSIS.3.20.4.pack をダウンロードし,unzipにより 解凍する. 2. TZ1000 BSPの入手   http://blueninja.cerevo.com/ja/guide/altc.html のURLに   従い,東芝社のウェブサイトから"TZ1000 BSP non OS Version for MDK-ARM"のVer.1.35.0をダウンロードする. ダウンロードした TZ1000_OSless_MDK_20150827.zip をunzip により解凍し,TZ1000_OSless_MDK_20150827/TZ1000_Software_150827/ TOSHIBA.TZ10xx_DFP.1.35.0.pack を解凍する. 3. デバイスドライバ用ディレクトリの作成 target/blueninja_gcc/ 以下に,device/ ディレクトリを作成する. そして,device/ 以下に,1.〜2.で解凍したディレクトリを,以下の ように配置する. target/blueninja_gcc/device/ - ARM.CMSIS/ ... 1. で解凍したディレクトリを配置 - ARM.CMSIS.pdsc - CMSIS/ - CMSIS_RTX/ - Device/ - TOSHIBA.TZ10xx_DFP/ ... 2. で解凍したディレクトリを配置 - Boards/ - Device/ - Flash/ - Middleware/ - RTE_Driver/ - SVD/ - TOSHIBA.TZ10xx_DFP.pdsc - Utils/ - RTE/ ... TOSHIBA.TZ10xx_DFP/ から一部のファイルを配置 - Device/TZ1001MBG/ ... 新規作成 ※ なお,deviceというディレクトリ名はパスは,Makefile.targetの DEVICEDIRマクロを修正することにより変更可能である. 4. target/blueninja_gcc/device/RTE/ 以下のファイルの準備 TOSHIBA.TZ10xx_DFP/ から一部のファイルを RTE/ 以下に配置する. - cp TOSHIBA.TZ10xx_DFP/RTE_Driver/Config/* RTE/Device/TZ1001MBG/ - cp TOSHIBA.TZ10xx_DFP/Boards/TOSHIBA/RBTZ1000/Template/RTE/ \ RTE_Components.h RTE/ 上記ファイルにパッチをあてる. - cd target/blueninja_gcc/device - patch -p0 < ../RTE.patch BlueNinja BSPを入手するためには,gitを使用し,下記のコマンドにより, BlueNinja BSPリポジトリをクローンする. git clone https://bitbucket.org/cerevo/blueninja_bsp.git OpenOCDによるデバッグ時には,下記のファイルをOpenOCDのscripts/ ディレクトリに配置する必要がある. - cp blueninja_bsp/install_files/tz10xx.cfg %OpenOCD%/share/openocd/ \ scripts/target/ - cp blueninja_bsp/install_files/tz10xx_reset.tcl %OpenOCD%/share/ \ openocd/scripts/target/ なお,BlueNinja BSPの下記に含まれるライブラリやドライバも利用可能である. - blueninja_bsp/_TZ1/skel/src/ その際には,Makefileを下記の方針で修正する必要がある. - .cファイルのパスをvpathに含める - .hファイルのパスをINCLUDEに含める ライブラリやドライバのリファレンスは下記CEREVO社のウェブサイトを参照のこと. http://blueninja.cerevo.com/ja/docs/reference/index.html 参考情報 (1) 東芝社やCEREVO社のライブラリやドライバでは,stdint.hを使用しており, TOPPERSカーネルのt_stddef.hの定義と重複するため,コンパイルエラーと なる. 東芝社やCEREVO社のライブラリやドライバのヘッダファイルをincludeする 際には,そのinclude文の前に,下記のインクルードガード用マクロを定義 することで,型定義の衝突を回避することができる. #define _STDINT_H 参考情報 (2) CEREVO社のBlueNinja BSPのライブラリやドライバから使用している, 東芝社のTZ1000 BSPのライブラリやドライバに関する情報は, blueninja_bsp/_TZ1/scripts/app_create.bat が参考になる. (2-1) sample1の動作確認手順 1. (2) の環境準備をする 2. asp3/obj/ ディレクトリを作成する $ mkdir obj 3. asp3/obj/ に移動し,configureを実施 $ cd obj $ ../configure -T blueninja_gcc 4. Makefileを修正し,asp.binをビルドするようにする @@ -205,8 +205,8 @@ # # ターゲットファイル(複数を同時に選択してはならない) # -#all: $(OBJFILE) -all: $(OBJNAME).bin +all: $(OBJFILE) +#all: $(OBJNAME).bin #all: $(OBJNAME).srec ##### 以下は編集しないこと ##### 5. make depend; make を実行し,asp.binをビルド $ make depend; make 6. BlueNinjaをブレイクアウトボードに接続し,USBケーブルでホストPCに 接続する. 7. BlueNinjaがUSBメモリかつシリアルポートとして認識される. USBメモリとして認識されたBlueNinjaのトップディレクトリに asp.binを置く $ cp asp.bin %DevicePath%/CDP-TZ01B/ 8. BlueNinjaが自動的に再接続認識される 9. TeraTermなどを使用し,ホストPCのシリアルポートをopenする 10. ブレイクアウトボードのパワースイッチ(miniUSB端子の隣) を2秒以上押し続ける パワースイッチの位置は下記URLの図が参考になる http://blueninja.cerevo.com/ja/docs/BlueNinja_ERASE.png 11. BlueNinjaでASPが起動し,シリアルログ出力が開始され,LEDが点灯する (3) ターゲット定義事項の規定 (3-1) 割込み優先度 CFG_INTで使用可能な割込み優先度の範囲は,-8 〜 -1 である.ARM-Mプロセ ッサ依存部のマニュアルあるように,TMIN_INTPRIに設定可能な値の最大値は -7であり,カーネル管理内の割込みは-7 〜 -1 の優先度を設定可能であり, カーネル管理外の割込みの優先度としては-8が使用可能である. (4) メモリマップ 例外ベクタ,スタートアッププログラムテキスト,定数データはFLASHへ, その他のプログラムテキスト(*),その他のデータはRAMへ配置する. (*)は,スタートアッププログラムにより,FLASHからRAMへコピーされる. (5) シリアルインタフェースドライバの情報 シリアルインタフェースドライバでは,UART1を用いる.通信フォーマットは, 115200bps, 8bit, non-parity, 1topbitである. (6) システムログ機能の情報 システムログの低レベル出力は,UART1を用いる.通信フォーマットは, 115200bps, 8bit, non-parity, 1topbitである. (7) ライブラリの指定 "Stellaris Peripheral Driver Libary" に含まれる,libdriver.a と libgr.a をリンク対象とする必要がある.指定方法は,Makefile.target の LIBS に指定すればよい. (8) バージョン履歴 2015/11/15 ・最初のリリース