Signed-off-by: huhui <huhui@sharkgulf.com>
@@ -16,6 +16,11 @@ void process_iap_message(can_frame_t *frame, int len){
int data_len = 0;
switch(frame->key) {
case CAN_KEY_IAP_ENTER:
+ if (gd32_flash_size() < 128 * 1024){
+ fmc_iap_write_magic(0xFFFFFFFF);
+ NVIC_SystemReset();
+ while(1);
+ }
protocol_send_ack(frame->head.can_addr, frame->key, 0);
break;
case CAN_KEY_IAP_BEGIN:
@@ -128,6 +128,10 @@ static uint32_t __inline__ _flash_capatity(void){
return capacity;
}
+uint32_t gd32_flash_size(void){
+ return _flash_capatity();
+}
+
static uint32_t _sn_addr(void){
return 0x08000000 + (_flash_capatity() - one_page_size * sn_page_index);
@@ -15,6 +15,7 @@ void fmc_read_image(uint8_t *data, int len);
void fmc_start_read_image(void);
uint32_t fmc_iap_image_addr(void);
void fmc_iap_write_magic(uint32_t magic);
+uint32_t gd32_flash_size(void);
#endif /* _FMC_FLASH_H__ */