这样COMMONCALC.O的RO部分在链接时定位在SRAM中。 但是这部分代码还需要程序拷贝到SRAM才能执行。下面是main中的部分代码:
extern char Load$$SRAM$$Base[]; extern char Image$$SRAM$$Base[]; extern unsigned int Image$$SRAM$$Length; extern char Image$$SRAM$$Limit[];
为什么是 声明一个数组呢 而不是直接 extern char Image$$SRAM$$Base; 我知道 Image$$SRAM$$Base其实是代表一个地址
我用过 extern unsigned int Image$$SRAM$$Base 然后 unsigned int a; a=(unsigned int)Image$$SRAM$$Base;
我设置的Image$$SRAM$$Base的值是 0x0c008000; 最后得到的 a 不是 0x0c008000 而是 0x0c008000地址处的内容; 靠 ! 强制类型转换也没用啊 ADS编译器一定要把 Image$$SRAM$$Base当指针用 改都改不过来
当然 声明改成 extern unsigned int Image$$SRAM$$Base[] unsigned int a; a=(unsigned int)Image$$SRAM$$Base; a就得到值 0x0c008000了
这个是编译器问题呢 还是我C学的不好呢···· 前辈帮看看
|