免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1061 | 回复: 0
打印 上一主题 下一主题

Vxworks在OMAP L137上的移植笔记(2) ——低级引导 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-12-20 09:44 |只看该作者 |倒序浏览
要跑操作系统免不了需要bootloader,我理解吧,bootloader这类的东西就是为操作系统准备一个好的启动环境,把什么内存啊、 网络都初始化好,让操作系统能够快乐的启动起来。嵌入式系统的硬件环境千变万化,嵌入式工程师常常要面对一个全新的硬件环境,而一个软件系统,往往就像一辆汽车,起步时是最艰难的,起步的好,各方面都初始化的合适,往后的运行就爽歪歪,否则,可能开了两步就熄火了。软件系统的起步就是bootloader,为了能够方便开发,使bootloader与操作系统分离,各公司、组织开发了许多bootloader,比如什么Windows里面用的ntloader、Linux桌面版用得比较多的grub、以及嵌入式系统里面的bootRom、redBoot和现在大红大紫的uboot。我们这篇文章因为要移植Vxwork,其配套的bootRom以后再弄,先尝试uboot的方式吧。
  1. 现在就正式开始引导过程,单片机、微机系统这些基础课程里面我了解到,CPU通电后会从地址0开始执行代码。这个过程在不同的处理器架构中会略有不同,但是思路是一致的。CPU通电后,一切都是新的,它也不知道该干什么,所以只能从0开始执行。那么这个0地址在物理上是对应什么呢,这里就要提到存储器的一点知识了。首先,0地址在RAM的话肯定没问题,CPU读取、执行就OK了,但是成品系统代码肯定要存在非易失的存储器上,这就要用到FLASH,FLASH有很多种,一般用得比较多的就是NOR FLASH、NAND FLASH还有SPI FLASH,他们都有各自的历史和特点,有兴趣的可以看看。其中NOR的特点是接口简单,可以像RAM那样用,同时不容易出错。而NAND的特点是读写速度快,但是接口复杂,不能直接寻址,并且可能会出现坏块,所以需要运用ECC校验技术,总的一个字:烦!SPI FLASH就跟不靠谱了,尽然是串行传输数据,那就注定更加不能直接寻址了。所以这三种FLASH里面只有NOR FLASH上可以直接跑代码,也就是CPU可以直接从NOR FLASH取指令、执行;其他两种FLASH都做不到这一点。针对这个问题,一般有两种思路,一是用ROM或者NOR FLASH固话一段程序,执行引导任务,把uboot什么的之类加载到RAM里面再跑;另外就是像一些2410那样,上电时自动把NAND的前4K数据拷贝到RAM,再从RAM开始跑。
  2. OMAP采用的是前者的方式,在片内的ROM中固化了一个D800K00x系列的RBL(ROM bootloader),然后它会搜索每个FLASH块的第一个Page,如果在这个Page上找到一个Magic Number,会根据这个Magic Number来做出相应的引导动作,例如加载一个UBL(User Bootloader)。在OMAP L137中,由于上电后ARM还处于休眠状态,需要DSP来将其唤醒,所以RBL需要先加载一个DSP上跑的UBL,其中初始化内存、激活ARM,最后开始原地踏步;ARM上电后会从一个默认片内RAM地址开始跑程序,它把uboot这样的高级bootloader加载到片外RAM(片内的太小放不下),再从相应地址开始跑。这样一个过程里,要开发DSP的UBL,ARM的UBL,以及uboot这三级bootloader,UBL代码的模板可以从OMAP L137的PSP(Plateform Support Package)中获取。虽然从模板出发只要做很少的修改,但是还是显得很麻烦。看这个图可能会清楚点:
  3. 为了省事,TI推出了一种AIS机制(Application Image Script),并且有专门的一套工具,D800K00x AISGen,以及raw2coff.exe.这套工具用图形化的方式生成一个镜像,里面包含了上述所有的功能。只要将uboot或者其他bootloader的elf镜像经过raw2coff转化,再用AISGen生成AIS镜像,烧入到OMAP L137的NAND FLASH即可。参考http://focus.ti.com/lit/an/sprab04f/sprab04f.pdf 补充一下:L137的FLASH烧写也挺麻烦的,有个专门的程序,在DSP上面跑的,一般EVM和DEC的开发包里有,叫做nandwrite,在CCS里面加载运行后会弹出对话框,提示输入镜像路径(真神啊!)。
这样前期的引导就算折腾完了,下一篇再说uboot吧。
以下是乱七八糟的参考资料:
http://hi.baidu.com/%D4%C6%D6%D0%F3%EF614/blog/item/d630e7c11b5762db38db4965.html

http://www.seeddsp.com/service/bbs/archiver/?tid-43102.html

http://www.tichinese.com/College/Training/DSP/201003/3826.html

http://www.tichinese.com/College/Training/DSP/201003/3824.html

http://processors.wiki.ti.com/index.php/Restoring/Flashing_OMAP-L137_Bootloaders


您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP