做的DM6446板子死活启动不了UBL,啃了几天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
谁知道这些批号第一行的含义?
|