陈莉君

陈莉君的博客

她的个人主页  她的博客

G-bios-嵌入式Linux开发的轻量级环境

陈莉君  2009年11月29日 星期日 23:01 | 3828次浏览 | 12条评论

  在去年的LinuxWorld大会上碰到conke.hu(业界的工作狂人),当他介绍他们的开源项目G-bios时,直觉上感到是不错,但看了其过于简要的文档介绍后,并没有兴趣拿来使用。
  
   再次深入了解G-bios,是暑假在浦东软件园的灵感软件公司。

   G-bios的设计,分为上下两部分,上半部分短小精悍,以最小的代码量(3.6K),完成CPU和Memory的初始化,也就是对嵌入式系统的引导,并顺利装载下半部分。
    下半部分是一个轻量级的开发环境,也就是说,开发人员无需仿真器,就可以对自己的驱动程序进行开发和调试。之所以能达到如此功效,是因为G-bios的下半部分实现了基本的子系统,如文件系统(如YAFFS2、JFFS2、CRAMFS、NFS),中断、网络、Flash、USB,当然还实现了Lib库的主要函数。

   在如此开发环境下,只要调用G-bios的API函数,开发和调试驱动程序就可以像在用户态下开发程序一样方便。不仅如此,驱动程序调试也变得简单有效!设想,如果直接在Linux内核环境下调试驱动程序,因为内核的复杂和牵一发而动全局,因此,调试驱动硬件犹如陷入沼泽地。但是,在G-bios环境下,因为其轻量,不涉及进程管理,亦不涉及内存管理,只涉及与设备和文件相关的主要东西,因此,对驱动硬件的调试的关注点在设备本身,而非内核代码。
  至此,一个疑问会扑面而来,G-bios下开发的驱动程序与kernel下的有何关联?我们所有的辛苦不是为了摘星星而是为了揽月!这就涉及到G-bios的设计思想。

  G-bios的设计借鉴了几乎所有主流Bootloader/BIOS的优点(当然避其了U-Boot的缺点),尤其汲取了Linux内核的设计思想,因此把G-bios下驱动程序移植到Linux Kernel下,就变得只需套用kernel下驱动程序的框架即可。这是因为在G-bios下调试通了驱动程序的硬件接口,犹如穿越一片森林的重重荆棘,冲向最后一道关卡kernel,虽说还有距离,但终究只是戴帽子的问题了。
  实际上,开发出这样一个与U-boot类似但更胜于U-boot的系统,我们一般人是不太相信的。首先我们会怀疑G-Bios是否是其他开源项目的改写,其次会对其实效性打上大大的问号。但是,当我看到conke对其代码精益求精的改写过程,再看到他带领大家在G-bios环境下一句句调试复杂网卡(at91sam926x)驱动程序的过程,到最后,又那么轻易地(当然是对kernel有一定了解的基础上)就把G-bios下的驱动程序移植到kernel下,所有的质疑都化为感叹。
  为了证实G-bios的功能,我翻阅了其源代码。一开始看他编写的代码,尤其是采用的匈牙利命名法,心中有种抵触。因为习惯了Linux kernel代码的风格,主观的认为那种方式就是最好的。可是,在阅读G-bios代码的过程中,当一个个变量在眼前跳出,而在另一个地方看到它时就望名知其意和类型,有恍然相识的感觉;更有甚者,当一个个短小精悍的函数站在眼前(大多函数的代码都只有十几行或几行),对代码的恐慌从心底消失,取而代之的是一种喜悦和继续想读下去的愿望。这才感到,当代码编写变为一种艺术时,文字的描述就显得画蛇添足,代码就是最精确的语言( http://maxwit.googlecode.com )。

评论

我的评论:

发表评论

请 登录 后发表评论。还没有在Zeuux哲思注册吗?现在 注册 !
曾军

回复 曾军  2010年05月10日 星期一 12:39

先收藏一下,等有能力看懂的时候去好好研究一下。

0条回复

张增波

回复 张增波  2009年11月30日 星期一 21:40

感谢陈老师的推荐,收藏下!

0条回复

黄一文

回复 黄一文  2009年11月30日 星期一 11:51

看了一遍g-bios,对我深入理解s3c2410外围设备很有帮助。

0条回复

许德练(阿练)

回复 许德练(阿练)  2009年11月30日 星期一 10:16

这个好像设计非常新颖,有空一定下来试试,学习一下!谢谢陈老师分享!~

0条回复

郎铁山

回复 郎铁山  2009年11月30日 星期一 02:23

不错啊,有时间学习学习

2条回复

  • 陈莉君

    回复 陈莉君  2009年11月30日 星期一 08:49

    他写的那些代码,比如Libc库中基本函数(包括printf,各种字符串操作函数)都简练有效,具有工业级代码的价值,其中关于ARM汇编,Linux内核代码的灵活应用都是教学的好素材。把这些代码放在教材中,比仅仅的文字叙述有效的多。

    1条回复

刘江

回复 刘江  2009年11月29日 星期日 23:09

  • 陈莉君

    回复 陈莉君  2009年11月30日 星期一 08:53

    hu本是浙大学化学的,但因为对计算机的痴迷,自学了计算机相关的所有东西,在intel和AMD干过后,对把自己所学分享出来具有极大的热情。他那种玩命的作事情的方式是我所少见的。如果把他脑子里蕴藏的那些东西,能以文字表达出来,那真是业界的幸运。

    3条回复

      • 刘江

        回复 刘江  2009年11月30日 星期一 14:59

        继哲应该邀请他进哲思来嘛。

        0条回复

      • 郎铁山

        回复 郎铁山  2009年11月30日 星期一 11:44

        希望有机会认识认识这个人,业界应该把他脑子里面的东西分享了 :)

        1条回复

          • Jenny Yao

            回复 Jenny Yao  2010年05月10日 星期一 16:26

            太酷了!尽管我看不懂,但是我还是非常欣赏把知识与人分享的朋友

            0条回复

暂时没有评论

Zeuux © 2024

京ICP备05028076号