자동차 임베디드 SW/Aurix MCU

Aurix Flash 기본지식

존버매니아.임베디드 개발자 2023. 1. 19. 19:14
반응형

flash erase의 최소단위는 sector
flash write의 최소단위는 page

sector와 page 크기는 hardware 적으로 사전에 정해져있다. 유저매뉴얼을 보고 확인하면된다.
(보통 sector가 page보다 훨씬 크다)

Aurix에는 Pflash , Dflash 라는 2가지 타입의 flash가 존재함
각각 Program flash , Data Flash 의 약자이다.

Pflash와 Dflash는 섹터와 페이지 크기가 서로 다르다.
Pflash page : 32byte
Dflash page : 8 byte

Pflash sector : 16Kbyte
Dflash sector :


flash에 write를 하기전에는 항상 erase를 해놓은 상태여야한다.
(덮어쓰기가 안됨)

덮어쓰기 시도 할 경우(erase 상태가 아닌 flash에 write시도) trap 발생


Cached Nocached 개념

Pflash 영역에만 해당되는 내용인데,
물리적으로 동일한 메모리 공간인데 cpu가 접근할때 2가지 주소로 접근할 수 있다.

0xA로 시작하는 주소로 접근하는 경우 no cache 접근
0x8로 시작하는 주소로 접근하는 경우 cached 접근

pflash에 프로그램 코드가 담겨있고, cpu가 코드를 fetch 한다고 가정할 때.
cached 주소타입으로 접근하면 해당 코드가 cache에 담기게 됨.

근데 non cached 로 접근하면 캐시에 담기지 않는다.

sw 효율 측면에서 봤을때, run time중에 flash의 내용이 변경될 일이 없다면 cached로 접근하는게 효율적일 것이다.

만약 run time에 변경되는 경우가 있다면 cache로 인해 cache에 담긴데이터랑 flash에 실제 담긴 코드가 달라서 문제가 생길 여지가 있음.

또한, flash write, flash erase 등의 작업을 할 때 flash의 주소영역을 지정해줘야하는데 이때는 non cached타입을 사용하는 것을 권장하고 있다.




반응형