2023年8月13日日曜日

BlackFinを使ってみるなり(12) BF706評価ボード上のW25Q32 FLASHを焼く方法

雨のコミケに疲れて東京駅タリーズに腰を落ち着けて動けなくっている、、、エロ小説も書くひらりんでぇす。加藤恵+エリリ+倫也の3Pには持ち込んだ。

BF706評価ボードのAD社提供ライブラリが怪しくて困ってます。

UARTのbaudrate設定APIが露骨におかしいと前回書きましたが、TIMER openも変。

BF706には0〜7の8ケのTIMERが在るんだが、何故かヘッダファイルのenum定義に0しか無くて、1234を自分で定義を増やしても、今度は例外でガッツン停止するんだよ。

なので現状TIMER0しか使えない。そんなCPUは嫌だわ。

もしかしたら、debugger駆動でのみ生じる不具合かなと思って、on board FLASHの焼きをやろうとしたら、crosscoreのボタンポチッと一発じゃ出来なくて、hex file生成に一手間かかり、さらにその後にDOS窓でcommand lineで焼く必要があるみたい

「焼き方わかんねーよ」レベルの素人目線の解説は日本語圏と英語圏には見当たらないよな感触。素人ひらりん目線での焼き方指南は後にupしますんでー

それで非debugger動作ならシレッと例外が起きないのを期待するわたしだ。

#FLASHから起動させても例外は生じました.

ーーーー
やっとW25Q32 FLASH焼きに成功したので以下に設定方法を書きましょう.網羅できているのかやや自信が無いが、上手くいかなかったら素直に死のう~~

かなりグダグダです.ADさんもう少し交通整理してくれたら良いと思う.

焼きに成功した時の画面表示(CrossCoreから焼けた)
しかるべき設定に成功すると、build後にbebuggerボタンの隣に焼きボタンが表示されるようになるのでこれをクリック.焼きに成功すると下記のmessageが出る.
Downloading to device...
'Invoking: CrossCore Blackfin Device Programmer'
cldp -proc ADSP-BF706 -verbose -cmd prog -driver "C:\Users\hira\cces\2.11.1\Device_programmer\bf706_w25q32bv_dpia.dxe" -erase affected -emu ice-1000 -format hex -emu kit  -file restdac.ldr 
Target          Blackfin CS Emulator
Platform        ADSP-BF706 EZ-KIT Mini via Debug Agent
Processor       ADSP-BF706
Core            0
Driver          C:\Users\hira\cces\2.11.1\Device_programmer\bf706_w25q32bv_dpia.dxe
Program         restdac.ldr
........................................... done
'Finished building: program_device'

赤のlineがcldpコマンドとそのoptionであり、このoptionに沿うようにあれこれとcrosscoreを設定したりするのがW25Q32 FLASH焼きを成功させる手順なのだっっ!!

なので、まずは赤のlineの意味を解説したら良いと思います.

cldpってどこにあるの?
cosscoreのインストディレクトリに最初から存在するexeです.
C:\Analog Devices\CrossCore Embedded Studio 2.11.1\cldp.exe

bf706_w25q32bv_dpia.dxe の調達
これはFLASHを焼く前に、BF706のprogram RAMに流し込むbinaryだと思う.
この人がBF706の中で立ち回ることによって、PCからhexを受信し、SPI経由でFLASHを焼いているのだと思う.
ゆえにこれを何処かから調達しなくちゃいけない.
ADのADSP-BF706 EZ-Kit Lite MiniページからDLできる.
このページにある、ADSP-BF706 EZ-KIT Mini™ Board Support Package というのをDLする.
だがしかし、このページのリンクを押してもchromeではDLできなかった.原因はhttpとhttpsの違いのせいだった.なのでこちらをクリックするとchromeでDLできた.
正体はexeなので起動してインストする.
ADI_ADSP-BF706_EZ-KIT_Mini-Rel1.1.0.exe
インスト後にこれが出来ていればOK.
C:\Analog Devices\ADSP-BF706_EZ-KIT_Mini-Rel1.1.0
この下に降りてゆくと、、、
BF706_EZ-Kit_MINI\Blackfin\Examples\Device_programmer
ビルドしないでもbf706_w25q32bv_dpia.dxeが存在するはず.

-emu ice-1000 -emu kit
効いてるのかどうか分からないのだが、現状はice1000を使ってないわけで、評価ボード(kit)を使っているから-emu kitである.しかし、後の設定画面でkitを選べないので追加optionで-emu kitを与えている.念のため.

-file restdac.ldr
これがFLASHに焼くhex fileであるが、crosscoreの初期設定では.dxeは生成されても.ldrは生成されないので長々とした設定が必要.後述する.
.dxeはBF706のprogram RAMにコピるbinary.
.ldrはFLASHに焼くhex.
で合ってると思う.

ーーーー
それでは、crosscoreの設定を長々と行う.使ってるのは2.11.1.0

↓最初はproject→Propertiesへ.
↓左端のC/C++ Build→Settingsへ.
↓Build Artifactタブ.Loader Fileにする.
↓Tool Settingタブ.設定を要するのは2つ.
CrossCore BlackFin Loader
CrossCore Device Programmer
前者は、.ldrを作るための設定だと思う.
後者は、FLASHを焼くための設定だと思う.

↓まずは前者から.参考ページあり.
CrossCore BlackFin Loader→General
このようにする.
一番下のInitialization fileは似たのがいろいろ在って悩むが、わたしがBF706評価ボードで上手く動いたのはこれだった.runtime routineでも入ってるのだろう.
C:\Analog Devices\CrossCore Embedded Studio 2.11.1\Blackfin\ldr\init_code\BF7xx_init\BF7xx_init\BF7xx_init.dxe
このinitなんちゃらはCrossCoreをインストすると最初から入っているものであるが、.dxeが最初から在ったかどうかは記憶が定かではない..dxeが無ければprojectを開いて自分でビルドするべし.

以上により、elfloaderのコマンドラインがこのように確定した.これによって、.ldrが生成されるというカラクリだと思う.dxe→ldrに変換してるんだ.
elfloader -proc ADSP-BF706 -si-revision 1.1 -b SPI -f hex -width 16 -bcode 0x01 -init "C:\Analog Devices\CrossCore Embedded Studio 2.11.1\Blackfin\ldr\init_code\BF7xx_init\BF7xx_init\BF7xx_init.dxe"

ーーーー
次は後者の設定.
CrossCore Device Programmer→General
こうする.
ファイル入力のところはこう.
C:\Analog Devices\ADSP-BF706_EZ-KIT_Mini-Rel1.1.0\BF706_EZ-Kit_MINI\Blackfin\Examples\Device_programmer\bf706_w25q32bv_dpia.dxe

もういっこ.念のために.
Tool Settings→CrossCore Device Programmer→Additional Options

以上によって、FLASH焼きコマンドが次のように確定しました.
cldp -proc ADSP-BF706 -verbose -cmd prog -driver "C:\Analog Devices\ADSP-BF706_EZ-KIT_Mini-Rel1.1.0\BF706_EZ-Kit_MINI\Blackfin\Examples\Device_programmer\bf706_w25q32bv_dpia.dxe" -erase affected -emu ice-1000 -format hex -emu kit

ーーーー
ADSP-BF706 EZ-Kit Lite MiniのJP設定.
購入時から変えてないが、念のため、こうなっている.
注意1:基板のJP設定を変えたらUSB抜いて再度挿すべきだそうです

ーーーー
以上の設定を済ませる.
build後にbebuggerボタンの隣に焼きボタンが表示されるようになるのでこれをクリック.ラッキーならFLASHを焼けるはず.

注意2:debuggerが動いている最中は焼きエラーになりますので、debuggerを止めてから焼きましょう

11へ     13へ

かしこ

0 件のコメント:

コメントを投稿