주요 내용으로 건너뛰기

11. Flash Loader

개요

이 단계에서는 외부 플래시에 데이터를 로딩하는 것을 다룹니다. 컴파일러는 프로젝트의 텍스트, 폰트 및 이미지를 컴파일하고 이러한 데이터를 이용해 binary 또는 hex 파일을 생성합니다. 이 데이터는 보통 외부 플래시로 로드됩니다. 한편 내부 플래시는 코드용으로 예약되어 있습니다.

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

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

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

목표

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

확인

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

확인사항확인근거
데이터의 플래싱 가능 여부외부 플래시를 이미지 스토리지에 사용할 수 있는지 여부

전제 조건

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

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

실행

STM32CubeProgrammer를 위한 플래시 로더

STM32CubeProgrammer에는 다양한 STM32 평가 키트를 위한 플래시 로더가 함께 제공됩니다. 플래시 로더란, MCU의 RAM에 로드되어 플래시의 프로그래밍을 가능하게 하는 소규모 프로그램입니다.

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

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

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

STM32CubeProgrammer를 통해 제공되는 플래시 로더 프로젝트는 설치 폴더(보통 C:\Program Files\STMicroelectronics\STM32Cube\STM32CubeProgrammer\bin\ExternalLoader)에 위치합니다.

플래시 로더 프로젝트는GitHub에서도 찾아볼 수 있습니다.

GitHub의 STM32 외부 플래시로더

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

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

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

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

테스트

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

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