主题中讨论的其他部件: TMS320F2.8027万
大家好,
我最近使用LaunchPadXL TMS320F2802x启动了一个项目。 我从一个示例开始,添加了一些简单的测试代码来练习SCIA和I2C接口,一次一个项目文件。
现在,我手中有目标原型硬件,其中包含TMS320F2.802万 MCU。 2.802万的内存图比LaunchPad的2.8027万小。 现在,当我编译相同的代码以在较小的内存空间中运行时,我收到一个错误,指示引用不存在的内存区域,如下所示:
C28xx:加载程序:程序的一个或多个部分落入不可写的内存区域。 这些区域实际上不会写入目标。 检查链接器配置和/或内存映射。
我很难理解不同的链接器命令文件和其他对内存映射的引用。
在make过程中生成的内存映射文件显示RAML0从0x8000开始并扩展到0x85ff,如下所示:
MEMORY CONFIGURATION name origin length used unused attr fill ---------------------- -------- --------- -------- -------- ---- -------- PAGE 0: BEGIN 00000000 00000002 00000002 00000000 RWIX RAMM0 00000050 000003b0 000003b0 00000000 RWIX RAML0 00008000 00000600 00000377 00000289 RWIX FLASHC 003f2000 00002000 00000000 00002000 RWIX IQTABLES 003fe000 00000b50 00000000 00000b50 RWIX IQTABLES2 003feb50 0000008c 00000000 0000008c RWIX IQTABLES3 003febdc 000000aa 00000000 000000aa RWIX BOOTROM 003ff27c 00000d44 00000000 00000d44 RWIX RESET 003fffc0 00000002 00000000 00000002 RWIX
但是,2.802万物理RAML0内存以0x8000开始,仅扩展到0x83ff。
起初,我认为这是因为项目>属性>CCS常规项目选项卡中的设置被设置为变体TMS320F2.8027万:
但是,当我将其更改为2.802万时,我遇到了多个重复的内存范围错误:
在项目完成之前,我需要以多种方式处理内存映射,以便将所有代码都放入可用内存中。 我可以利用一些帮助来了解修改内存映射的适当方法。
我过去曾使用链接程序命令文件进行过一些小的更改,所以我理解它的这一部分,但我不知道为什么链接程序仍然认为RAML0比实际要长。
问题:
1.为什么make文件最后会有一个包含物理部分中不存在的地址空间的内存映射?
2.它在哪里获取链接器命令文件,告诉它每个内存的位置和大小? 更改Variant设置后复制到项目文件夹的链接器命令文件显示RAML0的正确长度。
3.如何将.gel文件纳入方程式?
4.是否有描述内存映射配置体系结构的应用说明? 我正在查找有关操作链接程序cmd文件,gel文件,属性设置等的信息。
谢谢!
罗宾