做的DM6446板子死活启动不了UBL,先以为不支持K9F1G08U0B,换了支持ONFI的MT29F1G08还是不行。没办法硬着头皮啃了几天RBL反汇编,最后终于找到原因。由于UBL必须小于14k,读到UBL信息后有个比较:
5a4c: e0000a9c mul r0, ip, sl
5a50: e3500b0e cmp r0, #14336 ; 0x3800
5a54: 2a000031 bcs 0x5b20; 就这个跳转指令错了,怎么会用bcs?!bcs这是根据进位来判断是否跳转啊,刚好这个时候C=1,直接跳出来了。
比较了一下开发板上的DM6446里的RBL,相差非常大。找到相关指令:
52f4: e0000c96 mul r0, r6, ip
52f8: e3500b0e cmp r0, #14336 ; 0x3800
52fc: 8a000080 bhi 0x5504
这里用的bhi就是对的了。
这种问题真要搞死人啊!
有问题的批号是:
$7C-ICA06HW
TM320DM6446BZWT8
189
没问题的是:
$NA-06A15FW
TMS320DM6446AZWTA
我只知道DM6446A和DM6446B,谁知道这些第一行生产批号的含义?
Eason Wang:
批号的确不同,RBL是有差异的。
请看文档
http://www.deyisupport.com/files/m/davinci_digital_media_processors/3261.aspx
以及类似的问题:
http://www.deyisupport.com/question_answer/dsp_arm/davinci_digital_media_processors/f/39/p/22898/76881.aspx#76881
Eason Wang:
回复 Eason Wang:
http://www.deyisupport.com/question_answer/dsp_arm/davinci_digital_media_processors/f/39/t/23785.aspx
Jianjun Zhang1:
回复 Eason Wang:
那两个贴子我看过了。A与B的区别我清楚,但不应该有指令用错了的bug啊。我怀疑是废片流到市场上来了,所以想让TI的人看看批号。
Jianjun Zhang1:
回复 Jianjun Zhang1:
新买了批号为$NA-34AQJW的TMS320DM6446AZWT启动正常。读RBL与$NA-06A15FW的TMS320DM6446AZWTA相同。 谁手头上有DM6446的板子,读一下0x4000开始的2048words(8192字节),保存为bin,传上来比较一下?
TI的技术人员能否帮忙确认一下这个bug出现的范围有多大?要不然就不敢用TMS320DM6446BZWT8的片子了!
Jianjun Zhang1:
回复 Jianjun Zhang1:
有TI的员工看到吗?这类问题向哪提?
Tuff Li:
回复 Jianjun Zhang1:
芯片版本的含义请参考DM6446 Errata(可以在DM6446的网页上下载)
关于DM6446 RBL的更新,请参考
http://processors.wiki.ti.com/index.php/Determining_compatibility_between_ROM_Bootloader_%28RBL%29_and_Raw_NAND_devices
DM6446 2.3版本之后,UBL是有大小限制,最新的DM6446 PSP已经支持了2.3版本
http://processors.wiki.ti.com/index.php/DaVinci_%28ARM9%29_PSP_Releases#DM644x
Jianjun Zhang1:
回复 Tuff Li:
这个文档早就看过了。关键问题是那个错误的BCS指令导致NAND启动过程退出。我需要你们帮忙确认这个bug,并且了解一下哪些批次有这个bug,修正了没有。
Tuff Li:
回复 Jianjun Zhang1:
我们这边有客户用DM6446 2.3版本的,没有遇到类似问题,我们内部先研究一下回复你
Tuff Li:
回复 Tuff Li:
你是通过仿真器把RBL读出来的吗?
fan chuankang:
也是同样问题。完全一样!
后来这个问题解决了么?