这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » ADS 难道在仿真情况与下载运行时,ADS编译的会结果不一样?

共2条 1/1 1 跳转至

ADS 难道在仿真情况与下载运行时,ADS编译的会结果不一样?

院士
2006-09-17 18:14:16     打赏
ADS 难道在仿真情况与下载运行时,ADS编译的会结果不一样?



关键词: 道在     仿真     情况     下载     运行时     编译     结果     不一样    

院士
2006-12-22 22:43:00     打赏
2楼
问 定义了一个数组,如:unsigned char logodata[5] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF};在仿真情况下一切正常,但下载运行后从超级终端显示一看,已经不是这些数了。原先以为程序中把它修改了,但情况似乎不是,因为定义成常数形式就不会。如下:
const unsigned char logodata[5] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF};

请教各位:何解??? 1: 版主也来提问你是版主,也来提问?

   你的这两个数组都是C的枚举类型,在普通的C里是相同的(如TURBO C,VC),但在单片机(包括ARM)里就不同了,unsigned char logodata[5] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF}数据存放在RAM里,const unsigned char logodata[5] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF}数据存放在flash里,在单片机ARM里定义枚举类型必须用第二种方式,否则就有问题了.

 不知我说的对不对,请版主指教.

2: 斑竹也不是万金油 3: 是不是你的程序修改了,我的不会啊 4: 不疑问就问嘛!难道还装懂?在ARM当中,如果定义成const则会被定义在RO区域,否则定位在RW区域。但无论你是RO还是RW及ZI区域的数据最终都会被写到FLASH中,当启动后再通过Bootload将它们都复制到RAM中,所以如果想修改它们,无论你是定位在RO还是RW都会被修改。
5: 你看看C的汇编代码你看看C的汇编代码就知道了,不要太固执 6: 我同意metersnet的观点设置成const,数据存放在flash,数组就不能被修改,(当然,如果版主较真,非要用iap修改除外).
如果数据放在RAM,当然可以修改了.如果数据可以修改,你定义这个枚举类型有个屁用!!直接给他赋值不就行了. 7: 看来阿南学东西比较死板,不够灵活 看看C的汇编代码 8: 后来有一些数据用const定义,也被修改了!其实情况是这样的:是我的Bootload出现了问题。它没有将Flash中的所有数据都复制到SDRAM中,超初设计从Flash中读的最大是256K,但RO、RW及ZI总共的数据已超过300多K,但RO没有超过256K,所以程序还能正常运行,只是定位在RW时的数据出现问题。后来定位在RO时也出现问题,是因为RO也超过了256K。 9: 我早质疑过阿南的版主身份是不是“走关系”走来的?


共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]