본문 바로가기
임베디드.일렉트로닉스/nRF52

nRF52. MBR, bootloader , SoftDevice , Application , 플래시 메모리 배치

by i.got.it 2021. 3. 22.

 

메모리에서 주소가 고정되어있는 영역은 MBR 의 시작, 끝주소및 SoftDevice 의 시작주소( MBR 의 끝 주소와 동일함)뿐이다. 그 외에 SodftDevice 끝주소, Application 시작, 끝 주소, Bootloader 시작주소는 가변 가능하며, 즉 개발자가 해당 주소를 사용자 정의해야 한다. 

 

nRF52 플래시 메모리상의 MBR, bootloader, softDevice, Application 구성

 

- MBR ( Master Boot Record )은  필수 기록되어있어야 함. 

- SoftDevice  활용하는 경우에는 SoftDevice 내에 MBR 이 기본 포함되어있기 때문에 SoftDevice 기록시 MBR 도 같이 기록됨. 

-  Bootloader 는 필수는 아니며 필요시 구현하여 기록.

 

위와 같은 메모리 구조에서 사용자 데이터를 플래시에 기록하려면 어디가 좋은가?

Application 의 끝 지점부터 주소가 작은 쪽으로 확장 기록함이 무난. 즉, 부트로더 기록하는 시작주소인 BOOTLOADERADDR-1*(4096) 부터 -2*(4096),-3*(4096) 식으로 확장 하면서 기록한다. 4096 은 플래시 메모리의 1페이지 당 바이트 수량임.   App 펌 업데이트 하는 경우에도 사용자 플래시 데이터 기록 지워지지 않도록 하기 위함. 

 

 

MBR ( Master Boot Record ). 

- 주요기능 : application, bootloader 재기록. 

- MBR 펌웨어 기록되는 플래시메모리 주소 : 고정된 영역 0x0~ 0x00001  . 시작, 끝 주소 고정임. 

- MBR 의 펌웨어 소스는 제공되지 않으며, NORDIC 사에서는 nRF5 SDK 배포파일중 바이너리인 SoftDevice 에 포함시켜서 배포하거나, 혹은 mbr.hex (경로 : D:\Test_nRF5SDK\nRF5_SDK_17.0.2_d674dde\components\softdevice\mbr\hex 내의 mbr_nrf52_2.4.1_mbr.hex)만 배포함. 

 

 

SoftDevice 

-  주요 코어 기능이 구현되어 있는 바이너리형식으로만 배포됨 (소스 배포 안함)

- -  코어 기능 예 : BLE stack 등. 

- SoftDevice 펌웨어 기록되는 플래시 메모리 주소: 고정된 0x00001(MBR 영역의 끝지점) 부터 ~ SoftDevice 의 용량 이상. 시작 주소는 고정되어있으나 끝 주소는 고정되어있지 않음. SoftDevice 의 용량에 의하여 결정됨. 

 

 

Application 

- 개발자가 의도한 사용자 기능 구현된 것 

- Application 에서 SoftDevice 에서 제공되는 기능 활용한 코딩가능. 예 : BLE 기능을 구현하는 경우 s140 이라는 SoftDevice 이용함. 

- Application 펌웨어 기록되는 플래시 메모리 주소 : SoftDevice 이후 지점부터. SoftDevice 사용하지 않는 경우엔 MBR 영역 이후 지점부터. 

- softdevice & bootloader 가 구현된 경우 Application 의 시작주소는 bootloader 가 SoftDevice 에 알려주게된다. 

 - - 함수 : sd_softdevice_vector_table_base_set(uint32_t address)

 

 

Bootloader.

- 주요기능 : in-system firmware update 과정 핸들링 할 수 있다. 

 

- SoftDevice 에 완전하게 접근가능한 일반 application 처럼 bootloader 도 SoftDevice 에 완전하게 접근가능하다. 

- -  bootloader 에서 SoftDevice 에 완전하게 접근가능하기 때문에 SoftDevice 의 BLE 통신 같은 기능을 활용가능하다. 

 

- bootloader 펌웨어 기록되는 플래시메모리 주소 : 통상 메모리 끝부분에 사용자 정의한 메모리 주소 (BOOTLOADERADDR)부터 기록함.  

 - - 펌웨어 소스 코드에서의 bootloader 가 기록되는 메모리 첫 주소 BOOTLOADERADDR 는 nrf_mbr.h(nRF5 SDK 설치시 경로  \nRF5_SDK_17.0.2_d674dde\components\softdevice\s140\headers\nrf52 에 있음) 에 기록되어 있으며 칩에 이 주소  정보 저장소는 플래시 메모리의 MBR_BOOTLOADER_ADDR  또는  UICR.NRFFW[0] (이것 역시 플래시 메모리에 기록되는것) 에 모두 기록가능하다. 

 

부팅시 MBR 은 BOOTLOADADDR 을 읽기 위하여 먼저 플래시메모리의 주소 MBR_BOOTLOADER_ADDR 을 읽어서 bootloader 주소가 있다면 해당값을 읽어서 후처리 하며, bootloader 주소가 기록되어있지 않다면 ( 플레시메모리 기본 값인 0xFFFFFFFF 가 기록되어있다면 bootloader  주소 기록되지 않은 것) UICR.NRFFW[0] 을 읽어서 후처리하게된다. 

즉, 2개 중에 어느 한 곳이라도 BOOTLOADADDR  기록된 값이 있다면 해당 기록된 값을 BOOTLOADDR 로 인지하고 후처리 진행된다. 2개 모두 기록했다면 먼저 읽어들이는 MBR_BOOTLOADER_ADDR 값을  BOOTLOADADDR 로 인지하고 후처리한다.  

 

 

- softdevice & bootloader 가 구현된 경우 Application 의 시작주소는 bootloader 가 SoftDevice 에 알려주게된다.

 - - 함수 : sd_softdevice_vector_table_base_set(uint32_t address)

 

- bootloader 는 펌웨어들( application , SoftDevice, bootloader 자신까지 포함) 재기록과정을 추적하고 무결성 처리과정을 책임진다. 펌웨어 기록과정중 발생하는 비정상 reset 이 발생한 경우 bootloader 가 이를 검출하고 펌웨어 기록과정을 재개 한다. 

 

 

코드에서 bootloader  addr  구하기 포럼글. 

https://devzone.nordicsemi.com/f/nordic-q-a/53290/how-to-read-flash_start-address-of-bootloader-in-application

 

How to read FLASH_START address of bootloader in application - Nordic Q&A - Nordic DevZone - Nordic DevZone

 

devzone.nordicsemi.com

 

 

포럼글 

https://devzone.nordicsemi.com/f/nordic-q-a/81570/internal-flash-memory-operations-when-softdevice-present

 

Internal flash memory operations when softdevice present - Nordic Q&A - Nordic DevZone - Nordic DevZone

 

devzone.nordicsemi.com

 

 

연관

 

 

nRF52840 . 메모리 레이아웃 . RAM , Flash , NVMC

nRF52840 메모리 - Flash 1024kByte - RAM 256kByte 메모리 레이아웃 Flash - Non-volatile memory Flash memory is divided into 256 pages of 4 kB each that can be accessed by the CPU via the ICODE and DCODE buses . Writing to flash memory is managed by

igotit.tistory.com

 

 

 

 

NORIC 사 제공정보 및 포럼에서의 연관정보 

 

 

: master boot record and bootloader

The SoftDevice supports the use of a bootloader. A bootloader may be used to update the firmware on the System on Chip (SoC). The nRF52 software architecture includes an MBR (see SoC application with the SoftDevice). The MBR is necessary for the bootloader

infocenter.nordicsemi.com

 

 

: Bootloader

A bootloader may be used to handle in-system update procedures. The bootloader has full access to the SoftDevice Application Programming Interface (API) and can be implemented like any application that uses the SoftDevice. In particular, the bootloader can

infocenter.nordicsemi.com

 

 

DFU 이슈 BLE 와 USB 모두 DFU 로 사용가능하냐에 대한 ..

 

DFU over BLE and USB - Nordic Q&A - Nordic DevZone - Nordic DevZone (nordicsemi.com)

 

DFU over BLE and USB - Nordic Q&A - Nordic DevZone - Nordic DevZone

 

devzone.nordicsemi.com

 

devzone.nordicsemi.com/f/nordic-q-a/43077/nrf52840-dfu-usb-and-ble

 

Nrf52840 DFU usb and ble - Nordic Q&A - Nordic DevZone - Nordic DevZone

 

devzone.nordicsemi.com

 

Search - Nordic DevZone (nordicsemi.com)

 

Search - Nordic DevZone

 

devzone.nordicsemi.com

 

 

 

 

 

 

 

 

 

 


첫 등록 : 2021.03.22

최종 수정 : 2023.07.24 

단축 주소 : https://igotit.tistory.com/2799


 

댓글



 

비트코인




암호화폐       외환/나스닥/골드         암호화폐/외환/나스닥/골드
     
현물 |선물 인버스 |선물 USDT       전략매니저(카피트레이딩)         프랍 트레이더 온라인 지원가능. MT4,MT5