Fix boot
This commit is contained in:
parent
31528a4a5b
commit
f1d922bd34
4 changed files with 19 additions and 25 deletions
|
@ -7,6 +7,8 @@
|
|||
STM32_CAN Can(CAN2, DEF);
|
||||
|
||||
volatile bool fw_update = false;
|
||||
volatile bool app_valid = false;
|
||||
|
||||
volatile uint32_t fw_size = 0;
|
||||
volatile uint16_t fw_crc = 0;
|
||||
volatile uint32_t jump;
|
||||
|
@ -25,9 +27,7 @@ bool verify_firmware();
|
|||
void send_ack(uint8_t status);
|
||||
|
||||
void setup() {
|
||||
// Инициализация периферии
|
||||
SystemInit();
|
||||
SystemClock_Config();
|
||||
|
||||
Serial.setRx(HARDWARE_SERIAL_RX_PIN);
|
||||
Serial.setTx(HARDWARE_SERIAL_TX_PIN);
|
||||
Serial.begin(115200);
|
||||
|
@ -46,28 +46,25 @@ void setup() {
|
|||
GPIOC->MODER |= GPIO_MODER_MODE10_0 | GPIO_MODER_MODE11_0;
|
||||
GPIOC->ODR &= ~GPIO_ODR_OD11;
|
||||
GPIOC->ODR |= GPIO_ODR_OD10;
|
||||
// // Проверка флага обновления
|
||||
// erase_sector(7);
|
||||
// flash_program_word(FLAG_BOOT,0xDEADBEEF,BYTE32);
|
||||
// flash_record = load_params();
|
||||
// write_param(firmw,UPDATE_FLAG);
|
||||
|
||||
flash_record = load_params();
|
||||
// write_param(addr_id,33);
|
||||
// flash_record = load_params();
|
||||
|
||||
|
||||
/* Добавить проверку адреса, т.е во время отправки запроса прошивки по CAN
|
||||
мы сохраняем как флаг, так и аддрес устройства к которому будет обращатлься во
|
||||
время прошивки */
|
||||
|
||||
if(flash_record[firmw].value == UPDATE_FLAG) {
|
||||
fw_update = true;
|
||||
for(int i = 0; i < 5;i++){
|
||||
GPIOC->ODR ^= GPIO_ODR_OD10; // Индикация обновления
|
||||
delay(100);
|
||||
}
|
||||
write_param(firmw,0); //reset flasg
|
||||
erase_flash_pages();
|
||||
} else {
|
||||
jump_to_app();
|
||||
}
|
||||
else
|
||||
jump_to_app();
|
||||
|
||||
GPIOC->ODR |= GPIO_ODR_OD10;
|
||||
}
|
||||
|
||||
|
@ -99,15 +96,13 @@ void process_can_message(const CAN_message_t &msg) {
|
|||
send_ack(0x02);
|
||||
|
||||
}
|
||||
break;
|
||||
|
||||
break;
|
||||
|
||||
case BOOT_CAN_END: // Завершение передачи
|
||||
if(verify_firmware()) {
|
||||
send_ack(0xAA);
|
||||
HAL_Delay(500);
|
||||
// erase_sector(7); // Сброс флага
|
||||
write_param(firmw,0); //reset flasg
|
||||
// erase_sector(7); // Сброс флага
|
||||
NVIC_SystemReset();
|
||||
} else {
|
||||
send_ack(0x55);
|
||||
|
@ -156,7 +151,6 @@ void send_ack(uint8_t status) {
|
|||
Can.write(ack);
|
||||
}
|
||||
|
||||
|
||||
void loop() {
|
||||
if(fw_update) {
|
||||
CAN_message_t msg;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue