2015/11/18

[mbed]medにcmsis-driverはなさそうだ

mbedで、内蔵FLASHにデータを書き込みたいと思った。
EEPROMとかないので、内蔵FLASHでいいや、くらいの選択だ。

出てきたのは、LocalFileSystem
サンプル通り書いてみたが、コンパイルが通らない。。。
ターゲットを、NUCLEO-F411REからLPCに変更すると、通った。
そうですか、そういうことですか。。。

STM32F411では内蔵FLASHの実行中書き込みができないためかと思ったが、PDFを見るとそうではない。
セクタが8つにわかれていて、消去はセクタ単位にしかできないけれどもできそうだ。

ならば誰かライブラリを作っているだろうと検索したけど、探し方が悪いのかもしれないが出てこない。
ネットで探すと、こちらの方がF401REで試されてた。
開発状況
CubeMXを使われているので、私も同じ感じでやってみて、Keil使って書き込みができることを確認できた。

 

そうなると、元情報を見ながら作りたいと思うではないか。
STM32のPeripheral Libraryじゃなかろうかと思い、stm32f4_dsp_stdperiph_lib.zipをダウンロードした。
いまは「STM32F4xx_DSP_StdPeriph_Lib_V1.6.1」というバージョンだ。
この中に「FLASH_Program」というサンプルがあったので、それを見ながら作った。
が、mbedコンパイラではコンパイルエラーになる。

上のサイトの人は「HAL_FLASH_Unlock」みたいな関数だけど、STMのライブラリは「FLASH_Unlock」という感じで、HAL_というプレフィクスがない。
mbedの方からmbed-srcをダウンロードして少し見たが、mbedではF4とかF1とかを吸収しようとして、間にHALを入れているような感じがする。
かといって、ヘッダファイルが共通なわけでもないから何とも言えないし、単にHAL_がついただけじゃなくて使い方が少し違ったりフラグクリアしてくれたりと、何かしら作っている感じがする。

なので、結局プログラムの作りとしては、サイトの人が作っているのと同じような感じになった。


「こういう違いを吸収するのって、CMSISがやってるんじゃなかったっけ?」ということで検索すると、CMSIS-DriverにFlash Interfaceがあった。

mbed-srcを「ARM_Flash_ProgramData」で検索したが引っかからなかったので、mbedにはCMSIS-Driverに相当する部分は無いんじゃなかろうか?という気がした。
まあ、STMのライブラリにも入ってないし、どういう状況なのかわからん。
CMSISのトップページでは、各社がHALを提供したら、アプリがHALかCMSIS-Driverを呼び出すようになってるから、どっちでもいいってことかなぁ。
image

CMSISに対応していてもいてなくてもいいので、mbedのコンパイラでビルドできればいいや、と思ってしまうので、実はARMのドライバ部分はCMSISじゃなくてmbedで吸収しようとしてたりして、と思わなくもない。

0 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。