主题中讨论的其他器件:HALCOGEN
尊敬的 TI 支持团队:
我正在使用 IAR Workbench 在 RM44L52上处理引导加载程序。尝试将闪存 API 复制到 RAM、以便使用 API 在引导加载程序中对闪存进行编程。 我们基于 halcogen 项目创建了该项目。
根据 IAR 用户指南、我按如下方式更新了链接器文件:
/*------------------ *
定义大小为4G 的存储器内存内存;
define region vectors = mem:[来自0x00000000大小0x00000020];
定义区闪存=内存:[0x00000020大小0x000BFFE0];
define region stack = mem:[从0x08000000开始、大小为0x00001500];
定义区域 RAM =内存:[从0x08001500到0x0801EA9F];
定义区域 FLASH_API = mem:[从0x0801EAA0到0x0801FF7F];
定义区域 selftest_region = mem:[从0x0801FF80到0x0801FF9F];
定义区域平台=内存:[从0x0801FFA0到0x0801FFDF];
定义区域引导=内存:[从0x0801FFE0到0x0801FFFFFFF];
/*-大小-*/
define symbol _size_heap_= 0x800;
定义导出的符号_size_selftest_info__= 0x20;
定义导出的符号_SIZE _platform_info__= 0x40;
define symbol _size_boot_info_= 0x20;
定义导出的符号_SIZE ROM_FLASH_API_INFO__= 0x14E0;
定义块堆、对齐= 8、大小=_size_heap__{};
定义块 selftest_info、对齐= 4、大小=_size_selftest_info__{section .no_selftest};
定义块 platform_info、对齐= 4、大小=_size_platform_info__{section .no_platform};
定义块 boot_info,使对齐= 4,大小=_size_boot_info__{};
定义大小= 6K{}的块堆栈;
通过副本{readwrite}进行初始化;
通过复制{readonly 对象 bl_flash.o、readonly 对象*。obj (F021_API_CortexR4_LE.lib)}进行初始化;
不要初始化{readwrite section .noinit、section .no_seltest、section .no_platform};
放入向量{readonly section .intvecs};
置于闪存{readonly}中;
放入 RAM{readwrite};
放入 RAM{block heap};
置于 FLASH_API{readonly 对象 bl_flash.o、readonly 对象*。obj (F021_API_CortexR4_LE.lib)};
放入 flash_API{readwrite object bl_flash.o、readwrite object *。obj (F021_API_CortexR4_LE.lib)};
置于 selftest_region{block selftest_info};
置于平台{block platform_info}中;
放入引导{block boot_info};
置于堆栈{block stacks}的开头;
定义导出的符号 StackModeSVC = START (STACK);
定义导出的符号 StackModeFIQ =(StackModeSVC)+ 1K;
定义导出的符号 StackModeIRQ =(StackModeFIQ)+ 1K;
定义导出的符号 StackModeABT =(StackModeIRQ)+ 1K;
定义导出的符号 StackModeUND =(StackModeABT)+ 1K;
定义导出的符号 StackModeSYS =(StackModeUND)+ 1K;
/*------------------ *
通过这种更改、在.map 文件中、我能够看到与闪存库相关的对象被复制到 RAM、即 FLASH_API。 但是、当我下载调试时、我收到了有关的警告和错误
"闪存下载警告:4414字节中的4414字节来自数据记录代码:[0X0801ea0、0X0801FBDD]将不会被闪存"
此外、如果我检查 FLASH_API 区域中的存储器、则内容全部为零。
我想知道在调用__cmain()之前,我是否应该在 sys_startup.c 中添加一些内容?
我看到了 TI 引导加载程序示例、有 一个_copyAPI 2RAM_()的汇编调用;但不确定、由于我们正在使用 IAR、IAR 链接器文件配置是否会将所有内容复制到 RAM?
我们是否错过了任何步骤?
此致、
Tracy