주요 내용으로 건너뛰기

11. Flash Loader

개요

In this step, we will discuss how to load data into external flash memory. The compiler compiles the application code and assets in your project into a binary or hex file. Depending on the specifications in the linker script, parts of the binary or hex file will be placed in internal flash, while other parts will be placed in external flash. Typically, assets such as images and fonts are stored in external flash, whereas the application code is stored in internal flash.

개발 단계에서는 외부 플래시에 데이터를 기록할 수 있는 방법이 필요하지만, 플래시에서 데이터를 읽어오기만 하는 런타임 단계에서는 반드시 필요한 것이 아닙니다.

개발 단계에서는 외부 플래시에 데이터를 기록할 수 있는 방법이 필요하지만, 플래시에서 데이터를 읽어오기만 하는 런타임 단계에서는 반드시 필요한 것이 아닙니다.

  • STM32CubeProgrammer를 위한 플래시 로더 작성
  • 전용 애플리케이션 기반의 솔루션 사용
Note
외부 플래시가 존재하지 않는 경우에는 이 단계를 건너뜁니다.

목표

외부 플래시에 데이터를 기록하는 데는 다음의 두 가지 방법이 주로 사용됩니다:

확인

이 섹션의 목표는 외부 플래시에 데이터를 로드하기 위한 메커니즘을 선택 및 개발하는 것입니다.

확인사항확인근거
Data can be flashed to the external flashExternal flash can be used for storage

전제 조건

다음은 이 섹션에서 확인해야 할 사항입니다:

  • 플래시 정보(일반적으로 제조사 데이터 시트의 정보)
  • MCU와 외부 플래시 간 연결 정보

실행

STM32CubeProgrammer를 위한 플래시 로더

STM32CubeProgrammer에는 다양한 STM32 평가 키트를 위한 플래시 로더가 함께 제공됩니다. The flash loaders are small programs that are loaded to the RAM of the MCU and executed during flashing to facilitate the programming of the flash.

플래시 로더는 2개 파트로 구성되어 있습니다.

  • 플래시로 커뮤니케이션하는 데 필요한 GPIO 및 플래시 인터페이스 구성
  • 플래시에서 입력하는 데 필요한 명령어 시퀀스를 인식하는 플래시 알고리즘

이 부분은 기존 플래시 로더를 토대로 사용할 수 있습니다. 사용 중인 플래시에 대한 플래시 로더를 찾을 수 있는 경우에는 이것을 시작점으로 해서 GPIO 부분을 수정하십시오. 평가 키트에서 플래시 회로를 복사하는 방법으로 하드웨어를 설계하는 경우에는 해당 키트에 대한 플래시 로더를 직접 사용할 수 있습니다.

The flash loader projects provided with STM32CubeProgrammer are found in the installation folder, which is C:\Program Files\STMicroelectronics\STM32Cube\STM32CubeProgrammer\bin\ExternalLoader if it is installed in the default directory.

Flash loader projects can also be found here on github: STM32 External Flashloaders on GitHub.

전용 애플리케이션 기반 솔루션

또 다른 해결책은 애플리케이션 자체에 플래시 로딩을 포함시키는 것입니다. 개발자가 애플리케이션 내에 플래시 구성을 이미 가지고 있고(여기에서 로드가 가능하도록), 이전 테스트를 통해 플래시에 블록을 기록하는 방법을 알고 있을 수 있기 때문입니다. 새로운 플래시 데이터를 애플리케이션에 전송하는 방법만 알면 됩니다. 한 가지 방법은 UART를 이용하는 것입니다. 애플리케이션은 데이터 스트림을 수신하고 플래시에 데이터를 블록 단위로 기록합니다.

이 애플리케이션이 실행되는 동안에는 플래시가 메모리 매핑 모드가 될 수 없으므로 보통 애플리케이션은 특별 모드에 들어가야 합니다.

바이트 전송을 위한 오픈 소스 솔루션을 인터넷에서 찾아볼 수 있습니다. 예를 들어 Y-모뎀 프로토콜은 데이터에 16비트 CRC를 제공합니다.

테스트

바이트 전송을 위한 오픈 소스 솔루션을 인터넷에서 찾아볼 수 있습니다. 예를 들어 Y-모뎀 프로토콜은 데이터에 16비트 CRC를 제공합니다.

버그를 조기에 찾아내려면 플래시 전체를 면밀히 테스트하는 것이 좋습니다.