extracting hardware-specifc CAN from BL (#32)

* extracting hardware-specifc CAN from BL
reusing CAN settings between FW and BL
moving CRC into better location

* spelling M0 stuff as M0 stuff

Co-authored-by: rusefillc <sdfsdfqsf2334234234>
This commit is contained in:
rusefillc 2021-12-27 23:39:02 -05:00 committed by GitHub
parent 17bf809a5f
commit 41105cd29f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 27 additions and 20 deletions

View File

@ -119,7 +119,11 @@ CSRC = $(ALLCSRC) cfg/board.c
# C++ sources that can be compiled in ARM or THUMB mode depending on the global # C++ sources that can be compiled in ARM or THUMB mode depending on the global
# setting. # setting.
CPPSRC = $(ALLCPPSRC) bootloader.cpp $(SRCDIR)/shared/flash.cpp crc.cpp CPPSRC = $(ALLCPPSRC) \
bootloader.cpp \
../port_shared.cpp \
$(SRCDIR)/shared/flash.cpp \
$(SRCDIR)/shared/crc.cpp
# List ASM source files here. # List ASM source files here.
ASMSRC = $(ALLASMSRC) ASMSRC = $(ALLASMSRC)
@ -129,7 +133,7 @@ ASMXSRC = $(ALLXASMSRC)
# Inclusion directories. # Inclusion directories.
INCDIR = $(CONFDIR) $(ALLINC) $(SRCDIR)/shared/ \ INCDIR = $(CONFDIR) $(ALLINC) $(SRCDIR)/shared/ \
../io ../io ../..
# Define C warning options here. # Define C warning options here.
CWARN = -Wall -Wextra -Wundef -Wstrict-prototypes CWARN = -Wall -Wextra -Wundef -Wstrict-prototypes

View File

@ -1,6 +1,5 @@
#include "ch.h"
#include "hal.h"
#include "port_shared.h"
#include "flash.h" #include "flash.h"
#include "io_pins.h" #include "io_pins.h"
@ -37,15 +36,18 @@ void boot_app() {
const uint32_t* appFlash = __appflash_start__; const uint32_t* appFlash = __appflash_start__;
// The reset vector is at offset 4 (second uint32)
uint32_t reset_vector = appFlash[1];
#ifdef STM32F0XX
// copy vector table to sram // copy vector table to sram
// TODO: use __ram_vectors_size__ // TODO: use __ram_vectors_size__
memcpy(reinterpret_cast<char*>(&__ram_vectors_start__), appFlash, 256); memcpy(reinterpret_cast<char*>(&__ram_vectors_start__), appFlash, 256);
// The reset vector is at offset 4 (second uint32) // M0 core version, newer cores do same thing a bit nicer
uint32_t reset_vector = appFlash[1];
// switch to use vectors in ram // switch to use vectors in ram
SYSCFG->CFGR1 |= 3; SYSCFG->CFGR1 |= 3;
#endif
// TODO: is this necessary? // TODO: is this necessary?
//uint32_t app_msp = appLocation[0]; //uint32_t app_msp = appLocation[0];
@ -214,12 +216,6 @@ void RunBootloaderLoop()
} }
} }
static const CANConfig canConfig500 =
{
CAN_MCR_ABOM | CAN_MCR_AWUM | CAN_MCR_TXFP,
CAN_BTR_SJW(0) | CAN_BTR_BRP(5) | CAN_BTR_TS1(12) | CAN_BTR_TS2(1),
};
THD_WORKING_AREA(waBootloaderThread, 512); THD_WORKING_AREA(waBootloaderThread, 512);
THD_FUNCTION(BootloaderThread, arg) THD_FUNCTION(BootloaderThread, arg)
{ {

View File

@ -129,9 +129,3 @@ void SetConfiguration(const Configuration& newConfig)
sizeof(Configuration) sizeof(Configuration)
); );
} }
const CANConfig canConfig500 =
{
CAN_MCR_ABOM | CAN_MCR_AWUM | CAN_MCR_TXFP,
CAN_BTR_SJW(0) | CAN_BTR_BRP(5) | CAN_BTR_TS1(12) | CAN_BTR_TS2(1),
};

View File

@ -0,0 +1,9 @@
#include "port_shared.h"
// board-specific stuff shared between bootloader and firmware
const CANConfig canConfig500 =
{
CAN_MCR_ABOM | CAN_MCR_AWUM | CAN_MCR_TXFP,
CAN_BTR_SJW(0) | CAN_BTR_BRP(5) | CAN_BTR_TS1(12) | CAN_BTR_TS2(1),
};

View File

@ -1,6 +1,7 @@
#pragma once #pragma once
#include "hal.h" #include "hal.h"
#include "port_shared.h"
struct AnalogResult struct AnalogResult
{ {
@ -33,4 +34,3 @@ public:
Configuration GetConfiguration(); Configuration GetConfiguration();
void SetConfiguration(const Configuration& newConfig); void SetConfiguration(const Configuration& newConfig);
extern const CANConfig canConfig500;

View File

@ -0,0 +1,4 @@
#include "ch.h"
#include "hal.h"
extern const CANConfig canConfig500;