2017/04/12

STM32 + Raspberry PI 보드를 만들어보자 -- 01. OpenOCD로 stm32 프로그래밍하기

써먹을데가 좀 있을거같다.

처음 생각해본 컨셉은

1. 리눅스가 돌아가는 초저가 SBC를 메인 GUI로 사용하자.
2. Real Time 제어는 STM32에서 담당하자.
3. 라즈베리와 STM32 둘 사이의 통신은 UART or SPI
4. 라즈베리에서 다이렉트로 STM32의 플래시 프로그래밍이 가능했으면...

요정도로 시작한다.

라즈베리로 STM32를 프로그래밍 가능하도록 OpenOCD 기능을 먼저 테스트해보자.
adafruit의 문서를 참고했다.
여기서 사용하는 라즈베리는 Raspberry PI 3 model B 다.

1. sudo apt-get update
























2. sudo apt-get install git autoconf libtool make pkg-config libusb-1.0-0 libusb-1.0-0-dev















3. git clone git://git.code.sf.net/p/openocd/code openocd-code














openocd-code 폴더가 보인다.

4. cd openocd-code
   ./bootstrap




































5. ./configure --enable-sysfsgpio --enable-bcm2835gpio




































6. make
   sudo make install




































먼지 모르겠다만 여기까지 따라왔다. openOCD의 설정은 여기까지고 다음부턴 물리적인 연결이다.






















별 어려운건 없다. GND, nRST, SWDIO, SWDCLK 요 4개의 핀만 연결하면 됨.





































Adafruit의 설명은 at91samd 디바이스로 설명해놔서 STM32로 수정해서 진행한다.

openocd.cfg 파일을 만든다
=====================================================
source [find interface/raspberrypi2-native.cfg]
transport select swd

set CHIPNAME stm32f4
source [find target/stm32f4x.cfg]

# did not yet manage to make a working setup using srst
#reset_config srst_only
reset_config  srst_nogate

adapter_nsrst_delay 100
adapter_nsrst_assert_width 100

init
targets
reset halt

program hello_world_01.bin verify reset exit 0x08000000

reset
shutdown
=====================================================

내용은 === 제외하고 복붙 하면 된다.
내가 쓰는건 STM32F439이므로 다른걸 쓴다면 약간 변경해야 한다.

source [find target/stm32f4x.cfg] 이 부분은 해당하는 mcu의 cfg로 변경해줘야 한다.
/usr/local/share/openocd/scripts/tartget 에 cfg 파일들이 모여있으니 이 중 적당한걸 선택한다.




































stm32를 쓴다면 stm32f0x.cfg, stm32f1x.cfg, stm32f2x.cfg, stm32f3x.cfg, stm32f4x.cfg, stm32f7x.cfg 파일만 쓰면 된다.

program hello_world_01.bin verify reset exit 0x08000000 이 부분은 업로드할 이미지 파일을 지정해 주는부분이다.

hello_world_00.bin 바이너리를 설정하고
sudo openocd로 실행하면




































이런식으로 실행되고


























흠...굳

hello_world_01.bin 바이너리를 설정하고
sudo openocd로 실행하면




































실행은 화면은


























라즈베리파이와 STM32를 4선으로 인터페이스해서 펌웨어 업그레이드는 가능해 보인다.

그럼 다음 단계로 넘어가자.

댓글 없음:

댓글 쓰기