From 11d9e85cb74e9153cd184a92d1699e350fe8bc67 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Monda?= Date: Fri, 22 Sep 2017 01:10:29 +0200 Subject: [PATCH] Move kboot related code to shared/kboot.[ch] because it'll be reused by the firmwares of the add-ons. --- left/src/bootloader.c | 21 +-------------------- shared/kboot.c | 12 ++++++++++++ left/src/bootloader.h => shared/kboot.h | 17 +++++++++++++---- 3 files changed, 26 insertions(+), 24 deletions(-) create mode 100644 shared/kboot.c rename left/src/bootloader.h => shared/kboot.h (75%) diff --git a/left/src/bootloader.c b/left/src/bootloader.c index 180c12a..16afbee 100644 --- a/left/src/bootloader.c +++ b/left/src/bootloader.c @@ -1,14 +1,7 @@ +#include "kboot.h" #include "i2c_addresses.h" #include "bootloader.h" -/* bits for enabledPeripherals */ -#define ENABLE_PERIPHERAL_UART (1<<0) -#define ENABLE_PERIPHERAL_I2C (1<<1) -#define ENABLE_PERIPHERAL_SPI (1<<2) -#define ENABLE_PERIPHERAL_CAN (1<<3) -#define ENABLE_PERIPHERAL_USB_HID (1<<4) -#define ENABLE_PERIPHERAL_USB_MSC (1<<7) - __attribute__((used, section(".BootloaderConfig"))) const bootloader_config_t BootloaderConfig = { .tag = 0x6766636B, // Magic Number .enabledPeripherals = ENABLE_PERIPHERAL_I2C, @@ -17,15 +10,3 @@ __attribute__((used, section(".BootloaderConfig"))) const bootloader_config_t Bo .clockFlags = 0xFF, // Disable High speed mode .clockDivider = 0xFF, // Use clock divider (0) }; - -void JumpToBootloader(void) { - uint32_t runBootloaderAddress; - void (*runBootloader)(void *arg); - - /* Read the function address from the ROM API tree. */ - runBootloaderAddress = **(uint32_t **)(0x1c00001c); - runBootloader = (void (*)(void * arg))runBootloaderAddress; - - /* Start the bootloader. */ - runBootloader(NULL); -} diff --git a/shared/kboot.c b/shared/kboot.c new file mode 100644 index 0000000..2127e08 --- /dev/null +++ b/shared/kboot.c @@ -0,0 +1,12 @@ +#include "kboot.h" + +void JumpToKboot(void) { + uint32_t runBootloaderAddress; + void (*runBootloader)(void *arg); + + // Read the function address from the ROM API tree. + runBootloaderAddress = **(uint32_t **)(0x1c00001c); + runBootloader = (void (*)(void * arg))runBootloaderAddress; + + runBootloader(NULL); +} diff --git a/left/src/bootloader.h b/shared/kboot.h similarity index 75% rename from left/src/bootloader.h rename to shared/kboot.h index 3bb6d58..d5721e3 100644 --- a/left/src/bootloader.h +++ b/shared/kboot.h @@ -1,11 +1,21 @@ -#ifndef __BOOTLOADER_H__ -#define __BOOTLOADER_H__ +#ifndef __KBOOT_H__ +#define __KBOOT_H__ // Includes: #include #include +// Macros: + + // bits for bootloader_config_t.enabledPeripherals + #define ENABLE_PERIPHERAL_UART (1<<0) + #define ENABLE_PERIPHERAL_I2C (1<<1) + #define ENABLE_PERIPHERAL_SPI (1<<2) + #define ENABLE_PERIPHERAL_CAN (1<<3) + #define ENABLE_PERIPHERAL_USB_HID (1<<4) + #define ENABLE_PERIPHERAL_USB_MSC (1<<7) + // Typedefs: typedef struct { @@ -24,9 +34,8 @@ uint8_t clockDivider; // Inverted value of the divider to use for core and bus clocks when in high speed mode. } bootloader_config_t; - // Functions: - extern void JumpToBootloader(void); + extern void JumpToKboot(void); #endif