描述
开 本: 16开纸 张: 胶版纸包 装: 平装是否套装: 否国际标准书号ISBN: 9787115236579
编辑推荐
荣获51CTO网站主办的2009年度**技术图书奖,网友好评如潮
荣获ZD.NET技术网站主办的2009年度十佳IT图书之一
首版销售达3万册,被china-pub评选进入2009年度技术图书畅销榜TOP50
2010版畅销书**升级,基于**Linux内核和LDD6410平台,本年度*值得期待的驱动开发技术图书
荣获ZD.NET技术网站主办的2009年度十佳IT图书之一
首版销售达3万册,被china-pub评选进入2009年度技术图书畅销榜TOP50
2010版畅销书**升级,基于**Linux内核和LDD6410平台,本年度*值得期待的驱动开发技术图书
内容简介
本书是一本介绍linux设备驱动开发理论、框架与实例的书,本书基于ldd6410开发板,以linux 2.6版本内核为蓝本,详细介绍自旋锁、信号量、完成量、中断顶/底半部、定时器、内存和i/o映射以及异步通知、阻塞i/o、非阻塞i/o等linux设备驱动理论;字符设备、块设备、tty设备、i2c设备、lcd设备、音频设备、usb设备、网络设备、pci设备等linux设备驱动的架构和框架中各个复杂数据架构和函数的关系,并讲解了linux驱动开发的大量实例,使读者能够独立开发各类linux设备驱动。
本书内容全面,实例丰富,操作性强,语言通俗易懂,适合广大linux开发人员、嵌入式工程师参考使用。
本书内容全面,实例丰富,操作性强,语言通俗易懂,适合广大linux开发人员、嵌入式工程师参考使用。
目 录
第1篇 Linux设备驱动入门
第1章 Linux设备驱动概述及开发环境构建
1.1 设备驱动的作用辅
1.2 无操作系统时的设备驱动
1.3 有操作系统时的设备驱动
1.4 Linux设备驱动
1.4.1 设备的分类及特点
1.4.2 Linux设备驱动与整个软硬件系统的关系
1.4.3 Linux设备驱动的重点、难点
1.5 Linux设备驱动开发环境构建
1.5.1 PC上的Linux环境
1.5.2 LDD6410开发板
1.5.3 工具链安装
1.5.4 主机端nfs和trip服务安装
1.5.5 源代码阅读和编辑
1.6 设备驱动Hello World:LED驱动
1.6.1 无操作系统时的LED驱动
1.6.2 Linux下的LED驱动
1.7 全书结构
第2章 驱动设计的硬件基础
2.1 处理器
2.1.1 通用处理器
2.1.2 数字信号处理器
2.2 存储器
2.3 接口与总线
2.3.1 串口
2.3.2 12C
2.3.3 USB
2.3.4 以太网接口
2.3.5 ISA
2.3.6 PCI和cPCI
2.4 CPLD和FPGA
2.5 原理图分析
2.5.1 原理图分析的内容
2.5.2 原理图的分析方法
2.6 硬件时序分析
2.6.1 时序分析的概念
2.6.2 典型硬件时序
2.7 芯片手册阅读方法
2.8 仪器仪表使用
2.8.1 万用表
2.8.2 示波器
2.8.3 逻辑分析仪
2.9 总结
第3章 Unttx内核及内核编程
3.1 Linux内核的发展与演变
3.2 Linux 2.6内核的特点
3.3 Linux内核的组成
3.3.1 Linux内核源代码目录结构
3.3.2 Linux内核的组成部分
3.3.3 Linux内核空间与用户空间
3.4 Linux内核的编译及加载
3.4.1 Linux内核的编译
3.4.2 Kconfi9和Makefile
3.4.3 Linux内核的引导
3.5 Linux下的C编程特点
3.5.1 Linux编码风格
3.5.2 GNUC与ANSIC
3.5.3 do{}while(O)
……
第2篇 Linux设备驱动核心理论
第3篇 Linux设备驱动实例
第4篇 Linux设备驱动调试、移植
参考文献
第1章 Linux设备驱动概述及开发环境构建
1.1 设备驱动的作用辅
1.2 无操作系统时的设备驱动
1.3 有操作系统时的设备驱动
1.4 Linux设备驱动
1.4.1 设备的分类及特点
1.4.2 Linux设备驱动与整个软硬件系统的关系
1.4.3 Linux设备驱动的重点、难点
1.5 Linux设备驱动开发环境构建
1.5.1 PC上的Linux环境
1.5.2 LDD6410开发板
1.5.3 工具链安装
1.5.4 主机端nfs和trip服务安装
1.5.5 源代码阅读和编辑
1.6 设备驱动Hello World:LED驱动
1.6.1 无操作系统时的LED驱动
1.6.2 Linux下的LED驱动
1.7 全书结构
第2章 驱动设计的硬件基础
2.1 处理器
2.1.1 通用处理器
2.1.2 数字信号处理器
2.2 存储器
2.3 接口与总线
2.3.1 串口
2.3.2 12C
2.3.3 USB
2.3.4 以太网接口
2.3.5 ISA
2.3.6 PCI和cPCI
2.4 CPLD和FPGA
2.5 原理图分析
2.5.1 原理图分析的内容
2.5.2 原理图的分析方法
2.6 硬件时序分析
2.6.1 时序分析的概念
2.6.2 典型硬件时序
2.7 芯片手册阅读方法
2.8 仪器仪表使用
2.8.1 万用表
2.8.2 示波器
2.8.3 逻辑分析仪
2.9 总结
第3章 Unttx内核及内核编程
3.1 Linux内核的发展与演变
3.2 Linux 2.6内核的特点
3.3 Linux内核的组成
3.3.1 Linux内核源代码目录结构
3.3.2 Linux内核的组成部分
3.3.3 Linux内核空间与用户空间
3.4 Linux内核的编译及加载
3.4.1 Linux内核的编译
3.4.2 Kconfi9和Makefile
3.4.3 Linux内核的引导
3.5 Linux下的C编程特点
3.5.1 Linux编码风格
3.5.2 GNUC与ANSIC
3.5.3 do{}while(O)
……
第2篇 Linux设备驱动核心理论
第3篇 Linux设备驱动实例
第4篇 Linux设备驱动调试、移植
参考文献
媒体评论
设备驱动程序是嵌入式操作系统的重要模块,也是难点之一,Linux没备驱动程序更以复杂和繁多而著名,本书的作者集多年授课和开发的经验,以简洁的语言和丰富的实例讲述了这一技术,深入浅出,值得一读。 何小庆(北京麦克泰软件技术有限公司董事长) “点亮LED
免费在线读
任何一个计算机系统的运转都是系统中软硬件共同作用的结果,没有硬件的软件是空中楼阁,而没有软件的硬件则只是一堆废铁。硬件是底层基础,是所有软件得以运行的平台,代码最终会落实为硬件上的组合逻辑与时序逻辑。软件则实现了具体应用,它按照各种不同的业务需求而设计,完成了用户的最终诉求。硬件较固定,软件则很灵活,可以适应各种复杂多变的应用。可以说,计算机系统的软硬件互相成就了对方。
但是,软硬件之间同样存在着悖论,那就是软件和硬件不应该互相渗透入对方的领地。为尽可能快速地完成设计,应用软件工程师不想也不必关心硬件,而硬件工程师也难有足够的闲暇和能力来顾及软件。譬如,应用软件工程师在调用套接字发送和接收数据包的时候,不必关心网卡上的中断、寄存器、存储空间、I/0端口、片选以及其他任何硬件词汇;在使用printf()函数输出信息的时候,他不用知道底层究竟是怎样把相应的信息输出到屏幕或者串口。
也就是说,应用软件工程师需要看到一个没有硬件的纯粹的软件世界,硬件必须被透明地呈现给他。谁来实现硬件对应用软件工程师的隐形?这个光荣而艰巨的任务就落在了驱动工程师的头上。
对设备驱动最通俗的解释就是“驱使硬件设备行动”。驱动与底层硬件直接打交道,按照硬件设备的具体工作方式,读写设备的寄存器,完成设备的轮询、中断处理、DMA通信,进行物理内存向虚拟内存的映射等,最终让通信设备能收发数据,让显示设备能显示文字和画面,让存储设备能记录文件和数据。
由此可见,设备驱动充当了硬件和应用软件之间的纽带,它使得应用软件只需要调用系统软件的应用编程接KI(API)就可让硬件去完成要求的工作。在系统中没有操作系统的情况下,工程师可以根据硬件设备的特点自行定义接口,如对串口定义SerialSend()、SerialRecv(),对LED定义LightOn()、LightOff(),对Flash定义FlashWrite()、FlashRead()等。而在有操作系统的情况下,驱动的架构则由相应的操作系统定义,驱动工程师必须按照相应的架构设计驱动,这样,驱动才能良好地整合入操作系统的内核。
驱动程序沟通着硬件和应用软件,而驱动工程师则沟通着硬件工程师和应用软件工程师。目前,随着通信、电子行业的迅速发展,全世界每天都会有大量的新芯片被生产,大量的新电路板被设计,也因此,会有大量设备驱动需要开发。这些驱动,或运行在简单的单任务环境,或运行在VxWorks、Linux、Windows等多任务操作系统环境,发挥着不可替代的作用。
……
但是,软硬件之间同样存在着悖论,那就是软件和硬件不应该互相渗透入对方的领地。为尽可能快速地完成设计,应用软件工程师不想也不必关心硬件,而硬件工程师也难有足够的闲暇和能力来顾及软件。譬如,应用软件工程师在调用套接字发送和接收数据包的时候,不必关心网卡上的中断、寄存器、存储空间、I/0端口、片选以及其他任何硬件词汇;在使用printf()函数输出信息的时候,他不用知道底层究竟是怎样把相应的信息输出到屏幕或者串口。
也就是说,应用软件工程师需要看到一个没有硬件的纯粹的软件世界,硬件必须被透明地呈现给他。谁来实现硬件对应用软件工程师的隐形?这个光荣而艰巨的任务就落在了驱动工程师的头上。
对设备驱动最通俗的解释就是“驱使硬件设备行动”。驱动与底层硬件直接打交道,按照硬件设备的具体工作方式,读写设备的寄存器,完成设备的轮询、中断处理、DMA通信,进行物理内存向虚拟内存的映射等,最终让通信设备能收发数据,让显示设备能显示文字和画面,让存储设备能记录文件和数据。
由此可见,设备驱动充当了硬件和应用软件之间的纽带,它使得应用软件只需要调用系统软件的应用编程接KI(API)就可让硬件去完成要求的工作。在系统中没有操作系统的情况下,工程师可以根据硬件设备的特点自行定义接口,如对串口定义SerialSend()、SerialRecv(),对LED定义LightOn()、LightOff(),对Flash定义FlashWrite()、FlashRead()等。而在有操作系统的情况下,驱动的架构则由相应的操作系统定义,驱动工程师必须按照相应的架构设计驱动,这样,驱动才能良好地整合入操作系统的内核。
驱动程序沟通着硬件和应用软件,而驱动工程师则沟通着硬件工程师和应用软件工程师。目前,随着通信、电子行业的迅速发展,全世界每天都会有大量的新芯片被生产,大量的新电路板被设计,也因此,会有大量设备驱动需要开发。这些驱动,或运行在简单的单任务环境,或运行在VxWorks、Linux、Windows等多任务操作系统环境,发挥着不可替代的作用。
……
评论
还没有评论。