From fa8669b0092240642af78e84c0e89f596444fdad Mon Sep 17 00:00:00 2001 From: tao_z <tzj0429@163.com> Date: Sun, 29 May 2022 12:05:33 +0800 Subject: [PATCH] 修改vettable为flash,并更新ld文件 --- xl6600_flash.ld | 4 +--- Application/source/fbl_ap.c | 16 +++++----------- 2 files changed, 6 insertions(+), 14 deletions(-) diff --git a/Application/source/fbl_ap.c b/Application/source/fbl_ap.c index 784deb3..d8c94d2 100644 --- a/Application/source/fbl_ap.c +++ b/Application/source/fbl_ap.c @@ -3,7 +3,7 @@ #include "xl_nvic.h" #include <string.h> __IO uint8_t ProgramRequest[8] __attribute__((section(".noinit_bootReqFlag_ram"))); -__IO uint32_t VectorTable[99] __attribute__((section(".RAMVectorTable"))); +// __IO uint32_t VectorTable[99] __attribute__((section(".RAMVectorTable"))); void FblSetFblProgramRequestFlag(void) { @@ -40,17 +40,11 @@ { void (*pAppFun)(void); uint32_t JumpAddr; - JumpAddr = (void (*)(void))(*((uint32_t *)((APPLSTART_OFFSET + (uint32_t)4)))); - pAppFun = (void (*)(void))JumpAddr; + JumpAddr = (*((__IO uint32_t *)((APPLSTART_OFFSET + (uint32_t)4)))); + pAppFun = (void (*)(void))(JumpAddr); __set_MSP(*(__IO uint32_t *)APPLSTART_OFFSET); - /* Copy application vector table to RAM */ - (void)memcpy((void *)VectorTable, (void *)APPLSTART_OFFSET, sizeof(VectorTable)); - - __asm volatile("cpsid i"); // disable all interrupt Ostick_ReInit(); - /* Relocate vector table in SRAM at the adress 0x20000000 */ - NVIC_SetVectorTable(NVIC_VectTab_RAM, 0); // set vector table at start of ram ((uint32_t)0x20000000) - - (*pAppFun)(); // jump + NVIC_SetVectorTable(NVIC_VectTab_FLASH, APPLSTART_OFFSET); + pAppFun(); // jump } diff --git a/xl6600_flash.ld b/xl6600_flash.ld index 072b2d4..5f92114 100644 --- a/xl6600_flash.ld +++ b/xl6600_flash.ld @@ -43,8 +43,7 @@ FLASH (rx) : ORIGIN = 0x00000000, LENGTH = 256K CRAM (xrw) : ORIGIN = 0x1FFFE800, LENGTH = 6K DRAM (xrw) : ORIGIN = 0x20000000, LENGTH = 18K - RAM_VECT_TBL (xrw) : ORIGIN = 0x20000000, LENGTH = 0x200 - FALSH_DRIVER_RAM (xrw):ORIGIN = 0x20000200, LENGTH = 0x100 + FALSH_DRIVER_RAM (xrw):ORIGIN = 0x20000000, LENGTH = 0x100 BOOTFLAG (xrw) : ORIGIN = 0x20000300, LENGTH = 0x100 FLASH_BOOT (rx) : ORIGIN = 0x0000000, LENGTH = 48K @@ -65,7 +64,6 @@ . = ALIGN(8); } >BOOTFLAG - .RAMVectorTable : {KEEP(*(.RAMVectorTable))} > RAM_VECT_TBL .flashdriver_ram : {KEEP(*(.flashdriver_ram))} > FALSH_DRIVER_RAM -- Gitblit v1.8.0