对嵌入式驱动和linux系统调用的理解
一,裸机编程或单片机开发
所谓裸机编程,即指在没有操作系统支持的情况下,直接对硬件进行程序编写。通常情况下,缺乏操作系统的编程环境被定义为裸机编程环境,例如在单片机上进行的开发工作。通过串口将编写的程序传输至单片机芯片内部的Flash存储器中,在运行过程中,单片机会直接调用所编写的代码。此时,程序中通常包含一个while 1的死循环结构,以确保程序持续运行。当前,裸机编程主要应用于低端嵌入式系统领域,如SCM(single chip machine)、各类MCU以及DSP等设备。当然,在编写PC平台的bootloader时也属于裸机编程范畴。
单片机是一种集成化程度极高的芯片产品,它采用大规模集成电路技术将具备数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种输入输出接口及中断系统、定时器/计时器等功能集成于单一芯片之中。此外还包含显示驱动电路、脉宽调制电路、模拟多路转换器以及A/D转换器等模块。单片机开发主要包括:软件设计(在PC端完成代码编写),程序传输(使用编程器或下载线将已编写好的软件加载至单片机),以及硬件系统设计(根据具体任务需求选择相应的硬件组件并构建执行机构,例如控制开关、温度检测和红外通信等)。
二 ,Linux系统开发
基于Linux操作系统开展的产品开发被称为Linux系统开发。其编程方式与裸机开发存在明显差异。裸机开发是在不依赖任何操作系统的前提下直接运行于硬件之上;而操作系统的引入则意味着需要增加更多的代码与功能模块来实现对硬件设备的操作控制,并将其从单纯的“驱使硬件”转变为操作系统内与硬件交互的模块形式。对于应用软件工程师而言,这种转变意味着不再能直接访问底层接口而是通过操作系统提供的API进行交互。由此可见,在存在操作系统的环境下驱动程序成为连接硬件与内核之间的关键桥梁。Linux系统开发框架如图所示:最上层是应用软件层;中间是操作系统层;再往下是驱动程序层;最后是实际的硬件部分。当在特定硬件上运行操作系统时驱动程序位于该架构中连接操作系统和硬件之间的重要位置。
