OpenOCDとGDBを使用してSTM32フラッシュをプログラムする方法
質問
STM32F103 Microをプログラムしてデバッグするために、OpenOCDとGDBを備えたOlimex ARM-USB-OCDドングルを使用しています。私が使用しているIDEは、Olimex Dev-Kit CDから来て、Eclipse Ganymedeを利用しています。
小さなプログラムをRAMにロードして、問題なくコードを踏むことができます。
私は今、RAM(わずか20k)に収まらないはるかに大きなプログラムを持っているので、Flash(128K)から実行したいと思います。
プログラムコードがフラッシュセクション(アドレス0x8000000)に移動する必要があることを示すリンカースクリプトを変更しましたが、GDBはプログラムのロードに失敗します。
(gdb)
20 load main.out
&"load main.out\n"
load main.out
~"Loading section .text, size 0xb0e6 lma 0x8000000\n"
Loading section .text, size 0xb0e6 lma 0x8000000
&"Load failed\n"
Load failed
GDBにプログラムをフラッシュにロードするにはどうすればよいですか?
解決
OpenOCDで直接点滅することを検討しましたか?同様のセットアップでこれを行っていますが、ARM7マイクロコントローラーを使用しています。
openocd -f flash.cfg
これが私のflash.cfgです
set CHIPNAME at91sam7x512
source [find interface/olimex-arm-usb-ocd.cfg]
source [find target/at91sam7sx.cfg]
init
halt
flash probe 0
flash probe 1
flash erase_sector 0 0 15
flash erase_sector 1 0 15
flash write_image my-image.elf
at91sam7 gpnvm 0 set
at91sam7 gpnvm 1 set
at91sam7 gpnvm 2 set
shutdown
GPNVMのものはATMEL SAM7固有ですが、このスクリプトはSTM32バージョンを作成するための適切な出発点を提供するはずです。 OpenOCDは最初は少し混乱する可能性がありますが、ドキュメントは良いと読む価値があります(http://openocd.berlios.de/)。現在の安定したバージョン(0.4.0)は非常に古いため、問題がある場合は、最新のソースコードをダウンロードして独自のコードをコンパイルしてください。
所属していません StackOverflow