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