Jelajahi Sumber

flash 容量小于128k,使用bootloader 升级

Signed-off-by: huhui <huhui@sharkgulf.com>
huhui 5 tahun lalu
induk
melakukan
badff88144
3 mengubah file dengan 10 tambahan dan 0 penghapusan
  1. 5 0
      Application/app/iap.c
  2. 4 0
      Application/bsp/fmc_flash.c
  3. 1 0
      Application/bsp/fmc_flash.h

+ 5 - 0
Application/app/iap.c

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

+ 4 - 0
Application/bsp/fmc_flash.c

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

+ 1 - 0
Application/bsp/fmc_flash.h

@@ -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__ */