Ubuntu 에서 OpenOCD 를 사용 하여 Jlink 를 통 해 HEX 를 STM 32 까지 태 워 씁 니 다.
본문 전제:
1. OpenOCD (v 0.6) 를 설치 하고 Jlink 기능 을 엽 니 다.
2. OpenOCD 는 Jlink 를 정확하게 식별 할 수 있 습 니 다.
3. OpenOCD 는 Jlink 장치 에 접근 할 수 있 습 니 다 (udev 는 일반 사용자 가 Jlink 에 접근 할 수 있 도록 합 니 다)
STM 32 로 연결
터미널 을 열 고 jlink 를 통 해 stm 32 에 연결 하 는 명령 을 입력 하 십시오:
smx@smx-Think:~$ openocd -f interface/jlink.cfg -f target/stm32f1x.cfg
설명:
1. jlink. cfg 는 / usr / share / openocd / script / interface / 에 있 습 니 다. jlink. cfg 의 전체 경 로 를 입력 할 필요 가 없 지만 'interface /' 를 생략 하면 파일 을 찾 을 수 없다 는 것 을 알려 줍 니 다.
2. stm32f1x. cfg 는 / usr / share / openocd / scripts / target 에 있 습 니 다.
"/ usr / share / openocd / scripts /" 는 OpenOCD 와 관련 된 스 크 립 트 를 저장 하고 있 습 니 다. 원본 코드 컴 파일 을 통 해 OpenOCD 를 설치 하면 원본 코드 가 있 는 폴 더 의 tcl 폴 더 에서 도 이 스 크 립 트 를 찾 을 수 있 습 니 다.
아래 힌트 를 보면 OpenOCD 가 JM 32 를 Jlink 로 제어 할 수 있다 는 뜻 이다.
Open On-Chip Debugger 0.6.1 (2012-12-28-16:52)
Licensed under GNU GPL v2
For bug reports, read
http://openocd.sourceforge.net/doc/doxygen/bugs.html
Info : only one transport option; autoselect 'jtag'
adapter speed: 1000 kHz
adapter_nsrst_delay: 100
jtag_ntrst_delay: 100
cortex_m3 reset_config sysresetreq
Info : J-Link initialization started / target CPU reset initiated
Info : J-Link ARM V8 compiled May 20 2010 17:07:46
Info : J-Link caps 0xb9ff7bbf
Info : J-Link hw version 80000
Info : J-Link hw type J-Link
Info : J-Link max mem block 9464
Info : J-Link configuration
Info : USB-Address: 0xff
Info : Kickstart power on JTAG-pin 19: 0xffffffff
Info : Vref = 2.672 TCK = 1 TDI = 0 TDO = 0 TMS = 0 SRST = 0 TRST = 0
Info : J-Link JTAG Interface ready
Info : clock speed 1000 kHz
Info : JTAG tap: stm32f1x.cpu tap/device found: 0x3ba00477 (mfg: 0x23b, part: 0xba00, ver: 0x3)
Info : JTAG tap: stm32f1x.bs tap/device found: 0x16410041 (mfg: 0x020, part: 0x6410, ver: 0x1)
Info : stm32f1x.cpu: hardware has 6 breakpoints, 4 watchpoints
둘째, OpenOCD 데 몬 에 연결
다른 터미널 을 열 고 OpenOCD 데 몬 에 연결 하 는 명령 을 입력 하 십시오.뒤의 모든 명령 은 이 터미널 에서 실 행 됩 니 다.
설명:
Jlink 를 통 해 STM 32 에 성공 적 으로 연결 한 후, OpenOCD 는 이 컴퓨터 의 4444 포트 를 감청 할 것 이다.텔 넷 로그 인 을 통 해 OpenOCD 가 무엇 을 하 는 지 제어 할 수 있 습 니 다.
3. 태 워 쓰기 프로그램 은 STM 32 까지 입 니 다.
열 린 두 번 째 터미널 에서 다음 명령 을 실행 하고 프로그램 / foo / bar. hex 를 STM 32 에 기록 합 니 다.
smx@smx-Think:/mnt/d/VC_Work/Backup$ telnet localhost 4444
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Open On-Chip Debugger
>
설명:
1、halt :
STM 32 를 끄 면 전원 이 꺼 져 있 고 halt 를 실행 하지 않 으 면 STM 32 의 Flash 에 프로그램 을 쓸 수 없습니다.
2、flash write_image erase /foo/bar.hex :
flash write_image: 미 러 를 기록 합 니 다. 지원 하 는 유형 은 bin 파일, hex 파일, elf 파일, s19 파일 (Motorola s19), mem, builder 입 니 다. 자세 한 내용 은 OpenOCD 매 뉴 얼 에서 Flash 명령 장 을 참조 하 십시오.
erase: 프로그램 을 쓰기 전에 Flash 에 사용 할 섹 터 를 지 웁 니 다.프로그램의 모든 섹 터 를 'Flash erase sector' 명령 으로 지 웠 다 면 'erase' 옵션 을 지 울 수 있 습 니 다.
/foo / bar. hex: 기록 할 프로그램 bar. hex 를 지정 합 니 다. / foo / 에 있 습 니 다.
3、reset:
리 셋 STM 32
4. OpenOCD 의 기타 명령
1. 플래시 뱅 크 번호 보기:
> halt
target state: halted
target halted due to debug-request, current mode: Thread
xPSR: 0x01000000 pc: 0x080002c2 msp: 0x20000710
> flash write_image erase /foo/bar.hex
auto erase enabled
wrote 28672 bytes from file /foo/bar.hex in 1.814544s (15.431 KiB/s)
> reset
JTAG tap: stm32f1x.cpu tap/device found: 0x3ba00477 (mfg: 0x23b, part: 0xba00, ver: 0x3)
JTAG tap: stm32f1x.bs tap/device found: 0x16410041 (mfg: 0x020, part: 0x6410, ver: 0x1)
>
되 돌아 오 는 정보 (\ # 0) 에서 알 수 있 듯 이 bank 번 호 는 0 입 니 다.bank 번 호 는 어떤 명령 에 사용 해 야 합 니 다.2. 플래시 지우 기 상태 보기:
설명:
flash erase_check 명령 뒤의 "0" 은 바로 bank 번호 입 니 다.
3. 지정 영역 지우 기
> flash banks
#0 : stm32f1x.flash (stm32f1x) at 0x08000000, size 0x00010000, buswidth 0, chipwidth 0
>
설명:
명령 뒤의 세 개의 매개 변수 인 '0 61 63' 은 각각 bank 번호, 시작 섹 터, 종료 섹 터 입 니 다.
4. jtag 속도 설정
> flash erase_check 0
Target not halted
unknown error when checking erase state of flash bank #0 at 0x08000000
# 0: 0x00000000 (0x400 1kB) erase state unknown
# 1: 0x00000400 (0x400 1kB) erase state unknown
# 2: 0x00000800 (0x400 1kB) erase state unknown
……
# 60: 0x0000f000 (0x400 1kB) erase state unknown
# 61: 0x0000f400 (0x400 1kB) erase state unknown
# 62: 0x0000f800 (0x400 1kB) erase state unknown
# 63: 0x0000fc00 (0x400 1kB) erase state unknown
in procedure 'flash'
>
설명:
매개 변수 10000 은 jtag 속도 이 고 단 위 는 Khz 입 니 다.
비고:
본 논문 에서 열거 한 명령 은 OpenOCD 0.6.1 에서 집행 되 었 다.OpenOCD 명령 은 고정 적 으로 변 하지 않 는 것 이 아니다.버 전에 따라 대응 하 는 명령 이 다 를 수 있 습 니 다.해당 버 전의 매 뉴 얼 을 보 는 것 이 좋 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
바이너리 파일cat 또는tail, 터미널 디코딩 시 처리 방법cat으로 바이너리 파일을 보려고 할 때 코드가 엉망이 되어 식은땀이 났다. 웹에서 스크롤된 정보의 처리 방법과alias의 설정을 요약합니다. reset 명령을 사용하여 터미널을 재설정합니다.이렇게 하면 고치지 못하...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.