覚え書きTOP

RZA1をmbedで使う      2018/03/13開始。
開発環境はe2studio+J-Linkで、これとmbedOpenCVを組み合わせる。

 RZA1開発環境の構築

GR-PEACHのCPUはルネサスのRZ/A1Hだ。GR-PEACHのTOPページ
 CPUコアはARMのCortex-A9
 CPU速度が400MHz
 RAMが10Mbyte ← すごっ!
 ROMが8Mbyte
 2xUSB Host/Device Interface, 1xEthernet
 5xSPI, 4xI2C, 8xUART, 8x12-bits ADC, 5xCAN, 2xCamera, 2xLCDC, 2xSD, 2xMMC
GR-PEACHでは
 2xUSB Host/Device Interface, 1xEthernet
 5xSPI, 3xI2C, 8xUART, 7x12-bits ADC, 2xCAN, 2xCamera, 1xLCDC(via LVDS)

RL78やLPC1768と比べると10倍近く高速でメモリもたっぷり。でも値段は2倍程度だから、お得と言えばお得なCPUかも。
このCPUをゼロから調べて動かす根性はとても出ないんで、例によってmbed様にお願いする。

mbedでの開発と言えば…
 1,使えそうなプロジェクトを探し
 2,WEBコンパイルが成功するようにリビジョンを合わせ
 3,Exportして
 4,uVison+ULINK2でビルド&デバッグ
この方式が自分の定石

ところが自分の持ってるuVision(MDK-ARM Plus)はCortex-A9に対応してない(MDK-ARM Proが必要)。
んじゃってんでProの値段を調べたら・・・・・・100万円・・・ぎょっ!
今回は大好きなuVisionは諦めて、無料のIDEのe2studioを使うことにした。
デバッグエミュレータとしてはJ-Link BASEを接続する。J-Linkの種類と説明
例によってあれこれ調べたり手出ししたりを開始。

※CMSIS-DAPデバッグは短気な自分にはじれったくてダメなんでJ-Linkを使います。
※現時点(2018/03/13)では、WEBコンパイラからe2studio用にExport出来ないプログラムがあります。現在の対応状況
※ルネサスも本気でmbed環境に乗り出すつもりのようです。
 使いやすいプロジェクトを次々に出してるし、サポートも充実してる。
 一昔前の国鉄や郵便局並みに不親切だったルネサスとは様変わりしてるので、個人でも安心して新しいCPUを使い始めて良い雰囲気。


RZA1開発環境の構築

※未だ使い始めたばかりなので色々不明な部分や間違いが多いはず。
※OpenCV部分がWEBコンパイラではビルド出来ない(=Export不可)らしいのでmbedCLIも使う。

RZA1をmbedで使おうとすると(ビルド+デバッグ環境)現時点で使えそうなのは・・・
 1,e2studio+J-Link(ビルドとデバッグ)
 2,mbedCLI(ビルドだけ)とe2studio+J-Link(デバッグだけ)

こんな組合せが出来るようだ。

ところでGR-PEACHのTOPページから、e2studio用のOpenCV入りのプロジェクトをDL出来る。
んじゃメインの作業環境をe2studioにし、その他のOpenCV入りのコードはmbedCLIで動作確認して、ソースを組み合わせれば良さそうじゃん。
※こちらのd-katoさんのGitHubに分かりやすいコメント入りのプロジェクトが全て揃っています(ありがとうございます)。


 e2studioのインストール
  J-Linkのインストールと接続
  e2studioの見た目の変更
  e2studioを使う
    新規プロジェクトの作成
    プロジェクトの移動(名前変更)
  その他の情報など

 mbedCLIの環境構築
  mbedCLIのインストールと操作
  
mbedCLIのデバッグ環境構築
  mbedCLIの新規プロジェクト作り


e2studioのインストール
まずここをクリックしてルネサスのDLページに飛んだらページの下の方を見る(画像はクリックで拡大する)。
ルネサスのページは慣れればなんともない・・・慣れればだけど。


んでDLしたら実行する。
注意:e2studioのインストール開始画面で、Synergyもインストしないとmake.exeが生成されない=ビルド失敗する。
初っぱなからワナにはまった・・・先が思いやられる。



J-Linkのインストールと接続
インストしたe2studioを起動すると、画面の色が白っぽくて目がチョー疲れるんだけど、この辺は後で直しましょ。
まずはJ-Linkを接続してデバッグ出来るかどうかを早く知りたい。 ルネサス公式のJ-Linkとセットでの使い方(英語版)

J-LinkとGR-PEACHのデバッグコネクタはそのままじゃ繋がらないんでこの700円のコネクタを買う(J-Linkからフラットケーブルを外して替わりに差し込む)。
ハンダ付けの好きな人は自作する。 ピンの配置図
なおJ-LinkとターゲットはSWDで繋がるので(JTAGも可)TDI/TDOを繋がなくても平気なはず(未検証)。


んでは接続テスト。
注意:J-Linkはハブを介さずに直接PCのUSBと繋ぐこと(通信速度が10倍以上も違う)。
これ凄い大事。出来れば太いUSBケーブルで、PCのマザーボード直結のUSBコネクタと繋ぐ方が良い。
オマ環かもだけどULINK2と違ってJ-Linkでは接続するUSBコネクタ次第で速度がかなり変わる。

んで、J-LinkとPCを繋いだら、J-Link用のドライバとツールをSEGGERページからDLしてインストールする。  
seggerのJ-LINKツールDLページ("J-Link Software and Documentation Pack"の下の方をクリックする)。
特にワナとかは無くて、DLしたEXEをWクリックするだけで上手く行った(Windows10環境)。 J-LINK用のツール類のインストールと使い方(英語)
ここには他にも面白そうなツールが色々有るみたいだけど無料かどうかは不明。

で、ターゲット(RZA1)との接続確認にはJFlash.exeを使う(ツール類は"C:\Program Files (x86)\SEGGER\JLink_V630e"にある)。
実際にJFlashで書き込みをしようとするとライセンスが必要とか出てきて手続きが要るようなのでやめた。
Connectが確認できれば他はどうでも良い(JFlashLiteであれば実際に書き込みも出来る)。
なおJ-Link付属ツールのJLink.exeではSWDでもJTAGでも繋がった(JTAGの方が少し速いけど大差無し)。
またJFlashLite.exeで1.6MのbinをSWDで焼いてみたが、消去が15秒、書き込みが10秒程だ。JTAGだと更に数秒速い。
速度は最高速度でも行けるが、時間的にはあまり変わらないのでSWDで4000で良いのかも。

J-Linkとターゲットとの接続が確認できたので、今度はe2studioから接続してみる。
※ここはe2studioの画面の色を変更済みの画像です。
[実行]ー[デバッグの構成]から下図のようにセットする。
J-Linkとの接続速度は、SWDのAutoが一番速い(JTAG接続も可能だがSWDと差は無い)。

自分の環境ではOpenCV入りのプロジェクトのクリーンビルドに40秒、BINのターゲットへのDLとデバッグ開始までに30秒程度だ。


e2studioの見た目の変更
[ウインドウ]ー[設定]ー[一般]ー[外観]のテーマで大体の色を決める(ダークを選んだ)。

老眼気味なんでフォントサイズを変更。

コードの色を変更。

#if ~ #else部分の色変更が作動しないようにする。

単語マッチ時の色の変更。

ビルド時のコンソールの色変更 デバッグコンソールの変更はここ
[ウインドウ]ー[設定]で、検索BOXに”コンソール”と入れてやるのがミソ。

アイコンが多すぎて邪魔なんで減らす。
エディットモードとデバッグモードの両方でアイコン削除を行う。
[ウインドウ]ー[Perspective]ー[パースペクティブのカスタマイズ]の順にクリックして開く。
なおモードの切り替えは画面右上のクイックアクセスを使えばOKだ。

エディットモードでは下の方の「ナビゲート」以外のチェックは全部外す。
注意:Renesas-Debugのリセットアイコンは、エディットモードでも有効にしておかないとデバッグモードで出てこない。

デバッグモードに入り、下図のチェックだけを残して全部外す。

最後にクイックアクセスを画面左上に持ってくれば使いやすい。
なお下図(デバッグモード)ではプロジェクトエクスプローラなどを左に移動してる。


e2studioを使う
開始時の注意事項
・J-Linkはハブを介さずに必ず直接PCのUSBと繋ぐこと(通信速度が10倍以上も違う)。
 電源投入順序は「J-link(USBケーブルを繋ぐ) → ターゲットの電源を入れる」だけど適当でも平気。
・実動作時にはJ-Linkを外さないと不可解な動きになることがある(CMSIS-DAP使用時も外すこと)。
 J-LinkのUSB電源だけ外せばOKなようだ(ターゲットとのケーブルは接続したままで平気そう)。
・時々プロジェクトのクリーンとExportを行うのが無難。
 クリーンすると毎回全部リビルドが発生する場合の避け方はここ
画面右下の緑色の窓に気を付けろ(これが出てるときはBusy中なのだ)。

新規プロジェクトの作成
新しいプロジェクトを開始するときには、e2studio用の新しいワークスペースを作る方式でやってる。
ただし毎回設定し直すのは面倒なので、一度作ったe2studio環境を使い回す。
自分用の環境が整ったら[プロジェクト]ー[削除]でプロジェクトを消し、空のワークスペースを保存しておく(ここでは”e2_空のベース”という名前で保存してる)。

1,まず親フォルダを作り(ここではA1H_CamPrj)、その中にバックアップ用(_E2Backup)と倉庫用(_倉庫)フォルダを作る。
 続いて”e2_空のベース”をコピーしてリネーム(e2_CamPrj)するが、フォルダ名を長目に付けないと、e2studioのワークスペース選択でごちゃつくよ。
 そしてe2studioを起動して、ワークスペースとしてe2_CamPrjを選択する。

2,[ファイル]ー[インポート]で既存プロジェクトのZIPを取り込む。

3,画面右下のBusy表示が消えるのを待つ。

4,[プロジェクト]ー[プロパティ]でmakeとOptimizeの状態を確認する。
 makeのパラメータ変更でビルド速度が10倍ぐらいは速くなるので必須。
 またデバッグ時はOptimizeをNoneまたはdebugにしておかないと、ステップ実行時にあちこち飛んで追いかけにくい(出荷時に最適化を変更しなくても速度は大差ない感じだ)。
 なお「ツール設定タブ」が出てこない場合はこちらを参照

5,最後に確認のためにプロジェクトのクリーンビルドを行う。
 毎回全部リビルドが発生する場合の避け方

6,バージョン管理用にファイルをエクスポートする。
 [ファイル]ー[エクスポート]でプロジェクトをZIP化し、最初に作った_E2Backupフォルダに保存する。
 ファイル名として連番を使うことと拡張子としてZIPの指定が必要だ(次回からは省略も可能)。

プロジェクトの移動(名前変更)
プロジェクトを別のフォルダに移動したり名前を変更した場合は・・・
 1,ソースファイルのプロパティからパスを確認しておく。
 2,makefileの再生成を行う。
 3,更に「プロジェクトークリーン」してから「プロジェクトーすべてビルド」をやっておけば安心。

その他の情報など
・色の設定ファイルの名前などはこちらが詳しい。
・[プロジェクト]ー[自動的にビルド]をチェックしておく方が良い。
・ターゲット上で実行するだけなら、DEBUGフォルダ内のbinをmbedドライブにコピーすれば動く。
・デバッグモードでは、自動的にmainの先頭にBPがセットされている。
・デバッグ中の反応は速くuVison+ULINK2並だが、「make → デバッグ開始」までにかなり時間がかかる。
・某国製の怪しいJ-Linkを$11で購入して使ってみたが、Cortex-A9には未対応でダメだった。
・クリーンすると毎回全部リビルドが発生する場合の避け方。
 [プロジェクト]ー[プロパティ]から下図の①~⑤の順に操作すると直る。
 つまり「①チェックして②適用 → ③チェックを外して④適用 → ⑤OKをクリックする。」

・ビルドの開始が遅い場合の対処(ファイル数が増えてくるとmakefileの生成にやたら時間がかかるようになるんで避け方)。
 [プロジェクト]ー[プロパティ]の下図のチェックを外し「-r」を追加する。NoMayさんに教えて頂きました。有り難うございます。
 ただしこれをするとソースを新規に追加した場合などに不整合が起きるので、ソース追加後のみチェックを入れてmakefileを一度生成させること。

 またこれをすると「ツール設定」のタブが消えてしまう。

 元に戻すには・・・
 1,上記で外した二カ所のチェック(自動的にmakefileを生成)を入れ直してから適用ボタンをクリック
 2,一旦ダイアログを閉じる
 3,再度[プロジェクト]ー[プロパティ]をクリックする
 これで「ツール設定」が元に戻る。
 なおここで
「デフォルトの復元」ボタンは絶対に押さないこと(訳の分からないことになる)。

mbedCLIの環境構築
この頃のmbedはWEBコンパイラとIDE以外に、mbedCLIと言うコマンドラインでのビルド環境もある。
これの良いところはGitHubやMerculialから直接Import可能なので、最新版のコードを使える。
デバッグもe2studioで可能だ(自分の環境ではe2studio上でデバッグは出来るがビルドは出来ない)。

mbedCLIのインストールと操作
1,インストール前にmbedボード(GR-PEACHやLPC1768など)をPCのUSBに接続しておく。
2,ここの指示通りに、ここからmbedCLIのインストーラ”mbed-windows-installer v0.4.3.”をDLして実行する(薄い灰色の文字がリンクになってる)。
3,雪だるまさんの指示に従って操作する(インストール作業は既に終わってるので不要)。  mbedCLI詳細 参考ページ1 参考ページ2 


mbedCLIのデバッグ環境構築
※自分の環境ではe2studio上でデバッグは出来るがビルドは出来ません。
事前にimportしてmakeしてエラーのないことを確認しておく(Windws10のコマンドモードを使用)。
またe2studioのワークスペース用のフォルダ(ここではe2_GR_os_Blinky)を作っておき、その中にmbedCLIプロジェクトをフォルダごと入れる。

ビルドは例えばこんな感じ(コマンドモードのC:\_mbed内で作業している)。
C:\_mbed>mbed import https://os.mbed.com/teams/mbed-os-examples/code/mbed-os-example-blinky/
  注:importではURLで指定するのが無難かも(プロジェクト名だとパスワード入力画面になってしまうことがある)。
C:\_mbed>cd mbed-os-example-blinky
C:\_mbed\mbed-os-example-blinky>mbed compile -m RZ_A1H -t GCC_ARM --profile debug

1,e2studioを起動して、上記で作ったCLIのプロジェクトを取り込む(クイックアクセスがデバッガ状態だと下記のメニューが現れないので注意))。
 この時の取り込み方がミソだ(雪だるまさんのページを参照)。

2,プロジェクトの取り込みが完了するまで1分程待つ(右下のBusyマークに注意)。

3,プロジェクト名を一発クリックして選択された状態にしてから、[実行]ー[デバッグの構成]をいじる。
・GDBデバッグを新規に作成
・ELFファイルのパスは自動でセットされる(確認)
・J-LinkとCPUの選択をする(確認)
・GDB コマンドにarm-none-eabi-gdbを追加(確認)
・J-LinkをUSBに接続し、ターゲットの電源を入れる。
 適用をクリックし、デバッグボタンを押して数分間は待つ。
 かなり待たされるが右下のBusyが終わるまで何もしない(エラーが出るかもだけど続行すれば動く)。


mbedCLIの新規プロジェクト作り
mbedCLIのプロジェクトを作るってことは、結局はe2studioでのデバッグも必要になるんで、フォルダ構成は二段になる。
先にe2studioのワークスペース用フォルダ(ここではe2test)を作り、その中でmbedCLIのプロジェクトを作るのがミソ。

「mbed new」するとmbed-osの最新版が取り込まれる。
ここに適当なmain.cppを入れてやりmakeする(こんな感じのファイル構成にする)。

blinkyの中に入ってからmakeする。

e2studioを起動して、ワークスペースとしてe2testを選ぶ。
後はmbedCLIのデバッグ環境構築と同じように[ファイル]ー[新規]でblinkyを選ばOK。



覚え書きTOP