This commit is contained in:
Valentin Dabstep 2025-05-30 15:53:15 +03:00
parent 31528a4a5b
commit f1d922bd34
4 changed files with 19 additions and 25 deletions

View file

@ -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;