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

CycloneBOOT standalone bootloader state machine. More...

#include <string.h>
#include "standalone/boot.h"
#include "core/mailbox.h"
#include "core/mcu.h"
#include "modules/image/image.h"
#include "modules/security/verify_runtime.h"
#include "debug.h"

Macros

#define TRACE_LEVEL   CBOOT_TRACE_LEVEL
 
#define BOOT_RUNTIME_INTEGRITY_CHECK_ALGO   CRC32_HASH_ALGO
 

Functions

cboot_error_t bootFsm (BootContext *context)
 Runs the bootloader until it boots, resets or fails.
 
void bootGetDefaultSettings (BootSettings *settings)
 Initializes the standalone bootloader settings with default values.
 
cboot_error_t bootInit (BootContext *context, BootSettings *settings)
 Initializes the standalone bootloader context.
 
cboot_error_t bootCheckResidentImage (const Slot *slot)
 Checks the resident image before it is booted. This is a security gate, not a seam: it is deliberately not replaceable.
 
__weak_func void bootApplicationUpdatedHook (void)
 Application updated callback. It is declared weak and may be replaced in the user code space. It runs once a new application has been installed, before the device resets.
 
__weak_func void bootJumpingToApplicationHook (void)
 Pre-jump callback. It is declared weak and may be replaced in the user code space. It runs immediately before the bootloader jumps to the application.
 

Detailed Description

CycloneBOOT standalone bootloader state machine.

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

◆ bootCheckResidentImage()

cboot_error_t bootCheckResidentImage ( const Slot *  slot)

Checks the resident image before it is booted. This is a security gate, not a seam: it is deliberately not replaceable.

Parameters
[in]slotSlot holding the image to be checked
Returns
Error code.

◆ bootFsm()

cboot_error_t bootFsm ( BootContext *  context)

Runs the bootloader until it boots, resets or fails.

Bootloader Task routine.

Parameters
[in,out]contextPointer to the bootloader context
Returns
Error code.

◆ bootGetDefaultSettings()

void bootGetDefaultSettings ( BootSettings *  settings)

Initializes the standalone bootloader settings with default values.

Initialize first-stage bootloader settings with default values.

Parameters
[in,out]settingsPointer to the settings to be initialized

◆ bootInit()

cboot_error_t bootInit ( BootContext *  context,
BootSettings *  settings 
)

Initializes the standalone bootloader context.

Initialize the first-stage bootloader context from user settings.

Parameters
[in,out]contextPointer to the bootloader context
[in]settingsPointer to the bootloader user settings
Returns
Error code.