免费注册 查看新帖 |

Chinaunix

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

G-bios-嵌入式Linux开发的轻量级环境 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-10-13 13:08 |只看该作者 |倒序浏览
FROM:http://www.linuxforum.net/forum/showthreaded.php?Board=embedded&Number=727392

在去年的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)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP