ADS中 RO base 的设置

纠结了很久的一个问题,对于有些程序RO base设置成0x33f80000编译后下载到板上可以运行;但是如果RO base设置成0x30000000编译照样成功,但是下载到板上就不能运行。。。很纠结!由于是初学,不知道这里的问题到底出在哪里?

 

  后来找到了一个解决此问题的方法:出现上述问题之前利用三星提供的现有文件是从\嵌入式视频\第03阶段 ARM体系结构和ARM编程阶段\代码工具和资料\02 ARM硬件基础与接口技术\代码\armexample\例程中拷贝过来的(包括inc和src文件夹),现在利用的现有文件是从TQ2440_Test_20120110文件夹中拷贝过来的。但是这仅仅是从表面上解决了问题,但不知深层的原因之所在,仍然有待研究。

  笔者又根据两个来源文件的差别,前者文件中有个名为nand_read.c,而后者文件中有个名为nand.c,于是猜想可能是这个文件导致的问题,故而进行了试验。把以前出问题的工程中的nand_read.c替换为nand.c,重新编译后下载到板上,发现可以正常运行了。

  深层原因,有待进一步研究。。。。。

  既然已经确定了是上述两个文件导致的问题,故而笔者对两个文件进行了比较,这才发现了根本性的原因:RdNF2SDRAM( )在两个文件中定义不同

在nand_read.c中

void RdNF2SDRAM( )
{
 U32 i;
 U32 start_addr = 0x0;
 unsigned char * to = (unsigned char *)0x33F80000;

  ……

}

而在nand.c中

 void RdNF2SDRAM( )
{
 U32 i;
 U32 start_addr = 0x0;
 unsigned char * to = (unsigned char *)0x30000000;

  …… 

} 

 这样的话,之前的问题也就都找到了答案,一切疑惑全部烟消云散了。。。纠结了好多天,终于不再纠结了。。。。。。。。。。。。。。。。。。。。

posted @ 2013-04-20 08:44  ITtecman  阅读(440)  评论(0编辑  收藏  举报