开发板到了之后,用的是板子自带的bootloader、linux内核和文件系统,在上面跑了几个小程序知道流程和方法后,就想着用自已移植的这些东西了,因为既然要搞底层的东西,我想这些东西还是要学会的。
刚开始踌躇满志,以为不会有什么困难,网上不都多得是文章吗。可实际上,下了N多资料,看了N多文章之后,下到flash中一运行,串口控制台中什么都没有,当时真有点蒙了。其实不成功,倒还没什么,关键是你想继续努力的时候,却没有方向和方法,那真的才是又浪费时间,又郁闷。
不过还得感谢网络,文章看多了,就知道哪些可以直接close,那些可以复制下来慢慢看(我通常都是一气狂搜,一气“另存为”,最后再集中在一起看)。三五天后,终于找到了方向和方法,而且在sdram中运行,成功地在串口输出里看到了u-boot启动信息。
第一次学做u-boot移植,综合别人的方法,总结归纳如下:
1. 先不去考虑nor/nand flash启动,先让u-boot在SDARM中成功运行。
2. 把那个既经典又简单又very useful的调试方法用上,那就是在程序中需要的地方加上led灯指示。
(有时串口没信息,一头雾水,连自己的程序是否在运行都不知道,这里在程序开头加led的代码,最合适不过了)
3. u-boot能在SDRAM中运行后,先考虑nor flash中运行(如果有nor flash的话),因为支持nor
flash比支持nand flash改动少,较容易一些。SMDK2410里也是支持nor flash的,那里用的是AMD公司的。
4. 能在flash 中启动后,增加nand支持,看是否能检测到nand,并在u-boot中用些nand的命令验证驱动是否有问题。
5. 增加代码,让u-boot从nand启动。
6. u-boot可是从nand启动后,增加代码,让代码能自动识别跳线的设置,从相应的flash启动。
以上6步完成之后,关于启动方面的就完成了,如果有需要,再增加这个u-boot的其它功能,比如:网络支持、USB支持等,这些部分如果自已的开发板和SMDK2410不同的话,也是要做移植的。
这个过程我正在进行中,已进行到第三步,前两部的具体实现过程在后面的文章中写出来,只为了自已以后用到的时候,有资料可查,不然忘了又得花时间,相当于做笔记吧。
阅读(1161) | 评论(0) | 转发(0) |