2024-07-01 05:56 AM
Hello everyone, I am writing a new firmware received by UART. I use DMA with Interrupt and my new firmware is in .HEX format, I receive it in blocks of 1500 in 1500 bytes, and I have a case that performs the processing of extracting the addresses, crc, cheksum, and the real data and after that calls the businessRules_update_firmware function. I want to write the firmware using the application code itself. However, I have a problem writing after 0x08018000. My microcontroller is category 5, with 192KB and dual-bank. And my application code is running on bank1 and I want to write the new firmware on bank2. I always record correctly from 0x08018000 to 0x080180F0, but I can never record after 0x08018100, what could this be?
The businessRules_updateFirmware function is called within a loop after the data from the .HEX file has been processed.
uint32_t flashAddress = 0x08018000;
2024-07-01 05:57 AM
Hello everyone, I am writing a new firmware received by UART. I use DMA with Interrupt and my new firmware is in .HEX format, I receive it in blocks of 1500 in 1500 bytes, and I have a case that performs the processing of extracting the addresses, crc, cheksum, and the real data and after that calls the businessRules_update_firmware function. I want to write the firmware using the application code itself. However, I have a problem writing after 0x08018000. My microcontroller is category 5, with 192KB and dual-bank. And my application code is running on bank1 and I want to write the new firmware on bank2. I always record correctly from 0x08018000 to 0x080180F0, but I can never record after 0x08018100, what could this be?
The businessRules_updateFirmware function is called within a loop after the data from the .HEX file has been processed.
uint32_t flashAddress = 0x08018000;
2024-07-01 06:11 AM
Instructions here on how to properly post source code - and other tips:
2024-07-01 06:13 AM
You already have a thread on this:
https://community.st.com/t5/stm32-mcus-products/stm32l072kz-firmware-update/td-p/687664