注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

易拉罐的博客

心静自然凉

 
 
 

日志

 
 

转 bootloader开发阶段总结  

2011-05-27 22:05:40|  分类: 嵌入式系统 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
 到今天,vivi源代码基本分析完毕。对bootloader有了更深层的认识。在此期间,仔细阅读了毛德操、胡希明先生编著的《嵌入式系统--采用公开源代码和StrongARM/XScale处理器》第七章:嵌入式系统的引导和装入。看了看出版时间,才明白牛人詹荣开或许也受惠于此书。他在IBM Development上发表的那篇《嵌入式bootloader技术内幕》一文,后来在sourceforge上的开源项目jtager,在此书中有详尽的描述。(当然,他们可能是独立研究的。)两者结合起来看,对自己的帮助非常大。
 
    现在看来,bootloader主要的工作量有三个:一是根据开发板,确定硬件初始化部分;二是内存初始化,不过内存检测技术相对比较成熟了;三是读写存储介质,包括nor/nand flash或者其他。设置内核传递参数相对前面还是比较简单的。如果完成这些基本功能,一个比较简单的实现就是blob;vivi虽然也比较小,但是还是比blob大一些,也复杂一些。有了这个基本的框架,如果公司是为了推销自己的SoC,那么会做Demo板,也就是所谓的“公版”,为之开发bootloader,并不打算支持更多的SoC,比如blob,vivi都是这样。他们的功能并不完善,如果后来的维护者想要增强功能,一是在下载手段上下功夫,比如增加tftp下载或者usb下载,二是在支持文件系统方面做工作。另外有机构专门开发并维护bootloader,想要支持尽可能多的SoC,比如uboot,它就可以在软件架构方面更多的考虑可扩展性,可移植性,同时增强上述手段,另外,可以增加monitor功能,在内核尚未移植完成的阶段增加调试手段。
 
    由此形成了对bootloader比较全面的认识。要想继续深入bootloader,那么有下面的工作:
 
    ·提高阅读datasheet,提取有用信息的能力。能够更快的开发出硬件初始化代码。
    ·掌握内存检测算法,能够快速编写。
    ·学习MTD技术,开发存储介质驱动程序。
    ·掌握tag内核参数传递技术。
 
    这些都是具体的细节的工作。在软件架构的学习上,我想还是应该以uboot为主,因为它的可移植性、可扩展性等,都是其他的bootloader不能相比的。要想在基本的简单的bootloader的基础上有所提高,那么就需要深入的去了解学习uboot。在后续的开发中,如果需要自己开发bootloader,那么就以vivi/blob为模型,重新编写;如果仅仅需要移植,而且该SoC并没有自己的bootloader,那么最好还是以uboot最为移植。
 
    bootloader算是比较简单,下点功夫完全掌握并非难事。在bootloader的学习过程中,把相关的基础继续加强巩固。我想,到07年末,这个任务应该可以完成。这次可是充分估计的学习内容的广度和深度了。要想学好,就要学深学透。这部分内容的开发也比较适合自己的知识背景。完成此部分后,再进入内核开发的驱动部分,从外围入手,逐步的深入的学习内核。课题也分配下来了,还需要在应用上做工作。要做的事情很多,但是不要急,慢慢来。还是那句话,这些技术都是非常成熟了,有文档和资料。只要静下心来,就一定能够掌握。所以,学习这些实用技术的同时,还不能忽略专业理论知识的学习。两者结合,才能走得更远。
  评论这张
 
阅读(378)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017