最近在用TMS320F28335做项目,编写程序时一直都将程序以及数据分配到0x8000~0xFFFF(SARAM)片区,以往的调试过程中也没遇到什么问题,但是由于这次编写的程序量比较大,这个片区已经存放不下了,因此,前两天我把数据存放到0x3F8000~0x3FBFFF(SARAM)片区,但是CMD文件修改好以后,每次运行程序都会跑飞,不知道是什么原因。
后来我又做了一个测试程序,这个程序内容很少,但是发现一个奇怪的现象,只要包含main.h这个头文件,程序就会跑飞。这个头文件中包含的内容是定义了一些比较大的数组,在调试过程中观察内存数据,发现这些数组中的数据竟然不是初始定义的数值(在程序中没有对这些数组进行任何操作),而是与相应的0x008000区域的数值一样,举例来说,假如数组Data_A实际分配的地址可能是0x3F8100~0x3F8200,运行程序并把Data_A拖到watch窗口中观察,这个数组里的数据数值与地址为0x008100~0x008200的saram区域的数值相同。 |