| | |
| | | } |
| | | |
| | | } |
| | | unsigned short int APP_byte = 0; |
| | | unsigned short int updata_byte = 0; |
| | | uint8_t trx_buf[10] = {0}; |
| | | int test1; |
| | | int aaa; |
| | | uint16_t finalbag; |
| | | int main(void) |
| | | { uint8_t c; |
| | | |
| | | uint8_t zhongjian_shuju[128]; |
| | | //sys_tick_callback_set(systic_time_callback); |
| | | board_clock_run(); |
| | | board_pins_config(); |
| | |
| | | //flash_write_nbytes(FLASH_ID0,APP_CONFIG_IAPFLAG_MAP,(uint8_t*)&tmp,2);//测试用 |
| | | // SPIFlash_Read(SPI_FLASH_ID_0, (HIDO_UINT8*)&tmp, APP_CONFIG_IAPFLAG_MAP, sizeof(tmp)); MK8000修改 |
| | | |
| | | flash_read(FLASH_ID0, APP_CONFIG_IAPFLAG_MAP, (uint8_t*)&tmp, 2); |
| | | while (flash_check_busy(FLASH_ID0)) |
| | | { |
| | | } |
| | | flash_read(FLASH_ID0, APP_1OR2_ADRESS, (uint8_t*)&tmp, 2); |
| | | APP_byte = tmp; |
| | | if(APP_byte==0XDDDD) |
| | | { |
| | | Serial0PutString("进入搬运\r\n"); |
| | | flash_erase(FLASH_ID0, APP_1OR2_ADRESS, 0x1000);//擦除APP |
| | | flash_read(FLASH_ID0, APP_1OR2_ADRESS, (uint8_t*)&tmp, 2); |
| | | APP_byte = tmp; |
| | | if(APP_byte==0XDDDD) |
| | | { |
| | | memcpy((void *)SRAM_BASE, (void *)APP_CONFIG_APPLICATION_ADDRESS, APP_CONFIG_APPLICATION_SIZE);//size太大导致覆盖没法跳转 |
| | | __set_MSP(*(uint32_t *)SRAM_BASE); |
| | | typedef void (*p_entry_t)(void); |
| | | ((p_entry_t) (*(uint32_t *)(SRAM_BASE + 4) + SRAM_BASE))(); |
| | | } |
| | | Serial0PutString("擦除标注位成功\r\n"); |
| | | test1=flash_erase(FLASH_ID0,APP1_ADRESS,FLASH_IAP_CTRL_MAP-APP1_ADRESS); |
| | | if(test1==0) |
| | | { |
| | | finalbag=((FLASH_IAP_CTRL_MAP-APP1_ADRESS)/128)+1; |
| | | for(aaa=0;aaa<finalbag;aaa++) |
| | | { |
| | | time32_reset=0; |
| | | memcpy(&zhongjian_shuju,(void *)(APP2_ADRESS+(aaa*128)),128); |
| | | test1=flash_write_nbytes(FLASH_ID0, (APP1_ADRESS+(aaa*128)), (uint8_t*)&zhongjian_shuju, 128); |
| | | if(test1==0) |
| | | {Serial0PutString("test1=0\r\n");} |
| | | else |
| | | {Serial0PutString("test1=1\r\n");} |
| | | } |
| | | delay_ms(10); |
| | | Serial0PutString("搬运成功,准备重启\r\n"); |
| | | delay_ms(500); |
| | | NVIC_SystemReset(); |
| | | } |
| | | } |
| | | flash_read(FLASH_ID0, APP_CONFIG_IAPFLAG_MAP, (uint8_t*)&tmp, 2); |
| | | updata_byte = tmp;//读取指定地址的值 |
| | | if(updata_byte == 0xAAAA)//判断此地址的值是否为0xAAAA,如果是则升级 |
| | | { |