본문 바로가기
자동차 임베디드 SW/Aurix MCU

Aurix Swap과 OTA

by 존버매니아.임베디드 개발자 2024. 9. 25.
반응형

 



위에 필요한 핵심 개념들이 모두 잘 적혀있다.


차량용 제어기에 OTA가 적용되면서 MCU에 메모리스왑 기능이 만들어졌다.
이 기능의 목적은, 제어기가 동작중인 상황에서도 Sw를 업데이트하기 위함이다.

기존에 mcu sw 업데이트를 할 때는.
기존 sw가 설치돼있는 flash 영역을 지운 후, 지워진공간에 새로운 sw를 재설치하는 방식이었다.이 방식의 경우,  sw를 업데이트하려면 기존 sw를 지워야하므로, 기존 동작을 하면서 동시에 sw 업데이트가 불가하다.

그래서 도입한 개념이 뭐냐면,
FLASH를 A영역,  B영역 2개로 나눠놓은 후.
기존 sw가 동작중인 상황에서 새로운 sw를 기존 flash영역이 아니라, 다른 flash 영역에 다운로드 시키는 것이다.
ex)기존 sw가 A 영역에 있었다면, 새로운 SW는 B영역에 다운로드.

그리고나서, 다운로드가 끝나면 Swap 기능을 활성화한다.   그러면 mcu 내부적으로 Adress 경로가 하드웨어적으로 변경되서 원래 A 영역으로 접근하던 코드가 B영역으로 접근하게된다.

이게 메모리 스왑 기능이다.


TC39X 제품으로 실제 예를 들어보자.


위 그림에서 왼쪽 Memmmap은 실제 TC39X 제품의 Flash 메모리 주소를 나타낸다.

디폴트 상태의 이 Memmap이 A Bank라고 하자.

메모리 Swap 기능을 Enable 한 후, B Bank를 활성화시켰을때의 Memmap이 오른쪽 의 Memmap이다. 

무슨 말이냐면,

 

예를들어 원본 SW가 0x8000 0000 부터 100 바이트만큼 코드가 작성돼있다고 치자.

그러면 이에 해당되는 B bank 주소는 0x8060 0000 이다.

그러니까 신규 SW는 0x8060 0000 영역에 다운로드 받아놓는다.

 

그러고나서, Swap을 시켜서 B bank를 활성화시키면.

MCU가 동작할때 원래 0x8000 0000 메모리에 접근해서 코드를 읽어와야되는데. 뱅크가 켜져있으면

그게 아니라 0x8060 0000 영역으로 접근한다는 것이다.

이게 메모리 Swap이다. 

반응형