以前用的是dsp、单片机之类的处理器,CMD文件看RAM或者FLASH的分布很清晰,这几天看AM437X的开发,有些问题是想不明白,
1.裸机开发的时候,芯片内部的ram和FLASH都是多大啊,地址从哪什么的?看CMD文件或者lds好像就讲了这几个,感觉挺小的,而且没有内部的FLASH么?而且这这跟手册里讲的我自己对应不上。。。。
MEMORY
{
SRAM: o = 0x402F0000 l = 0x00010000 /* 64kB internal SRAM */
L3OCMC0: o = 0x40300000 l = 0x00010000 /* 64kB L3 OCMC SRAM */
M3SHUMEM: o = 0x44D00000 l = 0x00004000 /* 16kB M3 Shared Unified Code Space */
M3SHDMEM: o = 0x44D80000 l = 0x00002000 /* 8kB M3 Shared Data Memory */
DDR0: o = 0x80000000 l = 0x80000000 /* 2GB external DDR Bank 0 */
}
2.我看SD卡启动的MLO文件前8个字节讲了load地址是0x80000000,MLO会把叫APP的裸机应用程序读进去,load地址也是0x80000000,为啥一样啊,
0x80000000这个地址是DDR的地址,不是说ROM Code无法初始化DDR么,为啥MLO会加载在DDR上
3.像2中用sd卡那种启动方式,如果掉电后MLO和APP程序是不是就都没了?
4.用CCS下载的.out文件是把程序下到那个位置了啊?
麻烦各位了,刚整这么高大上的处理器,光启动就给我整的有点懵逼了。。。
yakun song:
我看手册里说的是将可执行程序拷进RAM中运行的,但我看的MLO文件的header里目的地址是0X80000000啊,这个地址不是DDR的地址么,搞不明白,这些个程序到底是怎么分布的?
yakun song:
回复 Shine:
AM437X系列的都没有内部flash么?
还有如图是我打开的starterwave的裸机例程中的一个。那的linker command file是空的,而且也能够正常编译。工程中的lds文件或CMD文件都是灰的,那这样的话这些下载地址都是在那指定的啊?另一个是想明白生成的_ti.bin中前8个字节指定的地址是在程序中哪里定义的,如果要更改的话怎么改(比如我的app程序比较小,不用DDR,我能不能直接改成MLO在SD卡里启动),我不一定非要改,主要是想明白这个过程。
yakun song:
回复 yakun song:
我用CCS加仿真器的方式下载了led灯的例程,会报错误,其实就是说的往0X80000000的地址无法访问,就是没有初始化,所以我很想知道这个lds文件或CMD文件在那指定的,因为如上图所示的截图一样,例程里的配置那一栏的连接文件是空的,而且我手动添加后也没啥用,总感觉换在那个位置有个优先级更高的文件给覆盖了一样,