嵌入式开发基础(1)
LSB Linux Standard Base Linux标准库
LSB规定了Linux发布包的公共属性,包括对象格式、标准库接口、命令和工具的最小集、文件系统布局、系统初始化等。
LSB是一种指导你如何为Linux编程的标准,但不一定要遵守它的准则,它只是提供好的建议。LSB的主要受益者是独立软件开发商,他们只要遵循这个标准就无需针对不同的发行版开发不同的产品,可大大减少成本,LSB就是为了避免重复的浪费的软件开发。
2008年10月,Linux Standard Base 4 即将发布,LSB 4 将包含一个全新应用程序检验器,新的Shell脚本检验器,还包含一个多版本的SDK,开发人员可以使用之前的LSB规则来编写程序而无需更改SDK。
OSDL Open Source Development Labs 开放源代码开发实验室
OSDL是由IBM、Intel以及美国计算机协会在2000年组成的非赢利组织,用以支持Linux的开发人员同用户。OSDL的目标是为Linux以及其他开源项目提供一个协同工作的空间,在这里大家可以共同制定标准,开发兼容Linux平台的应用程序。
OSDL在2002年建立了四个工作组:
* Mobile Linux Initiative (MLI)
* Carrier Grade Linux (CGL)
* Data Center Linux (DCL)
* Desktop Linux (DTL)
CGL是OSDL发布的电信级Linux的标准,其中明确规定了符合电信级客户需求的操作系统和应用的特性,包括系统可靠性、系统可用性、技术标准符合性、平台特性、调试和优化工具、系统性能、硬件兼容性、内核性能、可升级性、安全访问控制机制、保密和完整性机制、用户层完整性检测、日志安全性和保密性、信息完整性和来源可确认性、系统日志和事件日志机制等诸多方面。通过对Linux内核的优化处理,CGL既保留了Linux的灵活性,又支持WatchDog、应用监控、系统日志、主备用硬盘和流量监控等功能,充分满足作为电信级系统的高可用性和稳定性要求。
DTL旨在推进Linux企业级的桌面应用。该项目目前处于筹划期,对外发布的信息较少。受中国大力推进桌面Linux操作系统的影响,OSDL将加大与中国的合作力度,特别是在桌面Linux领域。
DCL致力于制订一个满足数据中心需要的Linux标准。它面向金融行业和制造业等运行关键性务系统。其特征是积极采用新技术,使大型系统能运行关键性业务并承担高风险和重负荷。
BIOS与Bootloader比较
BIOS即Basic Input/Output System 基本输入输出系统,它的全称应该是ROM-BIOS,意思是只读存储器基本输入输出系统。其实,它是一组固化到计算机内主板上一个ROM芯片上的程序,它保存着计算机最重要的基本输入输出的程序、系统设置信息、开机上电自检程序和系统启动自举程序。 BIOS的主要功能是为计算机提供最底层的、最直接的硬件设置和控制。BIOS设置程序是储存在BIOS芯片中的,只有在开机时才可以进行设置。CMOS主要用于存储BIOS设置程序所设置的参数与数据,而BIOS设置程序主要对计算机的基本输入输出系统进行管理和设置,使系统运行在最好状态下,使用BIOS设置程序还可以排除系统故障或者诊断系统问题。
BIOS也可存储在Flash存储器中,通过烧写BIOS程序进行升级。
BIOS是一套复杂的常规系统配置软件的集合。编写BIOS程序需要懂得底层硬件架构的细节知识。当桌面PC开启电源后,BIOS开始控制处理器,它的主要任务是初始化硬件、尤其是内存子系统,从PC机的硬盘载入操作系统。
而在嵌入式系统(假定是非x86架构),一般使用bootloader软件程序来执行BIOS同样的功能。如果是你自己定制的嵌入式系统,那么开发计划中必须包括开发板的bootloader的开发。幸运的是,有几个极好的开源bootloader,可以在项目中进行定制。
Bootloader在电源开启后执行如下主要任务:
· 初始化关键硬件组件,例如SDRAM控制器、I/O控制器和图形控制器等
· 初始化系统内存,为传递控制操作系统做准备
· 分配系统资源,如外设的内存和中断电路
· 提供一个定位和载入操作系统映像的机制
· 载入和传递控制操作系统,传递所需的启动信息,如总内存尺寸、时钟频率、串口速度和底层硬件指定的配置数据
上面只是Bootloader的概述,要记住:如果你的嵌入式系统建立在定制设计平台,作为系统设计者,你必须提供这些bootloader功能;但如果你的嵌入式系统基于商业成品平台,通常bootloader已经包括在开发板中。
Bootloader的启动方式主要有网络启动方式、磁盘启动方式和Flash启动方式。
此方式主要用于主机+开发板,他们之间通过网络来连接,首先开发板的DHCP/BIOS通过BOOTP服务来为Bootloader分配IP地址,配置网络参数,这样才能支持网络传输功能。STB225的U-Boot能够直接配置网络参数,因此可不使用DHCP的方式动态分配IP。接下来开发板的Bootloader通过TFTP服务将内核映像下载到开发板,然后通过网络文件系统来建立主机和开发板之间的文档通信过程(NFS服务),之后的系统更新通常也是使用Bootloader的这种工作模式。工作于此模式下的Bootloader通常都会向终端用户提供一个简单的命令行接口。
此方式主要用于台式机+服务器,这些电脑都使用BIOS引导,并且使用磁盘作为存储介质,有两个重要的启动Linux的LILO和GRUB。
最常用的方式。Flash有NOR Flash和NAND Flash两种。NOR Flash能支持随机访问,故代码能够直接在Flash上执行,Bootloader一般存储在Flash芯片上。另外Flash还存储参数、内核映像和文件系统。这种启动方式和网络启动方式之间的不同之处在于:在网络启动方式中,内核映像和文件系统先放在主机上,然后经过网络传输下载到开发板,而Flash启动方式的内核映像和文件系统则直接放在Flash中。这两种方式在U-Boot的使用过程中都会用到。