4

私はOlimexARM-USB-OCDドングルとopenOCDおよびGDBを使用して、stm32f103マイクロをプログラムおよびデバッグしています。私が使用しているIDEは、Olimex dev-kit CDからのものであり、Eclipseganymedeを使用しています。

小さなプログラムをRAMにロードして、問題なくコードをステップ実行できます。

私は今、RAMに収まらないはるかに大きなプログラム(わずか20K)を持っているので、フラッシュ(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にプログラムをフラッシュにロードさせるにはどうすればよいですか?

4

1 に答える 1

6

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のものはAtmelSAM7固有のものですが、このスクリプトはSTM32バージョンを作成するための良い出発点になると思います。Openocdは最初は少し混乱する可能性がありますが、ドキュメントは優れており、読む価値があります(http://openocd.berlios.de/)。現在の安定バージョン(0.4.0)はかなり古いため、問題が発生した場合は、最新のソースコードをダウンロードして、独自にコンパイルしてください。

于 2011-01-14T09:00:04.370 に答える