2011-01-10 3 views
2

open0CD 및 GDB와 함께 Olimex ARM-USB-OCD 동글을 사용하여 stm32f103 마이크로를 프로그래밍하고 디버깅합니다. 내가 사용중인 IDE는 Olimex 개발 키트 CD에서 가져 왔으며 Eclipse Ganymede를 사용합니다.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

나는이 길을 끝내고 마침내 일하는 것을 끝내었다. .text 및 .data 섹션을 플래시에 쓰려면 openOCD를 사용하고 main() 함수를 시작할 때 .data 섹션을 RAM에 복사했습니다. – mksuth

관련 문제