DFU minor: add space around operators for readability
This commit is contained in:
parent
c1bc2527bb
commit
3c6fde5822
14
bootloader.c
14
bootloader.c
|
@ -37,19 +37,19 @@ void main(void)
|
||||||
// check of DFU mode is forced
|
// check of DFU mode is forced
|
||||||
bool dfu_force = false; // to remember if DFU mode is forced
|
bool dfu_force = false; // to remember if DFU mode is forced
|
||||||
// check if a soft boot has been used
|
// check if a soft boot has been used
|
||||||
if (0==(RCC_CSR&0xfc000000)) { // no reset flag present -> this was a soft reset using scb_reset_core() after clearing the flags using RCC_CSR_RMVF, very probably to start the DFU mode
|
if (0 == (RCC_CSR & 0xfc000000)) { // no reset flag present -> this was a soft reset using scb_reset_core() after clearing the flags using RCC_CSR_RMVF, very probably to start the DFU mode
|
||||||
dfu_force = true;
|
dfu_force = true;
|
||||||
} else { // check if the force DFU mode input is set
|
} else { // check if the force DFU mode input is set
|
||||||
// disable SWJ pin to use as GPIO
|
// disable SWJ pin to use as GPIO
|
||||||
#if (GPIO(B)==GPIO(DFU_FORCE_PORT)) && (GPIO(4)==GPIO(DFU_FORCE_PIN))
|
#if (GPIO(B) == GPIO(DFU_FORCE_PORT)) && (GPIO(4) == GPIO(DFU_FORCE_PIN))
|
||||||
// JNTRST pin is used as DFU pin
|
// JNTRST pin is used as DFU pin
|
||||||
rcc_periph_clock_enable(RCC_AFIO); // enable clock for alternate function domain
|
rcc_periph_clock_enable(RCC_AFIO); // enable clock for alternate function domain
|
||||||
gpio_primary_remap(AFIO_MAPR_SWJ_CFG_FULL_SWJ_NO_JNTRST, 0); // keep SWJ enable bit don't use JNTRST
|
gpio_primary_remap(AFIO_MAPR_SWJ_CFG_FULL_SWJ_NO_JNTRST, 0); // keep SWJ enable bit don't use JNTRST
|
||||||
#elif ((GPIO(B)==GPIO(DFU_FORCE_PORT)) && (GPIO(3)==GPIO(DFU_FORCE_PIN))) || ((GPIO(A)==GPIO(DFU_FORCE_PORT)) && (GPIO(15)==GPIO(DFU_FORCE_PIN)))
|
#elif ((GPIO(B) == GPIO(DFU_FORCE_PORT)) && (GPIO(3) == GPIO(DFU_FORCE_PIN))) || ((GPIO(A) == GPIO(DFU_FORCE_PORT)) && (GPIO(15) == GPIO(DFU_FORCE_PIN)))
|
||||||
// JTAG but not SWD pin used as DFU pin
|
// JTAG but not SWD pin used as DFU pin
|
||||||
rcc_periph_clock_enable(RCC_AFIO); // enable clock for alternate function domain
|
rcc_periph_clock_enable(RCC_AFIO); // enable clock for alternate function domain
|
||||||
gpio_primary_remap(AFIO_MAPR_SWJ_CFG_JTAG_OFF_SW_ON, 0); // disable JTAG but keep SWD
|
gpio_primary_remap(AFIO_MAPR_SWJ_CFG_JTAG_OFF_SW_ON, 0); // disable JTAG but keep SWD
|
||||||
#elif ((GPIO(A)==GPIO(DFU_FORCE_PORT)) && (GPIO(14)==GPIO(DFU_FORCE_PIN))) || ((GPIO(A)==GPIO(DFU_FORCE_PORT)) && (GPIO(13)==GPIO(DFU_FORCE_PIN)))
|
#elif ((GPIO(A) == GPIO(DFU_FORCE_PORT)) && (GPIO(14) == GPIO(DFU_FORCE_PIN))) || ((GPIO(A) == GPIO(DFU_FORCE_PORT)) && (GPIO(13) == GPIO(DFU_FORCE_PIN)))
|
||||||
// JTAG and SWD pin used as DFU pin
|
// JTAG and SWD pin used as DFU pin
|
||||||
rcc_periph_clock_enable(RCC_AFIO); // enable clock for alternate function domain
|
rcc_periph_clock_enable(RCC_AFIO); // enable clock for alternate function domain
|
||||||
gpio_primary_remap(AFIO_MAPR_SWJ_CFG_JTAG_OFF_SW_OFF, 0); // disable JTAG and SWD
|
gpio_primary_remap(AFIO_MAPR_SWJ_CFG_JTAG_OFF_SW_OFF, 0); // disable JTAG and SWD
|
||||||
|
@ -57,12 +57,12 @@ void main(void)
|
||||||
rcc_periph_clock_enable(RCC_GPIO(DFU_FORCE_PORT)); // enable clock for GPIO domain
|
rcc_periph_clock_enable(RCC_GPIO(DFU_FORCE_PORT)); // enable clock for GPIO domain
|
||||||
gpio_set_mode(GPIO(DFU_FORCE_PORT), GPIO_MODE_INPUT, GPIO_CNF_INPUT_PULL_UPDOWN, GPIO(DFU_FORCE_PIN)); // set GPIO to input
|
gpio_set_mode(GPIO(DFU_FORCE_PORT), GPIO_MODE_INPUT, GPIO_CNF_INPUT_PULL_UPDOWN, GPIO(DFU_FORCE_PIN)); // set GPIO to input
|
||||||
// pull on the opposite of the expected value
|
// pull on the opposite of the expected value
|
||||||
#if (DFU_FORCE_VALUE==1)
|
#if (DFU_FORCE_VALUE == 1)
|
||||||
gpio_clear(GPIO(DFU_FORCE_PORT), GPIO(DFU_FORCE_PIN)); // pull down to be able to detect when tied to high
|
gpio_clear(GPIO(DFU_FORCE_PORT), GPIO(DFU_FORCE_PIN)); // pull down to be able to detect when tied to high
|
||||||
if (gpio_get(GPIO(DFU_FORCE_PORT), GPIO(DFU_FORCE_PIN))) { // check if output is set to the value to force DFU mode
|
if (gpio_get(GPIO(DFU_FORCE_PORT), GPIO(DFU_FORCE_PIN))) { // check if output is set to the value to force DFU mode
|
||||||
#else
|
#else
|
||||||
gpio_set(GPIO(DFU_FORCE_PORT), GPIO(DFU_FORCE_PIN)); // pull up to be able to detect when tied to low
|
gpio_set(GPIO(DFU_FORCE_PORT), GPIO(DFU_FORCE_PIN)); // pull up to be able to detect when tied to low
|
||||||
if (0==gpio_get(GPIO(DFU_FORCE_PORT), GPIO(DFU_FORCE_PIN))) { // check if output is set to the value to force DFU mode
|
if (0 == gpio_get(GPIO(DFU_FORCE_PORT), GPIO(DFU_FORCE_PIN))) { // check if output is set to the value to force DFU mode
|
||||||
#endif
|
#endif
|
||||||
dfu_force = true; // DFU mode forced
|
dfu_force = true; // DFU mode forced
|
||||||
}
|
}
|
||||||
|
@ -78,7 +78,7 @@ void main(void)
|
||||||
* the second entry in the vector table is the reset address, corresponding to the application start
|
* the second entry in the vector table is the reset address, corresponding to the application start
|
||||||
*/
|
*/
|
||||||
volatile uint32_t* application = (uint32_t*)&__application_beginning; // get the value of the application address symbol (use a register instead on the stack since the stack pointer will be changed)
|
volatile uint32_t* application = (uint32_t*)&__application_beginning; // get the value of the application address symbol (use a register instead on the stack since the stack pointer will be changed)
|
||||||
if (!dfu_force && (((*application)&0xFFFE0000)==0x20000000)) { // application at address seems valid
|
if (!dfu_force && (((*application) & 0xFFFE0000) == 0x20000000)) { // application at address seems valid
|
||||||
SCB_VTOR = (volatile uint32_t)(application); // set vector table to application vector table (store at the beginning of the application)
|
SCB_VTOR = (volatile uint32_t)(application); // set vector table to application vector table (store at the beginning of the application)
|
||||||
__asm__ volatile ("MSR msp,%0" : :"r"(*application)); // set stack pointer to address provided in the beginning of the application (loaded into a register first)
|
__asm__ volatile ("MSR msp,%0" : :"r"(*application)); // set stack pointer to address provided in the beginning of the application (loaded into a register first)
|
||||||
(*(void(**)(void))(application + 1))(); // start application (by jumping to the reset function which address is stored as second entry of the vector table)
|
(*(void(**)(void))(application + 1))(); // start application (by jumping to the reset function which address is stored as second entry of the vector table)
|
||||||
|
|
Loading…
Reference in New Issue