Louie NRT Story

[STM32] stm32f1 IAP(In Application Programming) - 02 본문

전기차충전기

[STM32] stm32f1 IAP(In Application Programming) - 02

hyeok0724.kim@gmail.com 2021. 4. 22. 13:13
반응형

작성일: 21년 4월 22일

 

 

Index

1. STM Example Code 복사

2. 메모리 구조 정의

3. Bootloader Flash 코드 수정

4. Bootloader Main 수정

5. Bootloader menu 수정

6. Tera Term 으로 실행한 결과

 

 

 

1. STM Example Code 복사

- 기능 모듈 부분만 복사를 하도록함

- main 문 같은 경우 "while" 내부의 코드만 복사하면 됨.

 

 

 

 

2. 메모리 구조 정의

- Bootloader의 시작 주소는  0x0800 0000으로 시작하고 Application Code의 시작 주소는 0x0801 0000로 잡는다.

- Bootloader는 64KB 크기로 넉넉하게 잡아줌.

- 크기가 부족할 경우 펌웨어 업데이트 하다가 메모리가 지워져 Bootloader 자체가 망가질 수 있음

 

 

3. Bootloader Flash 코드 수정

- "flash_if.h" 를 보게 되면 Application 영역이 0x08010000 부터 시작 이라는 것을 눈으로 확인함

- APPLICATION_ADDRESS를 0x08010000 으로 수정함

- 예제 기능 중에 특정 메모리 영역을 삭제 못하도록 "LOCK" 기능이 있음

- 그때 사용하는 것으로 필자는 현재 블로그에서는 사용하지 않기 때문에 무시해도 됨.

※ 저번에 LOCK 걸어놨는데 BootLoader가 메모리 문제로 망가지면서 메모리 LOCK 걸린 상태로 먹통이 되어버려 펌웨어 다운로드도 안되고 아무것도 할 수 없는 상태가 되었었음. 흔히 말하는 벽돌 상태가 되었음.

STM32CUBE Programmer 프로그램을 이용하여 메모리 LOCK을 풀고난 이후로 잘 사용할 수 있었음

참고로 이때 당시 아무것도 할 수 없어서 정말 암담했다.

 

 

4. Bootloader Main 수정

- main.c 코드에는 Bootloader가 실행되기 위해서는 FLASH_If_Init()과 Main_Menu() 만 실행되며 됨

- 필자의 보드에는 Switch 하나가 있기 때문에 Switch를 끄면 Bootloader가 실행되고 켜면 Application 영역의 Firmware 동작 되도록 코딩 하였음.

 

 

5. Bootloader menu 수정

- 특정 메모리에서 Application 영역의 Firmware 버젼을 읽을 수 있도록 함

- 다음 블로그 글에서 확인 할 수 있지만 Version 정보를 넣어두는 메모리 주소는 0x0810400 임.

- 특정 메모리에서 값을 포인터 형식으로 읽을 수 있도록 함.

- 사용자가 'a' 데이터를 전송하면 firmware 버젼을 읽고 Return 값을 반환 하는 부분을 넣음

 

 

6. Tera Term 으로 실행한 결과

- Tera Term을 사용하는 이유는 메뉴에 YMODEM으로 파일을 보낼 수 있는 기능이 있기 때문임.

 

Referece:

kjt9109.tistory.com/entry/STM32-IAP-Ymodem-%ED%94%84%EB%A1%9C%ED%86%A0%EC%BD%9C-Bootloader-1

 

STM32 IAP (Ymodem 프로토콜) Bootloader - 1

cubeMX : 5.6.1 cubeIDE : 1.3.1 Code Lib Version : STM32Cube_FW_F1_V1.8.0 MCU:STM32F103VBTx stm32 bootloader를 만들어 보자. bootloader에 사용할 Ymodem은 teraterm 프로그램에서 사용할 수 있으며..

kjt9109.tistory.com

blog.naver.com/chcbaram

 

Baram : 네이버 블로그

https://github.com/chcbaram

blog.naver.com

 

반응형
Comments