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

void * g_McciBootloader_BssBase
 
void * g_McciBootloader_BssTop
 
void * g_McciBootloader_DataBase
 
void * g_McciBootloader_DataTop
 
uint8_t g_McciBootloader_imageBlock [4096]
 
void * g_McciBootloader_SocRamBase
 
void * g_McciBootloader_SocRamTop
 
void * g_McciBootloader_StackTop
 
const void * gk_McciBootloader_AppBase
 
const void * gk_McciBootloader_AppTop
 
const void * gk_McciBootloader_BootBase
 
const void * gk_McciBootloader_BootTop
 
const void * gk_McciBootloader_DataImageBase
 
const void * gk_McciBootloader_ImageSize
 
const void * gk_McciBootloader_MfgBase
 
const void * gk_McciBootloader_MfgTop
 

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 141 of file mcci_bootloader.h.

Referenced by McciBootloader_main(), and McciBootloaderPlatform_entry().

◆ McciBootloader_main()

◆ McciBootloader_programAndCheckFlash()

Variable Documentation

◆ g_McciBootloader_BssBase

void* g_McciBootloader_BssBase
extern

◆ g_McciBootloader_BssTop

void* g_McciBootloader_BssTop
extern

◆ g_McciBootloader_DataBase

void* g_McciBootloader_DataBase
extern

◆ g_McciBootloader_DataTop

void* g_McciBootloader_DataTop
extern

◆ g_McciBootloader_imageBlock

uint8_t g_McciBootloader_imageBlock[4096]
extern

◆ g_McciBootloader_SocRamBase

void* g_McciBootloader_SocRamBase
extern

◆ g_McciBootloader_SocRamTop

void* g_McciBootloader_SocRamTop
extern

◆ g_McciBootloader_StackTop

void* g_McciBootloader_StackTop
extern

◆ gk_McciBootloader_AppBase

const void* gk_McciBootloader_AppBase
extern

Referenced by McciBootloader_main().

◆ gk_McciBootloader_AppTop

const void* gk_McciBootloader_AppTop
extern

Referenced by McciBootloader_main().

◆ gk_McciBootloader_BootBase

const void* gk_McciBootloader_BootBase
extern

Referenced by McciBootloader_main().

◆ gk_McciBootloader_BootTop

const void* gk_McciBootloader_BootTop
extern

Referenced by McciBootloader_main().

◆ gk_McciBootloader_DataImageBase

const void* gk_McciBootloader_DataImageBase
extern

◆ gk_McciBootloader_ImageSize

const void* gk_McciBootloader_ImageSize
extern

◆ gk_McciBootloader_MfgBase

const void* gk_McciBootloader_MfgBase
extern

◆ gk_McciBootloader_MfgTop

const void* gk_McciBootloader_MfgTop
extern