更新时间: 2023-01-13
嵌入式Linux的移植
由于嵌入式设备没有足够的内存和存储资源来完成编译过程,通常的方法是在主机上完成针对目标机的代码编译。这样的工具就是交叉编译工具,交叉编译工具集有专门的网站可以下载,并下载针对不同ARM处理器的Linux内核移植补丁。嵌入式Linux是在标准的Linux基础上,经过适当的简化、裁剪,加入一些特定的功能,形成一个精巧、高效、满足特定应用需求的专用(定制)操作系统。它具有用户可裁剪、可配置的特点。NAS系统**重要的是存储,通过对Linux的裁剪,去掉许多通用的功能,使其成为一个专用于存储、精简、高效的操作系统。
Linux设备驱动程序开发
嵌入式系统的差异性决定了系统开发者不但需要进行特定硬件的设计,同时需要编写相关的设备驱动程序,它是内核用于完成对物理设备的控制操作的功能模块。除了CPU、内存以及其他很少的几个部分之外,所有的设备控制操作都必须由被控设备相关的代码,也就是驱动程序来完成。
在Linux中,将各种设备大致分为3种基本类型:字符设备、块设备及网络设备。其中,字符设备是指采用字符流方式访问的设备,如字符终端、串口。对应的字符设备驱动的接口是标准的文件系统调用接口。
块设备是采用数据块方式访问的设备,如IDE硬盘等。由于块设备通常都提供文件系统支持,因此常用的设备访问方式是通过文件来进行的。字符设备和块设备在Linux中都被看成是一种特殊的文件,称为“设备文件”。由于每个设备都至少由文件系统中的一个文件来代表,这样的设备文件在系统中就**确定了对应的设备。网络设备是采用数据包传输方式访问的设备。与前两者不同,Linux采用的方法是给它们分配一个**的名字(比如eth0);同时,内核和网络设备驱动间的通信采用了一套与数据包传输相关的函数,如**常见的套接字(socket)接口。网络设备通过ifconfig系统调用来创建和配置。
其他的还有一些驱动程序不属于以上3类,比如USB等总线驱动。它们一般是作为内核提供的公共服务,和其他驱动联合起来使用。