CycloneBOOT 2.6.6
Secure Bootloader for ARM Cortex-M MCU
Loading...
Searching...
No Matches
boot.c File Reference

CycloneBOOT 1st Stage Bootloader management. More...

#include "first_stage/boot.h"
#include "first_stage/boot_common.h"
#include "image/image_utils.h"
#include "first_stage/boot_verify.h"
#include "cipher/aes.h"
#include "cipher/cipher_algorithms.h"
#include "cipher_modes/cbc.h"
#include "security/cipher.h"

Macros

#define TRACE_LEVEL   CBOOT_TRACE_LEVEL
 
#define UPDATE_COPY_CHUNK_SIZE   512
 

Functions

void bootGetDefaultSettings (BootSettings *settings)
 Initialize first-stage bootloader settings with default values.
 
cboot_error_t bootInit (BootContext *context, BootSettings *settings)
 Initialize the first-stage bootloader context from user settings.
 
Slot * bootGetActiveSlot (BootContext *context)
 Resolve the active second-stage (BOOT) slot in the primary memory.
 
cboot_error_t bootFsm (BootContext *context)
 Bootloader Task routine.
 
cboot_error_t getSecondStageBlIndex (BootContext *context, uint32_t *index)
 Get the image index of the second stage bootloader.
 
void jumpToSecondStageBl (BootContext *context)
 Branching to the 2nd stage bootloader.
 
cboot_error_t checkForSecondStageBlUpdate (BootContext *context, uint32_t currentIndex, bool_t residentOk, bool_t *updateFound)
 Iterates over the available download slots.
 
cboot_error_t updateSecondStageBl (BootContext *context)
 Install the 2nd stage bootloader update.
 

Detailed Description

CycloneBOOT 1st Stage Bootloader management.

License

SPDX-License-Identifier: GPL-2.0-or-later

Copyright (C) 2021-2026 Oryx Embedded SARL. All rights reserved.

This file is part of CycloneBOOT Open.

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

Author
Oryx Embedded SARL (www.oryx-embedded.com)
Version
2.6.6

Function Documentation

◆ bootFsm()

cboot_error_t bootFsm ( BootContext *  context)

Bootloader Task routine.

Parameters
[in]contextPointer to Bootloader context
Returns
cboot_error_t

◆ bootGetActiveSlot()

Slot * bootGetActiveSlot ( BootContext *  context)

Resolve the active second-stage (BOOT) slot in the primary memory.

Parameters
[in]contextPointer to Bootloader context
Returns
Pointer to the BOOT slot, or NULL if none is configured

◆ bootGetDefaultSettings()

void bootGetDefaultSettings ( BootSettings *  settings)

Initialize first-stage bootloader settings with default values.

Parameters
[in,out]settingsPointer to the bootloader settings

◆ bootInit()

cboot_error_t bootInit ( BootContext *  context,
BootSettings *  settings 
)

Initialize the first-stage bootloader context from user settings.

Parameters
[in,out]contextPointer to the bootloader context
[in]settingsPointer to the user settings
Returns
cboot_error_t

◆ checkForSecondStageBlUpdate()

cboot_error_t checkForSecondStageBlUpdate ( BootContext *  context,
uint32_t  currentIndex,
bool_t  residentOk,
bool_t *  updateFound 
)

Iterates over the available download slots.

Parameters
[in]contextPointer to Bootloader context
Returns
bool_t TRUE or FALSE based on the presence of a bootloader update

◆ getSecondStageBlIndex()

cboot_error_t getSecondStageBlIndex ( BootContext *  context,
uint32_t *  index 
)

Get the image index of the second stage bootloader.

Parameters
[in]contextPointer to Bootloader context
Returns
cboot_error_t

◆ jumpToSecondStageBl()

void jumpToSecondStageBl ( BootContext *  context)

Branching to the 2nd stage bootloader.

Parameters
[in]contextPointer to Bootloader context

◆ updateSecondStageBl()

cboot_error_t updateSecondStageBl ( BootContext *  context)

Install the 2nd stage bootloader update.

Parameters
[in]contextPointer to Bootloader context
Returns
cboot_error_t