欢迎来到相识电子书!

标签:嵌入式

  • Linux设备驱动开发详解

    作者:宋宝华

    本书是一本介绍Linux设备驱动开发理论、框架与实例的书,本书以Linux 2.6版本内核为蓝本,详细介绍自旋锁、信号量、完成量、中断顶/底半部、定时器、内存和I/O映射以及异步通知、阻塞I/O、非阻塞I/O等Linux 设备驱动理论;字符设备、块设备、TTY设备、IC设备、LCD设备、音频设备、USB设备、网络设备、PCI设备等Linux设备驱动的架构和框架中各个复杂数据架构和函数的关系,并讲解了Linux驱动开发的大量实例,使读者能够独立开发各类Linux设备驱动。本书内容全面,实例丰富,操作性强,语言通俗易懂,适合广大Linux开发人员、嵌入式工程师参考使用。 目录 第1篇 Linux设备驱动入门 第1章 设备驱动概述 1.1 设备驱动的作用 1.2 无操作系统时的设备驱动 1.3 有操作系统时的设备驱动 1.4 Linux设备驱动 1.4.1 设备的分类及特点 1.4.2 Linux设备驱动与整个软硬件系统的关系 1.4.3 编写Linux设备驱动的技术基础 1.4.4 Linux设备驱动的学习方法 1.5 设备驱动的HelloWorld:LED驱动 1.5.1 无操作系统时的LED驱动 1.5.2 Linux系统下的LED驱动 第2章 驱动设计的硬件基础 2.1 处理器 2.1.1 通用处理器 2.1.2 数字信号处理器 2.2 存储器 2.3 接口与总线 2.3.1 串口 2.3.2 I2C总线 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.7.1 万用表 2.7.2 示波器 2.7.3 逻辑分析仪 2.8 总结 第3章 Linux内核及内核编程 3.1 Linux内核的发展与演变 3.2 Linux2.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 Kconfig和Makefile 3.4.3 Linux内核的引导 3.5 Linux下的C编程 3.5.1 Linux程序命名习惯 3.5.2 GNUC与ANSIC 3.5.3 do{}while(0) 3.5.4 goto 3.6 总结 第2篇 Linux设备驱动核心理论 第4章 Linux内核模块 4.1 Linux内核模块简介 4.2 Linux内核模块的程序结构 4.3 模块加载函数 4.4 模块卸载函数 4.5 模块参数 4.6 导出符号 4.7 模块声明与描述 4.8 模块的使用计数 4.9 模块的编译 4.10 模块与GPL 4.11 总结 第5章 Linux文件系统与设备文件系统 5.1 Linux文件操作 5.1.1 文件操作的相关系统调用 5.1.2 C库函数的文件操作 5.2 Linux文件系统 5.2.1 Linux文件系统目录结构 5.2.2 Linux文件系统与设备驱动 5.3 devfs设备文件系统 5.4 udev设备文件系统 5.4.1 udev与devfs的区别 5.4.2 sysfs文件系统与Linux设备模型 5.4.3 udev的组成 5.4.4 udev规则文件 5.4.5 创建和配置udev 5.5 总结 第6章 字符设备驱动 6.1 Linux字符设备驱动结构 6.1.1 cdev结构体 6.1.2 分配和释放设备号 6.1.3 file_operations结构体 6.1.4 Linux字符设备驱动的组成 6.2 globalmem虚拟设备实例描述 6.3 globalmem设备驱动 6.3.1 头文件、宏及设备结构体 6.3.2 加载与卸载设备驱动 6.3.3 读写函数 6.3.4 seek()函数 6.3.5 ioctl()函数 6.3.6 使用文件私有数据 6.4 globalmem驱动在用户空间的验证 6.5 总结 第7章 Linux设备驱动中的并发控制 7.1 并发与竞态 7.2 中断屏蔽 7.3 原子操作 7.3.1 整型原子操作 7.3.2 位原子操作 7.4 自旋锁 7.4.1 自旋锁的使用 7.4.2 读写自旋锁 7.4.3 顺序锁 7.4.4 读-拷贝-更新 7.5 信号量 7.5.1 信号量的使用 7.5.2 信号量用于同步 7.5.3 完成量用于同步 7.5.4 自旋锁vs信号量 7.5.5 读写信号量 7.6 互斥体 7.7 增加并发控制后的globalmem驱动 7.8 总结 第8章 Linux设备驱动中的阻塞与非阻塞I/O 8.1 阻塞与非阻塞I/O 8.1.1 等待队列 8.1.2 支持阻塞操作的globalfifo设备驱动 8.1.3 在用户空间验证globalfifo的读写 8.2 轮询操作 8.2.1 轮询的概念与作用 8.2.2 应用程序中的轮询编程 8.2.3 设备驱动中的轮询编程 8.3 支持轮询操作的globalfifo驱动 8.3.1 在globalfifo驱动中增加轮询操作 8.3.2 在用户空间验证globalfifo设备的轮询 8.4 总结 第9章 Linux设备驱动中的异步通知与异步I/O 9.1 异步通知的概念与作用 9.2 Linux异步通知编程 9.2.1 Linux信号 9.2.2 信号的接收 9.2.3 信号的释放 9.3 支持异步通知的globalfifo驱动 9.3.1 在globalfifo驱动中增加异步通知 9.3.2 在用户空间验证globalfifo的异步通知 9.4 Linux2.6异步I/O 9.4.1 AIO概念与GNUC库函数 9.4.2 使用信号作为AIO的通知 9.4.3 使用回调函数作为AIO的通知 9.4.4 AIO与设备驱动 9.5 总结 第10章 中断与时钟 10.1 中断与定时器 10.2 Linux中断处理程序架构 10.3 Linux中断编程 10.3.1 申请和释放中断 10.3.2 使能和屏蔽中断 10.3.3 底半部机制 10.3.4 实例:S3C2410实时钟中断 10.4 中断共享 10.5 内核定时器 10.5.1 内核定时器编程 10.5.2 实例:秒字符设备 10.6 内核延时 10.6.1 短延迟 10.6.2 长延迟 10.6.3 睡着延迟 10.7 总结 第11章 内存与I/O访问 11.1 CPU与内存和I/O 11.1.1 内存空间与I/O空间 11.1.2 内存管理单元MMU 11.2 Linux内存管理 11.3 内存存取 11.3.1 用户空间内存动态申请 11.3.2 内核空间内存动态申请 11.3.3 虚拟地址与物理地址关系 11.4 设备I/O端口和I/O内存的访问 11.4.1 LinuxI/O端口和I/O内存访问接口 11.4.2 申请与释放设备I/O端口和I/O内存 11.4.3 设备I/O端口和I/O内存访问流程 11.4.4 将设备地址映射到用户空间 11.5 I/O内存静态映射 11.6 DMA 11.6.1 DMA与Cache一致性 11.6.2 Linux下的DMA编程 11.7 总结 第12章 Linux字符设备驱动综合实例 第3篇 Linux设备驱动实例 第13章 Linux块设备驱动 第14章 Linux终端设备驱动 ……
  • Arduino+Android互动智作

    作者:Simon Monk

    《Arduino+Android互动智作》是作者Simon Monk在Arduino应用上的又一次跨越,他采用12个示例项目成功地向读者们展示了如何将Arduino和Android结合起来,以完成许多单靠Arduino或者Android根本无法完成的任务。 对于Arduino爱好者而言,可以通过对本书的学习将Android设备的触摸屏变成一个非常完美的人机交互界面,并且从原本“硬”的方向展开对“软”的探索。而对于Android开发者而言,本书则扩展并丰富了Android系统应用的想象空间,将单纯的人机交互扩展到Android设备与各种传感器的交互。 《Arduino+Android互动智作》适合广大“创客”和电子爱好者自学、培训,也可作为高等院校相关专业及电子设计(制作)大赛的教学用书。
  • ARM嵌入式系统开发

    作者:斯洛斯

    《ARM嵌入式系统开发:软件设计与优化》从软件设计的角度,全面、系统地介绍了ARM处理器的基本体系结构和软件设计与优化方法。内容包括:ARM处理器基础;ARM/Thumb指令集;C语言与汇编语言程序的设计与优化;基本运算、操作的优化;基于ARM的DSP;异常与中断处理;固件与嵌入式OS;cache与存储器管理;ARMv6体系结构的特点等。全书内容完整,针对各种不同的ARM内核系统结构都有详尽论述,并有大量的例子和源代码。附录给出了完整的ARMv4/v5/Thumb指令的功能、编码、周期定时以及汇编参考。
  • Linux C编程一站式学习

    作者:宋劲杉

    本书有两条线索,一条线索是以Linux平台为载体全面深入地介绍C语言的语法和程序的工作原理,另一条线索是介绍程序设计的基本思想和开发调试方法。本书分为两部分:第一部分讲解编程语言和程序设计的基本思想方法,让读者从概念上认识C语言;第二部分结合操作系统和体系结构的知识讲解程序的工作原理,让读者从本质上认识C语言。. 本书适合做零基础的初学者学习C语言的第一本教材,帮助读者打下牢固的基础。有一定的编程经验但知识体系不够完整的读者也可以对照本书查缺补漏,从而更深入地理解程序的工作原理。本书最初是为北京亚嵌教育研究中心的嵌入式Linux系统工程师就业班课程量身定做的教材之一,也适合作为高等院校程序设计基础课程的教材。本书对于C语言的语法介绍得非常全面,对C99标准做了很多解读,因此也可以作为一本精简的C语言语法参考书。...
  • 嵌入式Linux应用开发完全手册

    作者:韦东山 主编

    本书全部实例代码及相关工具。 基于ARM 9+Linux 206平台,从基础讲起,引导读者快速入门,实例丰富,可直接应用于工程实践。 本书全面介绍了嵌入式Linux系统开发过程中,从底层系统支持到上层GUI应用的方方面面,内容涵盖Linux操作系统的安装及相关工具的使用、配置,嵌入式编程所需要的基础知识(交叉编译工具的选项设置、Makefile语法、ARM汇编指令等),硬件部件的使用及编程(囊括了常见硬件,比如UART、I2C、LCD等),U-Boot、Linux内核的分析、配置和移植,根文件系统的构造(包括移植busybox、glibc、制作映象文件等),内核调试技术(比如添加kgdb补丁、栈回溯等),驱动程序编写及移植(LED、按键、扩展串口、网卡、硬盘、SD卡、LCD和USB等),GUI系统的移植(包含两个GUI系统:基于Qtopia和基于X),应用程序调试技术。 本书从最简单的点亮一个LED开始,由浅入深地讲解,使读者最终可以配置、移植、裁剪内核,编写驱动程序,移植GUI系统,掌握整个嵌入式Linux系统的开发方法。 本书由浅入深,循序渐进,适合刚接触嵌入式Linux的初学者学习,也可作为大、中专院校嵌入式相关专业本科生、研究生的教材。 第1篇 嵌入式Linux开发环境构建篇 第1章 嵌入式Linux开发概述 第2章 嵌入式Linux开发环境构建 第3章 嵌入式编程基础知识 第4章 Windows、Linux环境下相关工具、命令的使用 第2篇 ARM9嵌入式系统基础实例篇 第5章 GPIO接口 第6章 存储器控制 第7章 内存管理单元MMU 第8章 NAND Flash控制器 第9章 中断体系结构 第10章 系统时钟和定时器 第11章 通用异步收发器UART 第12章 I*IC接口 第13章 LCD控制器 第14章 ADC和触摸屏接口 第3篇 嵌入式Linux系统移植篇 第15章 移植U-Boot 第16章 移植Linux内核 第17章 构建Linux根文件系统 第18章 Linux内核调试技术 第4篇 嵌入式Linux设备驱动开发篇 第19章 字符设备驱动程序 第20章 Linux异常处理体系结构 第21章 扩展串口驱动程序移植 第22章 网卡驱动程序移植 第23章 IDE接口和SD卡驱动程序移植 第24章 LCD和USB驱动程序移植 第5篇 嵌入式Linux系统应用开发篇 第25章 嵌入式GUI开发 第26章 基于X的GUI开发 第27章 Linux应用程序调试技术 参考文献
  • 专业嵌入式软件开发

    作者:李云

    《专业嵌入式软件开发:全面走向高质高效编程》分为6篇。硬件篇就嵌入式软件开发所需掌握的处理器概念进行了介绍。工具篇对make、gcc编译器、bintuils工具集、ld链接器和gdb调试器进行了讲解,其中对make这一嵌入式开发环境的全能管家进行了精辟的介绍,致力于帮助读者成为Makefile方面的专家。编程语言篇致力于让读者更深入地理解C编程语言。操作系统篇通过循序渐进的方式介绍ClearRTOS的设计与实现,使得读者能透彻地理解操作系统的关键概念和实现原理。设计篇和质量保证篇通过实践的方式逐步展开讲解,以帮助读者获得一些实用的设计原则、最佳实践和一套有效的质量保证方法论。 《专业嵌入式软件开发:全面走向高质高效编程》适合嵌入式软件开发领域的新手和在工作中碰到瓶颈的老手阅读。阅读《专业嵌入式软件开发:全面走向高质高效编程》要求读者已掌握C编程语言和基本的UML知识。