2011-01-10 18 views
2

私は、openOCDとGDBでOlimex ARM-USB-OCDドングルを使ってstm32f103マイクロをプログラムしてデバッグしています。私が使用しているIDEは、Olimexの開発キットCDから来て、Eclipseのガニメデを使用しています。openOCDとgdbを使ってSTM32フラッシュをプログラミングする方法

小さなプログラムを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でプログラムをフラッシュにロードするにはどうすればよいですか?

答えて

5

あなたはopenocdで直接点滅すると考えましたか?私は同様の設定でこれをやっていますが、ARM7マイクロコントローラを使っています。

openocd -f flash.cfg 

はここGPNVMのものはアトメルSAM7が固有である私の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 

ですが、私は、このスクリプトは、STM32のバージョンを作るためにあなたに良い出発点を与えるべきだと思います。 Openocdは最初はちょっと混乱するかもしれませんが、ドキュメンテーションは読みやすくて価値があります(http://openocd.berlios.de/)。現在の安定版(0.4.0)はかなり古いので、問題がある場合は、最新のソースコードをダウンロードしてコンパイルしてください。

+1

私はこのルートに行き、最終的には動作するようになりました。私はopenOCDを使って.textセクションと.dataセクションをフラッシュし、main()関数の先頭に.dataセクションをRAMにコピーしました。 – mksuth

関連する問題