最近、STM32F7 ディスカバリー ボード [1] を購入しました。このボードには st-link デバッガーが組み込まれているため、openocd を使用してフラッシュしようとしています。ツールチェーンは動作しています (makefile と arm-none-eabi-gcc を使用しています) が、Eclipse を使用してボードをフラッシュして、グラフィカル デバッガーを使用できるようにしたいと考えています。
そのために、git リポジトリから openocd をインストールし、次の構成ファイルを使用して起動します。
source [find board/stm32f7discovery.cfg]
そして、eclipse で次のコマンドを arm-none-eabi-gdb と共に使用して、ボードをフラッシュします。
target remote localhost:3333
monitor flash protect 0 0 11 off
monitor flash erase_address 0x08000000 0x100000
monitor flash write_image erase "/absolute/path/hello-world.hex" 0 ihex
monitor reset halt
eclipse でデバッグ チェーンをセットアップするために使用したチュートリアル [2] または他の SO 投稿 [3][4] からのコマンドを含む、さまざまなコマンドのリストを試しました。ときどき書き込み操作が失敗し、そうでないときは間違った PC で終わることがあります (たとえば、リセット ハンドラのアドレスである 0x080004ac ではなく 0xfffffffe)。そのため、CPU は (メモリの外部に) 存在しないものを実行しようとし、失敗します。
何が間違っているのか分かりますか? 小さな精度 : 私は Linux で作業しています。
乾杯、
アントワーヌ。
[1] : www.st.com/web/en/catalog/tools/FM116/SC959/SS1532/LN1848/PF261641?sc=stm32f7-discovery
[2] : vedder.se/2012/12/debugging-the-stm32f4-using-openocd-gdb-and-eclipse/
[3] : stackoverflow.com/questions/5535110/stm32-gdb-openocd-commands-and-initialization-for-flash-and-ram-debugging
[4] : stackoverflow.com/questions/17003519/stm32f4discovery-openocd-telnet-uploading-demo-program
[5] : github.com/texane/stlink
[編集]
また、github [5] の st-link プログラムを使用して gdb でロードしようとしたところ、同様のエラーが発生しました。
2016-03-23T09:22:22 INFO src/stlink-common.c: Attempting to write 32768 (0x8000) bytes to stm32 address: 134217728 (0x8000000)
2016-03-23T09:22:22 WARN src/stlink-common.c: Failed to unlock flash!
EraseFlash - Sector:0x0 Size:0x8000
Flash page at addr: 0x08000000 erased
2016-03-23T09:22:22 INFO src/stlink-common.c: Finished erasing 1 pages of 32768 (0x8000) bytes
2016-03-23T09:22:22 INFO src/stlink-common.c: Starting Flash write for F2/F4/L4
2016-03-23T09:22:22 INFO src/stlink-common.c: Successfully loaded flash loader in sram
enabling 32-bit flash writes
size: 32768
2016-03-23T09:22:23 INFO src/stlink-common.c: Starting verification of write complete
2016-03-23T09:22:23 ERROR src/stlink-common.c: Verification of flash failed at offset: 0