Louie NRT Story

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

전기차충전기

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

hyeok0724.kim@gmail.com 2021. 4. 5. 16:57
반응형

작성일: 21년 4월 5일

 

Index

1. IAP(In Application Programming)

2. STM example code

3. 메모리 구조

4. Application 버전을 알기 위한 방법

5. 펌웨어 업데이트 시퀀스

 

 

1. IAP(In Application Programming)

- STMicroelectronics에서는 원격으로 Firmware를 업데이트 할 수 있도록 방법과 코드에 대해서 제공해주고 있음

※ IAP를 사용하는 이유

1) 부트로더를 별도로 두어 사용자가 Firmware를 ST-LINK 또는 J-LINK 등의 다운로더를 이용하지 않고 Application영역의 Firmware을 업데이트할 수 있도록 해주는 프로그램 임.

2) 제품이 출시 될때 Firmware를 탑재하여 판매가 되는데 최신 업데이트가 문제가 됨.
3) 일반 사용자에게 Firmware 다운로드 도구를 이용하여 업데이트를 하도록 가이드를 줄 수도 있지만 현실적으로 어려운 과제임.
4) IAP를 사용하므로써 원격으로 또는 자동으로 Firmware 업데이트가 될 수 있도록 할 수 있음

 

 

 

2. STM example code

- STMicroelectronics의 공식 Github의 Example 코드를 참고함

- 현재 사용하는 보드와 STM3210C_EVAL 보드가 가장 유사하여 참고하였음 

출처: github.com/STMicroelectronics/STM32CubeF1/tree/master/Projects/STM3210C_EVAL/Applications

 

 

3. 메모리 구조

- BootLoader와 Application 메모리 영역을 나눌 때에는 Sector 단위로 나눠야 함.

- 메뉴얼의 Page 단위로 나눠야 하기 때문에 Base Address를 잘 알고 있어야함

- STM32F105의 메모리 구조는 다음과 같음

- STM32CubeProgrammer를 이용하여 확인해본 결과

 

 

4. Application 버전을 알기 위한 방법

- Bootloader에서는 Application에서 운영되고 있는 Firmware 버젼이 무엇인지 알수가 없음

- 특정 메모리에 Firmware 버젼을 입력함

- Bootloader는 특정 메모리의 Firmware 버젼을 읽고 업데이트 여부를 판단함

 

출처: www.slideshare.net/chcbaram/06-109389683

 

5. 펌웨어 업데이트 시퀀스

1) 운영도중 서버로 부터 새로운 Firmware 버젼이 있음을 확인함

2) System Software Reset을 함

3) 재부팅 하면서 Bootloader가 동작됨

4) Bootloader는 특정메모리의 값을 확인하여 Firmware 버젼과 이름을 확인함

5) Firmware 버젼과 이름을 전송함

6) 서버는 업데이트 해야한다고 판단되면 업데이터 동작 하도록 명령을 내림

7) Bootloader는 Application 영역을 삭제함. 삭제하면 모든 값이 0xffff 으로 변경됨

8) 정의된 프로토콜로 서버로부터 Firmware 데이터를 받음

9) 수신한 Firmware 데이터를 Application 영역에 씀

10) 모든 데이터가 수신이 완료되면 재부팅함

11) 다시 Application 영역의 Firmware 버젼과 이름을 확인 후 서버로 전송함

12) 서버는 최신 버젼으로 업데이트 됨을 확인 후 Application 영역으로 Jump 하도록 스킵

※ 만약에 업데이트 과정에서 문제가 있었을 경우 사용자가 "외부버튼"을 이용하여 Bootloader가

강제로 Firmware 업데이트 할 수 있도록 해야함.

 

- 강의에서 제공해준 PPT 자료

출처: www.slideshare.net/chcbaram/06-109389683

 

Referece:

github.com/STMicroelectronics/STM32CubeF1

 

STMicroelectronics/STM32CubeF1

STM32Cube MCU Full Package for the STM32F1 series - (HAL + LL Drivers, CMSIS Core, CMSIS Device, MW libraries plus a set of Projects running on all boards provided by ST (Nucleo, Evaluation and Dis...

github.com

blog.naver.com/chcbaram

 

Baram : 네이버 블로그

https://github.com/chcbaram

blog.naver.com

m.blog.naver.com/PostView.nhn?blogId=eziya76&logNo=220977486377&proxyReferer=https:%2F%2Fwww.google.com%2F

 

[STM32] IAP + USART (AN4657)

AN4657은 AN2557과 거의 동일하고 다만 SPL이 아닌 STM32CubeMx+HAL 라이브러리로 되어 있...

blog.naver.com

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

www.slideshare.net/chcbaram/06-109389683

 

강좌 06 부트로더

부트로더 Hancheol Cho

www.slideshare.net

youtu.be/YyMjdkYnq7M

 

반응형

'전기차충전기' 카테고리의 다른 글

[STM32] Flash Protection 해제  (0) 2021.04.06
[펌웨어] 디바이스 드라이버 - Todo  (0) 2021.04.05
[어플리케이션] Electron 강의  (0) 2021.04.04
[충전기 프로토콜] OCPP 1.6 - Todo  (0) 2021.03.30
[펌웨어] 중급  (0) 2021.03.29
Comments