본문 바로가기
실전 임베디드

STM32F407 Flash Memory Map

by BABEL-II 2019. 10. 5.

STM32F407의 맨 마지막 섹터를 프로그램의 저장 영역으로 사용하기로 하였다.

예를 들면 MAC ADDRESS 등등을 저장할 때 사용할 수 있다.

 

STM32F407의 Flash Memory map.

맨 마지막 섹터의 주소는 0x080E0000~

섹터 번호는 11번, 크기는 128K bytes.

특이하게 섹터 별로 크기가 다르다.

0x080E0000 이후의 메모리를 Flash Download가 지우지 않도록 조치한다.

빌드한 펌웨어의 코드 영역이 내가 원하는 영역을 침범하지 않는지 map 파일 읽어서 점검. 내 경우는 0x0800962c... 한참 여유가 있다.

이후에는 Flash 쓰고, 읽는 코드 예제. 참으로 단순하도다!!

Flash는 지워야 쓸 수 있는 구조이다. 지울 때는 섹터별로 지워야 한다.

바이트 단위로 지워지는 구조가 아니다.

void FlashTest()

{

__IO uint32_t data32 = 0 , MemoryProgramStatus = 0;

uint32_t Address = 0x80E0000;

// 읽을 때는 주소 주고 그냥 읽어오면 된다.

data32 = *(__IO uint32_t*)Address;

printf("Read result = %d\r\n", data32);

data32 += 1;

// 쓸 때는...

FLASH_Unlock();

// 기록하기 전에 꼭 섹터를 지워준다.

FLASH_EraseSector(FLASH_Sector_11, VoltageRange_2);

FLASH_ProgramWord(Address, data32);// 32비트 쓰기

FLASH_Lock();

}

MAC ADDRESS는 대략 빈 자리 찾아서 사용하자 히힛!!

CC-76-69...

XX-XX-XX-00-00-00 ~ 7F-FF-FF

80-00-00 ~ FF-FF-FF

D0-01-01 ~ EF-FF-FF

'실전 임베디드' 카테고리의 다른 글

wxPython GUI 만들기 설명  (0) 2019.10.05
wxPython 그래프 그리기 1-draw  (0) 2019.10.05
웹에서 큰 파일 이어올리기  (0) 2019.10.04
Python Pycharm BesutifulSoup 4 설치  (0) 2019.10.04
Keil MDK v4 Legacy Support  (0) 2019.10.04