现象很奇怪,请坛友帮忙分析可能是什么原因?
1. xboot通过xfel在DRAM中运行正常。
2. 烧写到NAND Flash无法运行,把NAND换成NOR Flash也同样无法运行,串口没有输出。用xfel读出Flash,数据正确。
3. 板子断电重新上电,读NOR Flash持续约100ms。但按reset开关,读Flash只有约18ms,肯定没有读完整。
4. 把另一个spl(https://github.com/szemzoa/sun8iw20_spl)烧写到Flash,spl本身可以运行,看到串口有输出。
离线
烧到flash或tf卡需要带魔术头,关键词 mksunxi.c
这个有的,xboot的makefile里执行了mksunxi。
离线
通过一步步打log,定位到了非常非常奇怪的地方。
在初始化DDR的时候有这么一段代码,就是简单的条件分支、赋值,但走到某个分支就执行不下去了,死在那了!
把这一大堆全注释掉,直接替换成一句赋值`cfg = ac_remapping_tables[5]`,就可以执行下去了。(然后到很后面又在某个地方死了)
暂且不管后面的,单说这一小段平平无奇的代码,什么原因可能导致出错呢?
if(fuse == 8)
{
cfg = ac_remapping_tables[2];
}
else if(fuse == 9)
{
cfg = ac_remapping_tables[3];
}
else if(fuse == 10)
{
//!!! 这里执行不下去了
if(chipid == 0x6800)
{
cfg = ac_remapping_tables[0];
}
else
{
cfg = ac_remapping_tables[5];
}
}
else if(fuse == 11)
// ......离线