MCCI Trusted Bootloader
Simple trusted bootloader and tools for small embedded systems
mcci_bootloader.h File Reference
#include "mcci_bootloader_types.h"
#include "mcci_tweetnacl_sign.h"

Go to the source code of this file.

Enumerations

enum  McciBootloaderError_e {
  McciBootloaderError_OK = 0 , McciBootloaderError_BootloaderNotValid , McciBootloaderError_ResetClockNotValid , McciBootloaderError_NoAppImage ,
  McciBootloaderError_EraseFailed , McciBootloaderError_ReadFailed , McciBootloaderError_FlashWriteFailed , McciBootloaderError_FlashVerifyFailed ,
  McciBootloaderError_FlashNotFound , McciBootloaderError_FlashNotSupported
}
 
enum  McciBootloaderState_e {
  McciBootloaderState_Initial = 0 , McciBootloaderState_CheckingPrimaryStorageHash , McciBootloaderState_CheckingPrimaryStorageSignature , McciBootloaderState_CheckingFallbackStorageHash ,
  McciBootloaderState_CheckingFallbackStorageSignature , McciBootloaderState_ErasingApp , McciBootloaderState_WritingApp , McciBootloaderState_CheckingApp
}
 

Functions

bool McciBootloader_checkCodeValid (const void *pBase, size_t numBytes)
 
bool McciBootloader_checkStorageImage (McciBootloaderStorageAddress_t address, McciBootloader_AppInfo_t *pAppInfo, const mcci_tweetnacl_sign_publickey_t *pPublicKey)
 
static size_t McciBootloader_codeSize (const void *base, const void *top)
 
void McciBootloader_main (void)
 
McciBootloaderError_t McciBootloader_programAndCheckFlash (McciBootloaderStorageAddress_t address, const McciBootloader_AppInfo_t *pAppInfo)
 

Variables

uint8_t g_McciBootloader_BssBase []
 base address of the .bss section in RAM (linker-defined).
 
uint8_t g_McciBootloader_BssTop []
 first address past end of the .bss section in RAM (linker-defined).
 
uint8_t g_McciBootloader_DataBase []
 base address of the .data section in RAM (linker-defined).
 
uint8_t g_McciBootloader_DataTop []
 first address past end of the .data section in RAM (linker-defined).
 
uint8_t g_McciBootloader_imageBlock [4096]
 
uint8_t g_McciBootloader_SocRamBase []
 base address of the SoC RAM (linker-defined).
 
uint8_t g_McciBootloader_SocRamTop []
 first address past end of the SoC RAM (linker-defined).
 
uint8_t g_McciBootloader_StackTop []
 initial stack pointer value (top of stack, linker-defined).
 
const uint8_t gk_McciBootloader_AppBase []
 base address of the application region in flash (linker-defined).
 
const uint8_t gk_McciBootloader_AppTop []
 first address past end of the application region (linker-defined).
 
const uint8_t gk_McciBootloader_BootBase []
 base address of the bootloader in flash (linker-defined).
 
const uint8_t gk_McciBootloader_BootTop []
 first address past end of the bootloader in flash (linker-defined).
 
const uint8_t gk_McciBootloader_DataImageBase []
 address in flash of the initializer data for the .data section (linker-defined).
 
const uint8_t gk_McciBootloader_ImageSize []
 bootloader image size in bytes (linker-computed integer; use as (uint32_t) &gk_McciBootloader_ImageSize[0] to get the value).
 
const uint8_t gk_McciBootloader_MfgBase []
 base address of the manufacturing data region in flash (linker-defined).
 
const uint8_t gk_McciBootloader_MfgTop []
 first address past end of the manufacturing data region (linker-defined).
 

Enumeration Type Documentation

◆ McciBootloaderError_e

Enumerator
McciBootloaderError_OK 

successful

McciBootloaderError_BootloaderNotValid 

bootloader image isn't valid

McciBootloaderError_ResetClockNotValid 

post-reset clock not valid

McciBootloaderError_NoAppImage 

app image not valid, no fallback available.

McciBootloaderError_EraseFailed 

erase failed

McciBootloaderError_ReadFailed 

storage read failed during program

McciBootloaderError_FlashWriteFailed 

flash write failed during programming

McciBootloaderError_FlashVerifyFailed 

flash verify failed after programming

McciBootloaderError_FlashNotFound 

flash didn't reply properly to SFDP

McciBootloaderError_FlashNotSupported 

flash SFDP contents are prior to JESD216B, or otherwise not suitable.

Definition at line 53 of file mcci_bootloader.h.

◆ McciBootloaderState_e

Enumerator
McciBootloaderState_Initial 

initial state when annunciator launched

McciBootloaderState_CheckingPrimaryStorageHash 
McciBootloaderState_CheckingPrimaryStorageSignature 
McciBootloaderState_CheckingFallbackStorageHash 
McciBootloaderState_CheckingFallbackStorageSignature 
McciBootloaderState_ErasingApp 
McciBootloaderState_WritingApp 
McciBootloaderState_CheckingApp 

Definition at line 68 of file mcci_bootloader.h.

Function Documentation

◆ McciBootloader_checkCodeValid()

bool McciBootloader_checkCodeValid ( const void *  pBase,
size_t  numBytes 
)

◆ McciBootloader_checkStorageImage()

bool McciBootloader_checkStorageImage ( McciBootloaderStorageAddress_t  address,
McciBootloader_AppInfo_t *  pAppInfo,
const mcci_tweetnacl_sign_publickey_t *  pPublicKey 
)

◆ McciBootloader_codeSize()

static size_t McciBootloader_codeSize ( const void *  base,
const void *  top 
)
inlinestatic

Definition at line 157 of file mcci_bootloader.h.

Referenced by McciBootloader_main(), and McciBootloaderPlatform_entry().

◆ McciBootloader_main()

◆ McciBootloader_programAndCheckFlash()

Variable Documentation

◆ g_McciBootloader_BssBase

uint8_t g_McciBootloader_BssBase[]
extern

base address of the .bss section in RAM (linker-defined).

Referenced by McciBootloaderPlatform_entry().

◆ g_McciBootloader_BssTop

uint8_t g_McciBootloader_BssTop[]
extern

first address past end of the .bss section in RAM (linker-defined).

Referenced by McciBootloaderPlatform_entry().

◆ g_McciBootloader_DataBase

uint8_t g_McciBootloader_DataBase[]
extern

base address of the .data section in RAM (linker-defined).

Referenced by McciBootloaderPlatform_entry().

◆ g_McciBootloader_DataTop

uint8_t g_McciBootloader_DataTop[]
extern

first address past end of the .data section in RAM (linker-defined).

Referenced by McciBootloaderPlatform_entry().

◆ g_McciBootloader_imageBlock

uint8_t g_McciBootloader_imageBlock[4096]
extern

◆ g_McciBootloader_SocRamBase

uint8_t g_McciBootloader_SocRamBase[]
extern

base address of the SoC RAM (linker-defined).

Referenced by McciBootloaderPlatform_checkImageValid().

◆ g_McciBootloader_SocRamTop

uint8_t g_McciBootloader_SocRamTop[]
extern

first address past end of the SoC RAM (linker-defined).

Referenced by McciBootloaderPlatform_checkImageValid().

◆ g_McciBootloader_StackTop

uint8_t g_McciBootloader_StackTop[]
extern

initial stack pointer value (top of stack, linker-defined).

◆ gk_McciBootloader_AppBase

const uint8_t gk_McciBootloader_AppBase[]
extern

base address of the application region in flash (linker-defined).

Referenced by McciBootloader_main().

◆ gk_McciBootloader_AppTop

const uint8_t gk_McciBootloader_AppTop[]
extern

first address past end of the application region (linker-defined).

Referenced by McciBootloader_main().

◆ gk_McciBootloader_BootBase

const uint8_t gk_McciBootloader_BootBase[]
extern

base address of the bootloader in flash (linker-defined).

Referenced by McciBootloader_main().

◆ gk_McciBootloader_BootTop

const uint8_t gk_McciBootloader_BootTop[]
extern

first address past end of the bootloader in flash (linker-defined).

Referenced by McciBootloader_main().

◆ gk_McciBootloader_DataImageBase

const uint8_t gk_McciBootloader_DataImageBase[]
extern

address in flash of the initializer data for the .data section (linker-defined).

Referenced by McciBootloaderPlatform_entry().

◆ gk_McciBootloader_ImageSize

const uint8_t gk_McciBootloader_ImageSize[]
extern

bootloader image size in bytes (linker-computed integer; use as (uint32_t) &gk_McciBootloader_ImageSize[0] to get the value).

◆ gk_McciBootloader_MfgBase

const uint8_t gk_McciBootloader_MfgBase[]
extern

base address of the manufacturing data region in flash (linker-defined).

◆ gk_McciBootloader_MfgTop

const uint8_t gk_McciBootloader_MfgTop[]
extern

first address past end of the manufacturing data region (linker-defined).