面向嵌入式 Linux 的 DPM 是一种正在发展的技术。由于全球开放源代码领域的开发人员所做的贡献,它的核心技术正在进步,但实际应用仍然必须清除一系列“路障”。
提出一种以ARM+DSP等为硬件基础的嵌入式Linux数控系统设计方案,将数控系统按实时性分为实时模块和非实时模块,采用运动控制芯片DSP保证实时性,ARM-Linux则运行实时性要求不高但功能复杂的数控任务.数控系统硬件上采用主从式双CPU结构,软件架构包括界面层、实时层和非实时层.该方案充分利用了Linux的健壮、开源、应用广泛和运动
依据多连通域图像四邻域跟踪原理设计了嵌入式Linux下的细胞特征提取算法.本算法解决了嵌入式下图像处理API封装不够完善以及硬件资源欠缺的问题.实验结果表明,该算法能够比较准确地提取细胞的周长、面积等特征参数.该算法移植至移动嵌入式设备中解决了传统PC机携带不便的难题.
自由开源软件在嵌入式应用上,受到青睐,Linux日益成为主流的嵌入式操作系统之一。随着摩托罗拉手机A760、IBM智能型手表WatchPad、夏普PDA Zaurus等一款款高性能“智能数码产品”的出现,以及Motolola、三星、MontaVista、飞利浦、Nokia、IBM、SUN等众多国际顶级巨头的加入。
交叉编译的概念在第4章中已经详细讲述过,搭建交叉编译环境是嵌入式开发的第一步,也是必备的一步。搭建交叉编译环境的方法很多,不同的体系结构、不同的操作内容甚至是不同版本的内核,都会用到不同的交叉编译器,而且,有些交叉编译器经常会有部分的bug,这都会导致最后的代码无法正常地运行。因此,选择合适的交叉编译器对于嵌入式开发是非常重要的。
简单地说,Bootloader就是在操作系统内核运行之前运行的一段程序,它类似于PC机中的BIOS程序。通过这段程序,可以完成硬件设备的初始化,并建立内存空间的映射关系,从而将系统的软硬件环境带到一个合适的状态,为最终加载系统内核做好准备。
读者一定都听说过著名的OSI协议参考模型,它是基于国际标准化组织(ISO)的建议发展起来的,从上到下共分为7层:应用层、表示层、会话层、传输层、网络层、数据链路层及物理层。这个7层的协议模型虽然规定得非常细致和完善,但在实际中却得不到广泛的应用,其重要的原因之一就在于它过于复杂。
在Linux中的网络编程是通过socket接口来进行的。人们常说的socket是一种特殊的I/O接口,它也是一种文件描述符。socket是一种常用的进程之间通信机制,通过它不仅能实现本地机器上的进程之间的通信,而且通过网络能够在不同机器上的进程之间进行通信。
在实际情况中,人们往往遇到多个客户端连接服务器端的情况。由于之前介绍的如connet()、recv()和send()等都是阻塞性函数,如果资源没有准备好,则调用该函数的进程将进入睡眠状态,这样就无法处理I/O多路复用的情况了。本节给出了两种解决I/O多路复用的解决方法,这两个函数都是之前学过的fcntl()和select()。
通过实现NTP协议的练习,进一步掌握Linux网络编程,并且提高协议的分析与实现能力,为参与完成综合性项目打下良好的基础。
本章首先概括地讲解了OSI分层结构以及TCP/IP协议各层的主要功能,介绍了常见的TCP/IP协议族,并且重点讲解了网络编程中需要用到的TCP和UDP协议,为嵌入式Linux的网络编程打下良好的基础。
操作系统是通过各种驱动程序来驾驭硬件设备的,它为用户屏蔽了各种各样的设备,驱动硬件是操作系统最基本的功能,并且提供统一的操作方式。设备驱动程序是内核的一部分,硬件驱动程序是操作系统最基本的组成部分,在Linux内核源程序中也占有60%以上。因此,熟悉驱动的编写是很重要的。
设备驱动程序可以使用模块的方式动态加载到内核中去。加载模块的方式与以往的应用程序开发有很大的不同。以往在开发应用程序时都有一个main()函数作为程序的入口点,而在驱动开发时却没有main()函数,模块在调用insmod命令时被加载,此时的入口点是init_module()函数,通常在该函数中完成设备的注册。
FS2410开发板的S3C2410处理器具有117个多功能通用I/O(GPIO)端口管脚,包括GPIO 8个端口组,分别为GPA(23个输出端口)、GPB(11个输入/输出端口)、GPC(16个输入/输出端口)、GPD(16个输入/输出端口)、GPE(16个输入/输出端口)、GPF(8个输入/输出端口)、GPH(11个输入/输出端口)。
块设备通常指一些需要以块(如512字节)的方式写入的设备,如IDE硬盘、SCSI硬盘、光驱等。它的驱动程序的编写过程与字符型设备驱动程序的编写有很大的区别。
前面所讲述的驱动程序中都没有涉及中断处理,而实际上,有很多Linux的驱动都是通过中断的方式来进行内核和硬件的交互。中断机制提供了硬件和软件之间异步传递信息的方式。硬件设备在发生某个事件时通过中断通知软件进行处理。中断实现了硬件设备按需获得处理器关注的机制,与查询方式相比可以大大节省CPU资源的开销。
LED和蜂鸣器是最简单的GPIO的应用,都不需要任何外部输入或控制。按键同样使用GPIO接口,但按键本身需要外部的输入,即在驱动程序中要处理外部中断。按键硬件驱动原理图如图11-7所示。
该实验是编写最简单的字符驱动程序,这里的设备也就是一段内存,实现简单的读写功能,并列出常用格式的Makefile以及驱动的加载和卸载脚本。读者可以熟悉字符设备驱动的整个编写流程。
本章主要介绍了嵌入式Linux设备驱动程序的开发。首先介绍了设备驱动程序的概念及Linux对设备驱动的处理,这里要明确驱动程序在Linux中的定位。
华清远见为您带来经典教程:嵌入式Linux应用程序开发