Midnight Sun Firmware
Loading...
Searching...
No Matches
bootloader.h
1#pragma once
2
3/************************************************************************************************
4 * @file bootloader.h
5 *
6 * @brief Header file for bootloader
7 *
8 * @date 2025-01-08
9 * @author Midnight Sun Team #24 - MSXVI
10 ************************************************************************************************/
11
12/* Standard library Headers */
13#include <stdint.h>
14
15/* Inter-component Headers */
16
17/* Intra-component Headers */
18#include "bootloader_can.h"
19#include "bootloader_error.h"
20
26extern uint32_t _flash_start;
27extern uint32_t _flash_size;
28extern uint32_t _flash_page_size;
29extern uint32_t _application_start;
30extern uint32_t _application_size;
31extern uint32_t _bootloader_start;
32extern uint32_t _bootloader_size;
33extern uint32_t _sram_start;
34extern uint32_t _sram_size;
35
37#define FLASH_START_ADDRESS_LINKERSCRIPT ((uint32_t)&_flash_start)
38
40#define FLASH_SIZE_LINKERSCRIPT ((size_t)&_flash_size)
41
43#define FLASH_PAGE_SIZE_LINKERSCRIPT ((size_t)&_flash_page_size)
44
46#define APPLICATION_START_ADDRESS ((uint32_t) & _application_start)
47
49#define APPLICATION_SIZE ((size_t) & _application_size)
50
52#define BOOTLOADER_START_ADDRESS ((uint32_t) & _bootloader_start)
53
55#define BOOTLOADER_SIZE ((size_t) & _bootloader_size)
56
58#define SRAM_START_ADDRESS ((uint32_t) & _sram_start)
59
61#define SRAM_SIZE ((size_t) & _sram_size)
62
66typedef enum {
75
79typedef struct {
82 uint32_t bytes_written;
83 uint32_t data_size;
84 uint32_t packet_crc32;
86 uint16_t buffer_index;
90 uint16_t target_nodes;
93
99
106
113
BootloaderError bootloader_run(Boot_CanMessage *msg)
Run the bootloader.
Definition: bootloader.c:259
BootloaderStates
Bootloader State Machine.
Definition: bootloader.h:66
BootloaderError bootloader_init(void)
Initialize the bootloader.
Definition: bootloader.c:27
BootloaderError bootloader_jump_app(void)
Jump application.
Definition: bootloader.c:142
BootloaderError
Bootloader error definitions.
Definition: bootloader_error.h:28
@ BOOTLOADER_JUMP_APP
Definition: bootloader.h:72
@ BOOTLOADER_WAIT_SEQUENCING
Definition: bootloader.h:70
@ BOOTLOADER_DATA_RECEIVE
Definition: bootloader.h:71
@ BOOTLOADER_START
Definition: bootloader.h:69
@ BOOTLOADER_FAULT
Definition: bootloader.h:73
@ BOOTLOADER_UNINITIALIZED
Definition: bootloader.h:67
@ BOOTLOADER_IDLE
Definition: bootloader.h:68
CAN message structure.
Definition: bootloader_can.h:80
Private Bootloader State Storage.
Definition: bootloader.h:79
uint16_t buffer_index
Definition: bootloader.h:86
uintptr_t application_start
Definition: bootloader.h:80
uintptr_t current_write_address
Definition: bootloader.h:81
uint32_t bytes_written
Definition: bootloader.h:82
bool first_byte_received
Definition: bootloader.h:91
uint16_t target_nodes
Definition: bootloader.h:90
uint32_t packet_crc32
Definition: bootloader.h:84
BootloaderError error
Definition: bootloader.h:89
BootloaderStates state
Definition: bootloader.h:88
uint32_t data_size
Definition: bootloader.h:83
uint16_t expected_sequence_number
Definition: bootloader.h:85