iMX51的代码还是比较成熟的!上次简单描述了下其NAND的BOOT过程,说了要开个文章说MMC启动的,其实我想了想,没这个必要,因为BBG的参考板就是这种启动模式!这个文章主要说明一些我遇到BOOT问题! 其实硬件做了初步的供电测试后,软件就应该协助其尝试跑bootloader了,初步的测试可以使用ATK或者Mfgtool来测试!可以用它们来测试处理器和DDR两个设备,测试NAND,MMC,NOR都可以!看是否可以读写,擦除等!如果可以,说明硬件板子基本可以运行!但是请注意不代表这个板子就可以正常运行!我们当初是因为硬件第一次lay这个LPDDR,没做过,而参考板是DDR2的,所以能基本运行!后来发现在200M的高频下,LPDDR根本不能正确运行!差一点的用ATK烧进去bootloader后,如果BOOT_MODE没有问题,串口可以有输出信息!但是也许就一点信息,就死了!基本就是DDR的问题,请硬件要考虑布线是否按照文档的规则等长,字节交替等防干扰规则布局的!因为LPDDR没有DDR2那么高级,没有ODT这些高级的可以辅助的功能!主要是电源的层,屏蔽层,还有LPDDR那层走线对应的两层要有屏蔽!这样可以保证在高频下,可以正常运行!要不数据会出错的!导致跑的频率只能非常低!我们当初就只能跑80M左右! 后来硬件参照别人的LPDDR重新Lay了一次!后来可以跑180左右了!算是这块没有问题了!一般DDR过了,BOOT在硬件上的问题就算排除了!后面就是bootloader加载起来后的启动过程,我觉得这个不算在这个文章里面的!那是存的软件了! 这里还有一点告诉大家,如果你是调试boot的,那么不要总是怀疑自己软件哪里不对,请也怀疑下是否是硬件问题!但是一般有经验的硬件工程师还是可以的,但是我们不能排除的!请考虑全面点!要不死的一定是你!强调boot没反应,串口没有任何输出,硬件测试供电正常!那一定是boot模式的问题或者boot设备的问题,请硬件和软件协同确保管脚,这个时候一般软件什么要注意的,唯一注意的就是DDR的参数初始化,上篇文章说了bootloader前面要完成的就是DDR的初始化!我们LPDDR的参数做了修改,这个其实要心细就好!一个一个确认!参考51的datasheet关于LPDDR初始化的就可以了!然后结合LPDDR的文档,很容易的!完成后,ATK烧写到NAND或者MMC或者NOR中就可以了!这些软件确保后,起不来就去找BOOT_MODE的原因!请仔细点找找!要有耐心!硬件必须协助软件的!我们当初因为硬件lay的第一板,我们耽误了一个月时间去尝试各种软件LPDDR参数的配置,结果硬件不死心!最后他们不得不承认的!做BOOT工作需要的能力很简单,就是细心,耐心,还有恒心! |
|