1.为什么使用simple和scf?
simple模式程序是连续存放的,scf是分散装载,所以可以让一段程序在30000000地址,一段在4000000地
址。
2.使用simple的注意点:
不能直接使用esram来跑,因为刚开始入口地址是4000000,然后编译器会按照这个地址来链接,但是
esram一旦remmap之后,只有一个逻辑地址,也就是说只有0x0000000,所以之前链接的代码会不认。
因此需要做一个运行脚本,在axd加载的时候自动执行,脚本的选项在axd下的option->configure interface->session file->run configure script,脚本中把esram映射为0地址,在ads中编译的入口地址即为0x0;这样编译的时候就按照0x0来链接的,这样后面的程序就是ok的。
同理也可以利用运行脚本把sdram映射为0地址,这样所有的程序其实就是在sdram里面跑的了。
运行脚本如下:
主要是配置sdram的参数和remap寄存器
SETMEM 0x11000018 0x1E104177 32
SETMEM 0x11000020 0x0000000b 32(SETMEM 0x11000020 0x80000000 32)
SETMEM 0x1100001C 0x80001860 32
3.可以试一下入口地址为30000000,sdram即使不配置也有2M的空间可以使用,remmap为sdram为0地址。
(当然这里面不能配置sdram,因为不能sdram配置自己)
今天试验是可以的,以前有一个概念搞错了,认为入口地址一定要是系统上电自动执行的地址,其实入口
地址只是编译调试时使用的,即使是之前一直使用的0x4000000也不是系统上电执行的地址,系统上电只
能从norflash或者NandFlash中启动。因此可以使用入口地址为0x30000000
阅读(465) | 评论(0) | 转发(0) |