块设备通常指一些需要以块(如512字节)的方式写入的设备,如IDE硬盘、SCSI硬盘、光驱等。它的驱动程序的编写过程与字符型设备驱动程序的编写有很大的区别。
前面所讲述的驱动程序中都没有涉及中断处理,而实际上,有很多Linux的驱动都是通过中断的方式来进行内核和硬件的交互。中断机制提供了硬件和软件之间异步传递信息的方式。硬件设备在发生某个事件时通过中断通知软件进行处理。中断实现了硬件设备按需获得处理器关注的机制,与查询方式相比可以大大节省CPU资源的开销。
LED和蜂鸣器是最简单的GPIO的应用,都不需要任何外部输入或控制。按键同样使用GPIO接口,但按键本身需要外部的输入,即在驱动程序中要处理外部中断。按键硬件驱动原理图如图11-7所示。
该实验是编写最简单的字符驱动程序,这里的设备也就是一段内存,实现简单的读写功能,并列出常用格式的Makefile以及驱动的加载和卸载脚本。读者可以熟悉字符设备驱动的整个编写流程。
本章主要介绍了嵌入式Linux设备驱动程序的开发。首先介绍了设备驱动程序的概念及Linux对设备驱动的处理,这里要明确驱动程序在Linux中的定位。
目前的桌面机操作系统大多有着美观、操作方便、功能齐全的GUI(图形用户界面),例如KDE或者GNOME。GUI(图形用户界面)是指计算机与其使用者之间的对话接口,可以说,GUI是当今计算机技术的重大成就。它的存在为使用者提供了友好便利的界面,并大大地方便了非专业用户的使用,使得人们从繁琐的命令中解脱出来,可以通过窗口、菜单方便地进行操作。
通过编写一个跳动的“Hello,World”字符串,进一步熟悉嵌入式Qt的开发过程。
这里要讲的线程相关操作都是用户空间中的线程的操作。在Linux中,一般pthread线程库是一套通用的线程库,是由POSIX提出的,因此具有很好的可移植性。
用户选用ARM处理器开发嵌入式产品时,选择合适的开发工具可以加快开发进度,节省开发成本。根据功能不同,ARM应用软件的开发工具分别有编译软件、汇编软件、连接软件、调试软件、评估板、JTAG仿真器和在线仿真器等,目前世界上大约有四十多家公司提供以上不同种类的开发产品。
本章主要讲解了嵌入式Linux的图形编程。首先介绍了几种常见的嵌入式图形界面编程机制,并给出了它们之间的关系。
ARM(Advanced RISC Machines)有三种含义,它是一个公司的名称,是一类微处理器的通称,还是一种技术的名称。
ARM体系结构是CPU产品所使用的一种体系结构,ARM公司开发了一套拥有知识产权的RISC体系结构的指令集。每个ARM处理器都有一个特定的指令集架构,而一个特定的指令集架构又可以由多种处理器实现。
ARM处理器当前有6个产品系列:ARM7、ARM9、ARM9E、ARM10E、ARM11和SecurCore,其中ARM11为最近推出的产品。进一步的产品来自于合作伙伴,例如Intel Xscale ARM7、ARM9、ARM9E、ARM10E是4个通用处理器系列。每个系列提供一套特定的性能来满足设计者对功耗、性能、体积的需求。
表1.3显示了ARM7、ARM9、ARM10及ARM11内核之间属性的比较。有些属性依赖于生产过程和工艺,具体芯片需参阅其芯片手册。
并不是所有的指令都需要上述每一个步骤,但是,多数指令需要其中的多个步骤。这些步骤往往使用不同的硬件功能,例如,ALU可能只在第4步中用到。因此,如果一条指令不是在前一条指令结束之前就开始,那么在每一步骤内处理器只有少部分的硬件在使用。
ARM7系列处理器主要应用于下面一些场合:个人音频设备(MP3播放器、WMA播放器、AAC播放器); 接入级的无线设备;喷墨打印机;数码照相机
ARM内核采用精简指令集结构(RISC,Reduced Instruction Set Computer)体系结构。RISC技术产生于上世纪70年代。其目标是设计出一套能在高时钟频率下单周期执行、简单而有效的指令集,RISC的设计重点在于降低硬件执行指令的复杂度,这是因为软件比硬件容易提供更大的灵活性和更高的智能。
根据内存访问指令的分类,内存访问指令的寻址方式可以分为以下几种。 ① 字及无符号字节的Load/Store指令的寻址方式。 ② 杂类Load/Store指令的寻址方式。 ③ 批量Load/Store指令的寻址方式。 ④ 协处理器Load/Store指令的寻址方式。
ARM处理器内核广泛应用于嵌入式系统和其他行业应用中。为了适应不同系统的需要,ARM采用了灵活多样的存储管理体系。从平板式内存映射到灵活方便的MMU内存管理单元,用户可以根据自己的需要使用不同的存储管理策略。
ARM系统完成I/O功能的标准方法是使用存储器映射I/O。这种方法使用特定的存储器地址。当从这些地址加载或向这些地址存储时,它们提供I/O功能。某些ARM系统也可能有直接存储器访问(DMA,Direct Memory Access)硬件。