開発スターターガイド

 

BlueNinjaを利用されるWindows版お客様向けのガイドです。
※開発環境のバージョンアップ手順は「開発環境アップデート手順」を参照ください。

あわせて「FAQ(よくあるご質問)」もご覧ください。

本ガイドではBlueNinjaにWindowsへのGnu toolchain(GCC、GDB、binutils)のインストールとプログラムのビルド、デバッグを行う手順をまとめています。

1.開発を始める前に

本ガイドで解説する開発手順には、下記が必要です。

  • BlueNinja CDP-TZ01C(モジュール、ブレイクアウトボード)
  • インターネット接続可能なWindows 7以降が動作するPC
  • USB MicroBケーブル
  • モジュールに接続するバッテリー


※USBから給電する場合(ブレイクアウトボードのPin17またはBlueNinja本体のCN3から電源供給を行わない場合)はJ1をショートしてください。
1-1_1

2.開発環境のインストール

2-1.ブレイクアウトボードのデバイスドライバの入手とインストール

  1. ブレイクアウトボードに搭載されたmbed相当のインターフェースには、デバイスドライバのインストールが必要です。
    mbedのサイトからデバイスドライバをダウンロードしてください。
    2-1_1

  • USBケーブルでブレイクアウトボードとPCを接続します。
  • ダウンロードしたデバイスドライバのインストーラーを実行します。
    インストーラ実行中に署名の確認ダイアログが表示されますので、『許可』を選択してください。
  • ブレイクアウトボードのファームウェア更新手順もあわせて確認してください。
  • 2-2.MinGW(Msys)のインストール

    makeなどのプログラムのビルドに必要なツール群を使用するため、MinGW(Msys)をインストールを行います。

    1. MinGWのサイトからmingwのインストーラをダウンロードしてください。
    2. ダウンロードしたインストーラを実行します。ウィザードに従って、インストールを進めてください。インストール先などのオプションはデフォルトのままにしてください。
    3. mingw-developer-toolkitパッケージを追加します。インストーラの終了後に実行されるMinGW Installation Managerで、『mingw-developer-toolkitパッケージ』を選択してください。
      2-2_3
      パッケージの選択後、InstallationメニューのApply Changesを実行します。
      インストールの完了後、MinGW Installation Managerを終了します。

    2-3.Git for Windowsのインストール

    BlueNinja BSPはBitbucketで提供しています。入手いただくためには、事前にGit for Windowsをインストールする必要があります。

    1. Git for Windowsをダウンロードしてください。
      Git for Windows Version 2.10.2 64bitインストーラ
      Git for Windows Version 2.10.2 32bitインストーラ
      Version 2.10.2でインストールを確認しています。上記のインストーラの使用を推奨します。
  • ダウンロードしたインストーラを実行します。
    インストール中に表示されるオプションは、すべてデフォルトのまま変更しないでください。

 

2-4.BlueNinja BSPの入手

BitbucketからBlueNinja BSPリポジトリをクローンします。

$ git clone https://bitbucket.org/cerevo/blueninja_bsp.git

2-4_1

インストールスクリプトとBSPのファイル群がダウンロードされます。

2-4_2

2-5.CMSISの入手

KeilのサイトからCMSIS 3.20.4をダウンロードします。
※一部環境ではpackファイルではなくzip ファイルがダウンロードされる場合がございます。その場合には下記の手順中のpack ファイルをzipファイルに読み替えて手順を実行してください。

  1. MDK5 Software Packsのページにアクセスします。
  2. “ARM”の”CMSIS”クリックすると、ダウンロードメニューが展開されます。
  3. CMSIS 3.20.4をダウンロードします。Version: 3.20.4の『Download』をクリックしてください。
    異なるバージョンをダウンロードしないようご注意ください。
    2-5_3

EULAが表示されるので『Accept』を選んでください。

  • ダウンロードしたPackファイルをBlueNinja BSPの”install_files”フォルダへ移動します。
    2-5_4

2-6.TZ1000 BSPの入手

東芝のTZ1000シリーズの製品ページよりApP Lite™ Technical CenterにログインしTZ1000のBSPを入手します。ダウンロードにはユーザー登録が必要です。
TOSHIBA ApP Lite™ Technical Center 登録手順

  1. ユーザー登録を行います。
  2. ユーザー登録が完了したら、『お客様サポートサイト』へログインします。
  3. マイページの「ApP Lite(TM) (Application Processor Lite)」リンクからApP Lite™ Technical Centerのページへ移動します。
  4. ApP Lite™ Technical Centerの”BSP”から、Ver.1.31.1とVer.1.35.0、Ver.1.39.0をダウンロードします。
    2-6_3

  • ダウンロードしたZIPファイルを解凍します。
    解凍したファイルの中にある『TOSHIBA.TZ10xx_DFP.1.31.1.pack』、『TOSHIBA.TZ10xx_DFP.1.35.0.pack』、『TOSHIBA.TZ10xx_DFP.1.39.0.pack』を、BlueNinja BSPの『install_files』フォルダへコピーしてください。
    2-6_4-1

 

2-7.開発環境セットアップスクリプトの実行

BlueNinja BSPの開発環境をセットアップします。
同梱のセットアップスクリプトを実行すると、C:\以下にGCC ARM Embedded、OpenOCDのダウンロードと展開、BSPの展開、BlueNinja向けのパッチの適用、開発支援スクリプトのセットアップまでを自動で行います。

  1. BlueNinja BSPフォルダのinstall_windows.batを実行します。
    2-7_1

  • C:\Cerevo\CDP-TZ01Bフォルダにインストールされます。
    2-7_2

 

以上で開発環境の構築は完了です。

3.アプリケーションの作成

インストールした開発環境を使用して実際にプログラムをビルドします。

3-1.開発環境の起動

BlueNinja BSPのインストールフォルダ(C:\Cerevo\CDP-TZ01B)のstart_shell.batを実行してください。
プログラムのビルドに必要な設定を行った後、コマンドプロンプトが起動します。

2-7_2

3-1_2

3-2.アプリケーションのひな形の作成

任意の作業フォルダに移動します。
(このガイドでは、例としてC:\Work\BlueNinjaを使用します。任意の作業フォルダを作成する場合は、日本語やスペースを含まないパスをおすすめします。)

C:\Cerevo\CDP-TZ01B>cd \Work\BlueNinja
C:\Work\BlueNinja>

hello_blueninja_san という名前でアプリケーションを作成します。
app_createスクリプトの引数にアプリケーション名を指定して実行します。

C:\Work\BlueNinja>app_create hello_blueninja_san
“Create application directory: hello_blueninja_san”
“Copy skeleton files.”
C:\Cerevo\CDP-TZ01B\skel\CDP_TZ01B_BSP.mk
C:\Cerevo\CDP-TZ01B\skel\CMSIS.mk
C:\Cerevo\CDP-TZ01B\skel\Makefile
C:\Cerevo\CDP-TZ01B\skel\RTE.mk
C:\Cerevo\CDP-TZ01B\skel\RTE.patch
C:\Cerevo\CDP-TZ01B\skel\TZ10xx_DFP.mk
C:\Cerevo\CDP-TZ01B\skel\src\main.c
:
省 略
:
C:\Cerevo\CDP-TZ01B\sdk\TOSHIBA.TZ10xx_DFP\Middleware\TWiC\Config\tz1sm_hal_nonos.h
27 個のファイルをコピーしました
1 個のファイルをコピーしました。
patching file RTE/Device/TZ1001MBG/RTE_Device.h
patching file RTE/Middleware/TZ1001MBG/tz1sm_config.h
patching file RTE/Middleware/TZ1001MBG/tz1sm_hal.c
patching file RTE/Middleware/TZ1001MBG/tz1sm_hal.h
patching file RTE/Middleware/TZ1001MBG/tz1sm_hal.h
C:\Work\BlueNinja\hello_blueninja_san>

スクリプトの実行が完了すると、アプリケーションのひな形であるHelloWorld(LED点滅)プログラムがビルド可能な状態になります。

3-3.ビルド

makeを実行します。

ビルドの結果、hello_blueninja_san.elfとhello_blueninja_san.binが生成されます。

C:\Work\BlueNinja\hello_blueninja_san>make
C:\Cerevo\CDP-TZ01B\tools\bin\arm-none-eabi-gcc -c -MMD -MP -mcpu=cortex-m4 -mth
umb -mthumb-interwork -march=armv7e-m -mfloat-abi=softfp -mfpu=fpv4-sp-d16 –spe
cs=tz10xx.specs -std=c99 -g -O0 -IRTE -IRTE/Device/TZ1001MBG -Isrc/boards/CDP-TZ
01B/include -Isrc/config -Isrc/drivers/include -Isrc/utils/include -IC:\Cerevo\C
DP-TZ01B\sdk\ARM.CMSIS/CMSIS/Include -IC:\Cerevo\CDP-TZ01B\sdk\ARM.CMSIS/CMSIS/D
river/Include -IRTE -IRTE/Device/TZ1001MBG -IC:\Cerevo\CDP-TZ01B\sdk\TOSHIBA.TZ1
0xx_DFP/Device/Include -IC:\Cerevo\CDP-TZ01B\sdk\TOSHIBA.TZ10xx_DFP/RTE_Driver –
o build/src/main.o src/main.c
:
省 略
:
C:\Cerevo\CDP-TZ01B\tools\bin\arm-none-eabi-objcopy -O binary hello_blueninja_sa
n.elf hello_blueninja_san.bin
C:\Work\BlueNinja\hello_blueninja_san>

3-4.書き込み

ビルドで生成されたhello_blueninja_san.binをBlueNinjaへ書き込みます。

ブレイクアウトボードにはmbed相当の書き込み機能があるので、hello_blueninja_san.binファイルをブレイクアウトボードへコピーします。

ブレイクアウトボードがEドライブとして認識している場合は、以下のように表示されます。

C:\Work\BlueNinja\hello_blueninja_san>copy hello_blueninja_san.bin e:
1 個のファイルをコピーしました。
C:\Work\BlueNinja\hello_blueninja_san>

ブレイクアウトボードへファイルのコピーができれば手段は問いません。エクスプローラーでコピーしても構いません。
書き込み中はブレイクアウトボードの緑色LEDが点滅します。
(最初の約5秒間、コピーは進捗しません。内蔵FlashROMのイレース処理の待ち時間ですので異常ではありません。)
書き込みが完了すると一旦ブレイクアウトボードのドライブが切断され、その後再認識します。

※書き込みが正常に行えない場合(FAIL.TXTが生成される/一瞬で書き込み処理が完了してしまった等)は下記を確認してください。

・モジュールに電源供給が正しく供給されていることを確認する

モジュールのCN3から5Vを給電、モジュールのCN2にバッテリー接続し給電、ブレイクアウトボードのJ1をショートしてUSBから給電のいずれかの手段で供給する必要があります。

・ファームウェアを強制的にイレースを試す

ブレイクアウトボードのERASE端子をショートした状態で電源ONを行います。ファームウェアの一部が書き込まれてしまい、TZ1000のデバッグインターフェース(CoreSight)が動作できない状態が解消されます。

詳しくは フラッシュ強制イレース方法を参照してください。

4.アプリケーションの起動とデバッグ

書き込みを行ったプログラムの起動とデバッガを使用したデバッグの方法を説明します。

4-1.アプリケーションの起動

ブレイクアウトボードの電源ボタン(USBコネクタと横並びのボタン)を押してください。アプリケーションが動作すると、モジュール上の赤色LEDが点滅し始めます。電源ボタンを長押し(約2秒)することで電源が切れます。

電源の管理はBlueNinja BSPに含まれるTZ01_systemライブラリで行っています。TZ1001のリセットなどでプログラムの動作が停止すると電源が切れます。

4-2.デバッグ

ブレイクアウトボードのCMSIS-DAPインターフェースとGDBとOpenOCDによりオンチップデバッグができます。

デバッグの開始

ブレイクアウトボードの電源ボタンを押したまま、引数にhello_blueninja_san.elfを指定しdebuggerスクリプトを実行します。

C:\Work\BlueNinja\hello_blueninja_san>debugger hello_blueninja_san.elf

別ウィンドウでGDBが起動しTZ1001のリセットを行った後、コマンド入力待ちになります。

4-2_1

以下では、GDBの代表的なコマンドを使用して実際にデバッグを行ってみます。
TZ01_system_init()の実行が終わるまで、電源ボタンは押しっぱなしにしていてください。

ブレイクポイントの設定

“b”コマンドで、main()の先頭にブレイクポイントを設定します。
宣言等を除いたコードの先頭、TZ01_system_init()の呼び出しの行に設定されます。

(gdb) b main
Breakpoint 1 at 0x100001a4: file src/main.c, line 36.
(gdb)

プログラム実行の再開、ブレイクポイントによる実行中断

“cont”コマンドでプログラムの実行を再開します。
ブレイクポイントを設定しているTZ01_system_init()の呼び出し前で実行が停止します。

(gdb) cont
Continuing.
Breakpoint 1, main () at src/main.c:36
36 TZ01_system_init();
(gdb)

ステップオーバー実行

“n”コマンドでステップオーバー実行します。
TZ01_system_init()が実行されTZ01_console_init()の呼び出し前で実行が停止します。
(電源のEnableが完了していますので電源ボタンを離してください)

コマンドを入力せずにEnterすると直前のコマンドの”n”を再度実行します。
TZ01_console_init()が実行されif (…の行で実行が停止します。

(gdb) n
37 TZ01_console_init();
(gdb)
40 if (TZ01_system_run() == false) {
(gdb)

ステップイン実行

“s”コマンドでステップイン実行します。
TZ01_system_run()関数に入った先頭の行で実行が停止します。

(gdb) s
TZ01_system_run () at src/boards/CDP-TZ01B/TZ01_system.c:255
255 if (TZ01_system_tick_check_timeout(SYSTICK_NO_PWSW_CHECK)) {
(gdb)

プログラム実行の再開

“cont”コマンドでプログラムの実行を再開します。

(gdb) cont
Continuing.

プログラムの実行停止

キーボードからCtrl+Cキーを押すことでプログラムの実行が停止します。
停止した箇所のソースコードが表示されます。

Program received signal SIGINT, Interrupt.
0x10000648 in TZ01_system_tick_check_timeout (tim_no=SYSTICK_NO_LED_BLINK)
at src/boards/CDP-TZ01B/TZ01_system.c:181
181 {
(gdb)

デバッガの終了

“quit”コマンドでデバッガを終了します。

(gdb) quit
A debugging session is active.
Inferior 1 [Remote target] will be detached.
Quit anyway? (y or n) y

GDBの終了後、バッググラウンドで動作しているOpenOCDも終了します。

関連URL