目前在在IAP功能,FLASH编程使用BLOCK编程代码,这样就需要RAM中执行CODE,按照固件库说明 允许RAM中执行,具体如下:
#if !defined (RAM_EXECUTION)
#define RAM_EXECUTION (1)
#endif /* RAM_EXECUTION */
但是执行到FLASH_ProgramBlock(u32BlockAddr, FLASH_MEMTYPE_PROG, FLASH_PROGRAMMODE_STANDARD, pBuf);
就会重启死机,编译的时候出现如下警告:
Warning[Ta005]: Library call (?mul32_l0_l0_l1) from within a __ramfunc function E:\工程项目\ZBS-II\软件工程\STM8\BL\Lib\STM8S_StdPeriph_Driver\src\stm8s_flash.c 659
Warning[Ta005]: Library call (?add32_l0_l0_l1) from within a __ramfunc function E:\工程项目\ZBS-II\软件工程\STM8\BL\Lib\STM8S_StdPeriph_Driver\src\stm8s_flash.c 659
Warning[Ta005]: Library call (?epilogue_l2) from within a __ramfunc function E:\工程项目\ZBS-II\软件工程\STM8\BL\Lib\STM8S_StdPeriph_Driver\src\stm8s_flash.c 685
Warning[Ta005]: Library call (?mul32_l0_l0_l1) from within a __ramfunc function E:\工程项目\ZBS-II\软件工程\STM8\BL\Lib\STM8S_StdPeriph_Driver\src\stm8s_flash.c 607
Warning[Ta005]: Library call (?add32_l0_l0_l1) from within a __ramfunc function E:\工程项目\ZBS-II\软件工程\STM8\BL\Lib\STM8S_StdPeriph_Driver\src\stm8s_flash.c 607
Warning[Ta005]: Library call (?epilogue_l2) from within a __ramfunc function E:\工程项目\ZBS-II\软件工程\STM8\BL\Lib\STM8S_StdPeriph_Driver\src\stm8s_flash.c 627
Warning[Ta005]: Library call (?dec32_l1_l1) from within a __ramfunc function E:\工程项目\ZBS-II\软件工程\STM8\BL\Lib\STM8S_StdPeriph_Driver\src\stm8s_flash.c 545
编译器是IAR FOR STM8 ,固件库V2.1.0。
请教IAR 下正确RAM中运行的方法! |