图书信息
书名:
嵌入式Linux C语言基础与实例进阶
作者:
闫广明 张扬 王冠然
出版社:
清华大学出版社
出版时间:
2012-02
ISBN:
9787302268888
丛书名:基础与实例进阶
内容简介
本书面向学习Linux C语言的初中级读者,全书共16章,分别介绍了嵌入式系统基础知识、Linux环境下C语言的开发、Bootloader、Linux环境下C语言编程基础、Linux Shell编程、创建嵌入式系统开发环境、C程序基础、嵌入式GUI技术、嵌入式文件系统与存储技术、嵌入式Linux设备驱动开发、进程、线程、Linux网络编程、嵌入式视频采集系统、指纹识别门禁系统设计、基于Web Service的嵌入式智能家居系统等内容。 本书注重理论联系实践,以培养读者的工程应用能力为目标,全书内容详实、讲解透彻、案例丰富实用,能够使读者边学边用,更快更好地掌握所学知识。 本书不仅有详细的理论基础知识介绍,还有大量的开发案例以供参考,可读性和实用性强,可作为初学者的自学教材以及各类培训学校的教材用书,也可作为工程技术人员及中专、中技、高职高专、本科院校相关专业师生的参考书。
图书目录
目 录 第1章 嵌入式系统基础知识 1 1.1 嵌入式系统概述 1 1.1.1 嵌入式系统简介 1 1.1.2 嵌入式系统的组成 2 1.1.3 嵌入式系统的应用领域 4 1.1.4 嵌入式系统的发展趋势 5 1.2 ARM处理器平台介绍 5 1.2.1 ARM处理器简介 6 1.2.2 ARM体系结构 6 1.2.3 ARM微处理器系列 8 1.2.4 ARM处理器的应用领域和特点 11 1.3 Linux操作系统 12 1.3.1 Linux的发展历史 12 1.3.2 Linux发行版本 13 1.3.3 Linux系统的特点和组成 14 1.3.4 Linux常用命令 16 1.4 嵌入式系统开发 22 本章小结 24 思考与练习 24 第2章 Linux环境下C语言的开发 25 2.1 C语言简单回顾 25 2.2 Linux程序设计基础知识 26 2.2.1 程序安装目录 26 2.2.2 头文件 27 2.2.3 库文件 27 2.3 Linux下的C语言开发环境 30 2.4 嵌入式Linux C语言开发流程和开发工具 30 2.5 嵌入式Linux中程序的运行原理 31 2.6 Linux程序设计的特点 33 2.7 Linux下C语言编码的风格 34 本章小结 35 思考与练习 35 第3章 Bootloader 36 3.1 Bootloader的工作原理 36 3.1.1 Bootloader概述 36 3.1.2 Bootloader的启动流程 37 3.2 ViVi 42 3.2.1 ViVi的源代码结构 42 3.2.2 ViVi的启动过程 43 3.3 U-Boot 50 3.3.1 U-Boot的特点 50 3.3.2 U-Boot的目录结构 50 3.3.3 U-Boot的启动过程 51 3.3.4 U-Boot的移植 55 3.3.5 U-Boot与内核的关系 55 本章小结 61 思考与练习 61 第4章 Linux环境下C语言编程基础 62 4.1 Vi编辑器 62 4.1.1 Vi的基本模式 62 4.1.2 Vi的基本操作 63 4.2 Vim编辑器 65 4.2.1 Vim的启动 66 4.2.2 保存与打开文件 67 4.2.3 移动光标 67 4.2.4 插入 68 4.2.5 删除 69 4.2.6 取消 69 4.2.7 保存 70 4.2.8 退出 70 4.3 GCC编译器 70 4.3.1 GCC编译流程分析 71 4.3.2 实例:GCC编译程序 71 4.3.3 实例:GCC编译多重源代码文件 77 4.3.4 GCC编译选项分析 78 4.3.5 GCC使用库函数 80 4.3.6 实例:静态库的创建 81 4.4 GDB调试器 82 4.4.1 GDB调试器概述 82 4.4.2 实例:GDB调试程序 83 4.5 Make工程管理器 86 4.5.1 Makefile文件的构成 87 4.5.2 Makefile变量 88 4.5.3 Make工程管理器的使用 90 本章小结 91 思考与练习 91 第5章 Linux Shell编程 92 5.1 什么是Shell 92 5.2 几种流行的Shell 93 5.3 bash的特点 94 5.4 Shell程序设计基础 95 5.4.1 Shell的基本语法 95 5.4.2 Shell程序的变量和参数 96 5.4.3 Shell的测试命令 100 5.4.4 Shell的条件语句 101 5.4.5 Shell的循环语句 102 5.4.6 函数 104 5.4.7 命令分组 104 5.4.8 引号的使用方法 104 5.4.9 实例:Shell菜单程序 105 5.4.10 实例:自动调用ftp传输软件 106 5.5 运行Shell程序的方法 107 5.6 bash的内部命令和外部命令 107 本章小结 109 思考与练习 109 第6章 创建嵌入式系统开发环境 111 6.1 嵌入式系统开发环境的构建 111 6.2 Cygwin 114 6.3 超级终端和minicom的配置及使用 115 6.4 嵌入式Linux操作系统内核编译 116 6.4.1 Linux内核结构 116 6.4.2 内核的配置 119 6.4.3 内核编译的过程 120 6.4.4 内核的移植 121 6.5 NFS 122 6.6 Tftp 124 本章小结 125 思考与练习 125 第7章 C程序基础 126 7.1 数据、运算符、表达式 126 7.1.1 C程序的结构和语法规则 126 7.1.2 C程序语句概述 126 7.1.3 标识符 127 7.1.4 关键字 128 7.1.5 常量 128 7.1.6 变量 128 7.1.7 基本数据类型 129 7.1.8 算术运算符、赋值运算符及其表达式 130 7.1.9 关系运算符、逻辑运算符及其表达式 132 7.2 数据的输入和输出 133 7.2.1 数据的输出 134 7.2.2 数据的输入 135 7.2.3 实例:汉诺塔 136 7.3 基本语句 138 7.3.1 语句和复合语句 138 7.3.2 条件语句 139 7.3.3 实例:查找最小值 140 7.3.4 循环控制 141 7.4 数组 143 7.4.1 一维数组 143 7.4.2 二维数组 145 7.4.3 字符数组和字符串 146 7.4.4 实例:数值顺序输出 147 7.5 函数与指针 148 7.5.1 函数 149 7.5.2 指针 151 7.5.3 函数使用实例:数值比较 154 7.5.4 指针使用实例:倒序输出 155 本章小结 156 思考与练习 157 第8章 嵌入式GUI技术 158 8.1 嵌入式图形用户界面简介 158 8.2 Linux下几种主流GUI介绍 158 8.2.1 紧缩的X Window系统 158 8.2.2 MiniGUI 159 8.2.3 Qt/Embedded 159 8.2.4 MicroWindows 160 8.2.5 OpenGUI 161 8.2.6 GTK+ 161 8.3 基于MiniGUI的图形界面开发 162 8.3.1 MiniGUI程序框架 163 8.3.2 MiniGUI的窗口和消息 164 8.3.3 实例:MiniGUI窗口编程 167 8.3.4 菜单 172 8.3.5 键盘与鼠标 172 8.3.6 对话框 173 8.3.7 常用控件 174 8.3.8 实例:MiniGUI控件编程 177 本章小结 181 思考与练习 181 第9章 嵌入式文件系统与存储技术 183 9.1 嵌入式文件系统的功能和特点 183 9.2 Linux常见的文件系统 184 9.3 Linux文件结构 186 9.3.1 Linux文件类型 188 9.3.2 Linux文件的访问权限控制 190 9.3.3 MTD 192 9.4 FLASH存储技术 193 9.4.1 FLASH的类型 196 9.4.2 NOR FLASH与NAND FLASH的区别 197 9.5 基于FAT的嵌入式文件系统设计 198 9.5.1 FAT文件系统的组成 198 9.5.2 FAT层逻辑文件系统的总体框架 199 本章小结 202 思考与练习 202 第10章 嵌入式Linux设备驱动开发 203 10.1 Linux设备驱动开发概述 203 10.1.1 设备驱动和文件系统的关系 204 10.1.2 设备类型和设备号 204 10.2 设备驱动模块化编程 205 10.2.1 设备驱动程序原理 205 10.2.2 设备访问方式及实现 207 10.2.3 内核与驱动程序的关系 209 10.2.4 中断处理 210 10.3 Linux字符设备驱动 211 10.3.1 字符设备驱动概述 211 10.3.2 实例:字符设备驱动 214 10.4 块设备驱动 217 10.4.1 块设备驱动简介 217 10.4.2 块设备相关结构体 218 10.5 网络设备驱动 223 10.5.1 网络设备概述 223 10.5.2 网络设备的运行机制 224 10.5.3 sk_buff数据结构 225 10.5.4 数据包的发送与接收 227 10.5.5 网络设备驱动程序的加载 228 本章小结 229 思考与练习 229 第11章 进程 230 11.1 进程概述 230 11.1.1 进程标识 230 11.1.2 实例:获得进程ID 231 11.1.3 Linux进程的结构 232 11.1.4 Linux进程状态 232 11.1.5 Linux进程控制块结构描述 233 11.2 进程控制 234 11.2.1 创建进程 234 11.2.2 实例:创建进程 234 11.2.3 创建守护进程 235 11.2.4 实例:创建守护进程 236 11.2.5 进程退出 238 11.2.6 改变进程的优先级 238 11.2.7 执行新程序 240 11.2.8 等待进程结束 240 11.2.9 实例:进程等待 241 11.3 进程的内存映像 243 11.4 Linux进程调度 243 11.5 进程间通信 244 11.5.1 管道 245 11.5.2 有名管道 246 11.5.3 消息队列 246 11.5.4 信号量 249 11.5.5 共享内存 250 11.5.6 实例:进程通信 252 本章小结 255 思考与练习 255 第12章 线程 256 12.1 线程概述 256 12.2 创建线程 256 12.2.1 创建线程概述 256 12.2.2 实例:创建线程 257 12.3 获取/设置线程属性 258 12.3.1 获取/设置线程属性的函数 259 12.3.2 实例:读取和设置线程属性 262 12.4 取消线程 263 12.5 线程的私有数据 264 12.5.1 操作线程私有数据的函数 264 12.5.2 实例:线程私有数据 265 12.6 等待线程 266 12.7 信号量 267 12.8 互斥锁 269 12.8.1 互斥锁操作函数 269 12.8.2 实例:互斥锁 271 12.9 条件变量 272 12.9.1 条件变量操作 272 12.9.2 实例:条件变量使用 274 本章小结 275 思考与练习 276 第13章 Linux网络编程 277 13.1 网络编程的基本概念 277 13.1.1 IP地址 277 13.1.2 端口 278 13.1.3 域名 278 13.1.4 TCP/IP协议 279 13.1.5 PPP协议 280 13.2 Socket通信 281 13.2.1 Socket概述 281 13.2.2 Socket基础 282 13.2.3 Socket网络编程 283 13.2.4 实例:Socket聊天编程 287 13.2.5 实例:利用Socket进行通信 292 本章小结 296 思考与练习 296 第14章 嵌入式视频采集系统 297 14.1 系统方案论证 297 14.2 嵌入式开发平台搭建 298 14.2.1 Linux操作系统 298 14.2.2 建立交叉编译环境 298 14.3 S3C2440A介绍 300 14.4 嵌入式软件平台 303 14.4.1 U-Boot移植 304 14.4.2 Linux内核移植 309 14.4.3 根文件系统移植 311 14.4.4 配置对USB设备的支持 314 14.4.5 USB摄像头驱动移植 315 14.5 视频采集系统平台的软件实现 316 14.5.1 嵌入式Web服务器 316 14.5.2 嵌入式视频服务器 318 本章小结 322 第15章 指纹识别门禁系统设计 323 15.1 自动指纹识别系统概述 323 15.2 指纹识别原理 323 15.2.1 指纹特征 324 15.2.2 指纹图像增强的方法 325 15.2.3 指纹特征的提取 326 15.2.4 指纹图像匹配 326 15.2.5 指纹识别系统的性能参数 327 15.3 系统硬件结构介绍 327 15.4 指纹传感器U.are.U 4000b sensor 328 15.5 系统的软件结构 329 15.6 Linux内核以及Bootloader移植 330 15.7 界面功能介绍 335 本章小结 336 第16章 基于Web Service的嵌入式智能家居系统 337 16.1 系统概述 337 16.2 Web Service介绍 338 16.3 系统设计 339 16.4 家庭设备操作 341 16.5 服务器对外接口的Web Service实现 342 16.6 视频采集 343 本章小结 351 XII XIII
【
关闭窗口
】