您好!
我正在编写具有以下配置的应用程序:
CPU 访问引导 ROM 中的闪存 API 代码。
2802x_FlashAPI_BootROMSymbols_v2.01.lib 已链接
SECTIONS { /* Allocate program areas: */ /* The Flash API functions can be grouped together as shown below. The defined symbols _Flash28_API_LoadStart, _Flash28_API_LoadEnd and _Flash28_API_RunStart are used to copy the API functions out of flash memory and into SARAM */ .cinit : > BOOT_IMAGE PAGE = 0 .pinit : > BOOT_IMAGE, PAGE = 0 .text : > BOOT_IMAGE PAGE = 0 codestart : > BEGIN PAGE = 0 ramfuncs : LOAD = BOOT_IMAGE, RUN = RAMM1, LOAD_START(_RamfuncsLoadStart), LOAD_END(_RamfuncsLoadEnd), RUN_START(_RamfuncsRunStart), PAGE = 0
MemCopy(&RamfuncsLoadStart, &RamfuncsLoadEnd, &RamfuncsRunStart); MemCopy(&RamTimerfuncsLoadStart, &RamTimerfuncsLoadEnd, &RamTimerfuncsRunStart);
闪存扇区 A -->用户引导加载程序
闪存扇区 B、C、D ->应用程序代码
用户引导加载程序具有以下特性:
-读取并写入扇区 B、C、D。 不是
- UART protocoll ,中断驱动
-基本定时器中断
-不使用闪存 API 回调
通常、在引导加载程序中、我会将所有内容都放在 RAM 中。
#pragma CODE_SECTION(mainLoop, "ramfuncs");
我为每个函数和 ISR 例程重复此代码。
第一个问题是:如果 Flash_API 驻留在 ROM 中、我真的需要将所有内容放在 RAM 中吗?
尤其是在我写入不同的扇区时。
也许我只需要在 RAM 中放置 ISR?
第二个问题是:CODE_SECTION 只会在 RAM 中放置命名的函数、还是在其实现中调用的函数?