你好:
我看了AM335X的TRM,有些疑问(第一次接触ARM):
1. 通过设定SYSBOOT可以指定启动方式, 对于这个启动方式,是不是只是指MLO的存储地方,而不是指u-boot.img和ulmage的地方。
例如,我设定AM335X从NOR启动,那么等AM335X从NOR启动后,那么我是否可以指定AM335X从SD卡,或是NAND FLASH,或是UART,或是从网口等地方获取u-boot.img. 对于ulmage也是类似的?(如果是这样的,是不是只要在编译U-BOOT的时候,指定一下U-BOOT需要从哪里启动就可以了?)
2. 对于AM335X,之所以需要用到MLO,是因为内部的RAM不够大,那么如果我设定为XIP的模式,或是设定为外部快速启动的模式,是不是可以不用编译出MLO,而直接用u-boot.img引导内核?
3 我想问下,对于XIP和快速外部启动,有什么不一样的吗?他们差别大吗?
4. 对于编译出来的u-boot.bin和u-boot.img,两个文件,有什么不同?我看了就多了一个64字节的头(主要是写函数的load地址,入口地址,文件名等),那么什么时候用到u-boot.img,什么时候用到u-boot.bin?(我目前是从SD卡启动,用的是u-boot.img,但是看论坛上,有些烧入nor flash的,用的是u-boot.bin).
5. 你们有没有专门介绍U-BOOT启动AM335X的文档?(有的话,麻烦给个链接)。
谢谢。
kooking:
1.一般MLO和u-boot是放在一起的,之后的uImage启动方式,可以从u-boot参数进行配置。如果将MLO加载u-boot的方式修改得可变,理论上也是可以不用将二者放在一起的。
2.上电后首先启动的是片上的RBL,RBL引导MLO上片上RAM,而片上RAM比较小,所以需要MLO引导u-boot到DDR,单独的u-boot文件太大,片上RAM放不下
3.你已经说了区别了,一个在片上RAM,一个在DDR,结合第2条的引导方式,MLO和u-boot都会进行一些初始化的工作,两者初始化模块有区别,也有相同的地方,所以之前的很多平台SDK中MLO/x-loader/ubl和u-boot是分开在两个文件夹下各自编译的,后来整合到一个文件夹下编译出两个文件;如果希望快速从片上启动,而且只是利用IC部分模块功能,可以将这些模块的初始化放在MLO中,这样就不需要u-boot,也不需要uImage和系统了,启动速度最快,相对也会更稳定
4.u-boot.bin是不能被MLO/UBL/X-Loader给BOOT起来的,因为u-boot.bin没带有文件头header,而u-boot.img是可以被MLO/UBL/X-Loade给BOOT起来;而很多平台的davinci_uboot.bin是经过u-boot自带的mkimage处理的,所以可以被MLO/UBL/X-Load boot起来,同时u-boot.bin可以被TI提供的uart_load.exe 和uartapp.bin 软件方式(soft boot)启动起来
5.还有什么比TI的wiki更丰富的呢:
http://processors.wiki.ti.com/index.php/AM335x_U-Boot_User's_Guide
tony2:
1.一般都是放在一起的。但是不是必须的。TI自己的代码都是用的放在一起的方式。否则要改一下。
2.可以的。不过更建议你省掉Uboot,而不是MLO
3.NOR毕竟贵一些,容量也小点了吧。
4烧程序都是读进去再写的,中间会转换,啥格式的都能见到。
5sitara-linuxsdk-sdg-06.00.00.00.pdf这个文档里面有
haolin xie:
回复 kooking:
kooking
1.一般MLO和u-boot是放在一起的,之后的uImage启动方式,可以从u-boot参数进行配置。如果将MLO加载u-boot的方式修改得可变,理论上也是可以不用将二者放在一起的。
2.上电后首先启动的是片上的RBL,RBL引导MLO上片上RAM,而片上RAM比较小,所以需要MLO引导u-boot到DDR,单独的u-boot文件太大,片上RAM放不下
3.你已经说了区别了,一个在片上RAM,一个在DDR,结合第2条的引导方式,MLO和u-boot都会进行一些初始化的工作,两者初始化模块有区别,也有相同的地方,所以之前的很多平台SDK中MLO/x-loader/ubl和u-boot是分开在两个文件夹下各自编译的,后来整合到一个文件夹下编译出两个文件;如果希望快速从片上启动,而且只是利用IC部分模块功能,可以将这些模块的初始化放在MLO中,这样就不需要u-boot,也不需要uImage和系统了,启动速度最快,相对也会更稳定
4.u-boot.bin是不能被MLO/UBL/X-Loader给BOOT起来的,因为u-boot.bin没带有文件头header,而u-boot.img是可以被MLO/UBL/X-Loade给BOOT起来;而很多平台的davinci_uboot.bin是经过u-boot自带的mkimage处理的,所以可以被MLO/UBL/X-Load boot起来,同时u-boot.bin可以被TI提供的uart_load.exe 和uartapp.bin 软件方式(soft boot)启动起来
5.还有什么比TI的wiki更丰富的呢:
http://processors.wiki.ti.com/index.php/AM335x_U-Boot_User's_Guide
haolin xie:
回复 tony2:
你好!
tony2 很谢谢你的答复
1. 对于第一个问题,我想我明白了,谢谢。
2. 你的意思是说:我可以用MLO来引导ulmage,而可以不用u-boot.img.
3. XIP和快速外部启动不是都是用到NOR flash吗?那么XIP和快速外部启动的区别是什么?
4. 对于第四点,你意思是不是,不管你是u-boot.bin还是u-boot.img,在烧写的时候,他们都会被转化为一样的格式,都被转化为u-boot.bin?
sddsdssd ssdsd:
回复 haolin xie:
请问在MLO初始化阶段是如何检测到DDR3或者Nandflash处于失效状态的?如果检测到DDR3或者Nandflash处于失效状态请问处理器如何处理?这时可以作为单片机来使用吗?例如这时候如果采用片内RAM把CPU作为单片机来使用可以吗?
如果DDR3或者Nandflash处于失效状态,把AM3358作为单片机来使用,为了充分利用处理器硬件资源,不至于整块板子废掉!有好的解决方案吗?
Yaoming Qin:
回复 sddsdssd ssdsd:
1. DDR是可以配置的,可以查看下面两个连接:
http://processors.wiki.ti.com/index.php/AM335x_DDR_PHY_register_configuration_for_DDR3_using_Software_Leveling
http://processors.wiki.ti.com/index.php/AM335x_EMIF_Configuration_tips
2. 怎么处理,取决于您所用的os。
sddsdssd ssdsd:
回复 Yaoming Qin:
os:linux
请问在MLO初始化阶段是如何检测到DDR3或者Nandflash处于失效状态的?请问如果检测到DDR3失效了,如何处理?
请问AM3358评估板(TMDSSK3358)只有4路LED GPIO,如果我需要多路GPIO如何处理?(包括压力传感器8个数字I/O GPIO输入;2路模拟输出led和激光灯;2路模拟输入)
sddsdssd ssdsd:
回复 sddsdssd ssdsd:
这个页面无法打开?如何解决啊?
Initialization Sequence
The best source for proper initialization sequence is the SPL source code, which can be found from TI's Linux Software Development Kit forAM335x.
http://software-dl.ti.com/dsps/dsps_public_sw/am_bu/sdk/AM335xSDK/latest/index_FDS.htmlNot Found
The requested URL /dsps/dsps_public_sw/am_bu/sdk/AM335xSDK/latest/index_FDS.html was not found on this server.
Yaoming Qin:
回复 sddsdssd ssdsd:
sddsdssd ssdsd
os:linux
请问在MLO初始化阶段是如何检测到DDR3或者Nandflash处于失效状态的?请问如果检测到DDR3失效了,如何处理?
请问AM3358评估板(TMDSSK3358)只有4路LED GPIO,如果我需要多路GPIO如何处理?(包括压力传感器8个数字I/O GPIO输入;2路模拟输出led和激光灯;2路模拟输入)
sddsdssd ssdsd:
回复 Yaoming Qin:
MLO被搬运到OCMC的时候,u-boot,kernel还在SD卡里,所以和系统没有任何关系;当u-boot被搬运到DDR3的时候肯定会check是否加载成功,所以你所说的没有机制去检查DDR是否正常工作是错误的;扩展GPIO完全可以通过串口来解决的,请给出明确的解决方案。