图书信息
书名:
ARM 9嵌入式开发基础与实例进阶
作者:
冯新宇
出版社:
清华大学出版社
出版时间:
2012-1-13
ISBN:
9787302262954
丛书名:基础与实例进阶
^_^
资料下载
^_^
内容简介
本书主要包括嵌入式Linux系统管理与编程基础、Linux应用程序设计、ARM程序设计、内核开发与系统移植、驱动程序开发等5部分内容。 本书作者都是长期使用Linux系统进行教学、科研和实际生产工作的教师和工程师,具备丰富的教学和实践经验。本书在内容编排上,遵循读者学习的一般规律,结合大量实例讲解操作步骤,能够使读者快速、真正地掌握嵌入式Linux系统的基本原理和应用。 本书可作为大中专院校相关专业的教材,也可以作为嵌入式开发爱好者的自学教程和专业人员的参考手册。
图书目录
目 录 第1章 Linux概述与系统管理 1 1.1 嵌入式系统概述 1 1.1.1 嵌入式系统发展历史 1 1.1.2 嵌入式系统的特点 2 1.1.3 嵌入式系统的体系结构 2 1.1.4 典型嵌入式系统介绍 3 1.2 嵌入式Linux基础 4 1.2.1 Linux发行版本 4 1.2.2 Linux定制安装 6 1.3 Linux常用命令 11 1.3.1 用户系统相关命令 11 1.3.2 文件操作相关命令 12 1.3.3 压缩打包相关命令 17 1.3.4 网络相关命令 18 1.3.5 其他常用命令 21 1.4 服务器配置 25 1.4.1 Samba服务器 25 1.4.2 实例进阶一:Samba服务器配置 26 1.4.3 NFS服务器 27 1.4.4 实例进阶二:NFS服务器配置 28 1.4.5 TFTP服务器 29 1.4.6 实例进阶三:TFTP服务器配置 29 1.5 思考与练习 30 第2章 Linux脚本编程 32 2.1 常用Shell命令 32 2.2 脚本编写基础 33 2.2.1 特殊字符 33 2.2.2 变量和参数 35 2.2.3 退出和退出状态 37 2.3 流程控制 39 2.3.1 条件测试 39 2.3.2 操作符 41 2.3.3 循环控制 43 2.3.4 测试与分支 45 2.4 实例进阶 47 2.4.1 实例进阶一:参数大小比较 47 2.4.2 实例进阶二:当前目录下的文件数目统计 48 2.5 思考与练习 48 第3章 Linux编程基础 50 3.1 编辑器介绍 50 3.1.1 vi介绍 50 3.1.2 vi的各模式功能键 50 3.2 程序编译与调试 52 3.2.1 gcc编译流程 52 3.2.2 gcc编译选项分析 53 3.2.3 gdb程序调试 54 3.3 实例进阶 55 3.3.1 实例进阶一:vi使用演示 55 3.3.2 实例进阶二:gcc使用演示 58 3.3.3 实例进阶三:gdb使用演示 60 3.4 思考与练习 65 第4章 文件I/O编程 66 4.1 基于Linux系统的文件编程 66 4.1.1 文件打开 66 4.1.2 文件创建 68 4.1.3 文件关闭 68 4.1.4 文件读取 69 4.1.5 数据写入 69 4.1.6 移动文件的读写位置 69 4.1.7 文件描述词操作 70 4.1.8 锁定文件或解除锁定 71 4.2 基于C语言库函数的文件编程 71 4.2.1 文件打开 72 4.2.2 从文件流读取数据 73 4.2.3 将数据写至文件流 74 4.2.4 由文件中读取一个字符 75 4.2.5 由文件中读取一字符串 75 4.2.6 将一指定字符写入文件流中 76 4.2.7 将一指定的字符串写入文件内 77 4.2.8 格式化字符串输入 77 4.2.9 格式化输出数据至文件 78 4.2.10 移动文件流的读写位置 79 4.3 Linux时间编程 80 4.3.1 取得目前的时间 80 4.3.2 取得目前时间和日期 81 4.3.3 取得当地目前时间和日期 82 4.3.4 将时间结构数据转换成经过的秒数 83 4.3.5 设置目前时间 84 4.3.6 取得当前时间 84 4.3.7 将时间和日期以ASCII格式表示 85 4.3.8 将时间和日期以字符串格式表示 86 4.4 实例进阶 87 4.4.1 实例进阶一:文件创建 87 4.4.2 实例进阶二:时间转换 88 4.5 思考与练习 88 第5章 进程控制 90 5.1 进程控制概述 90 5.1.1 进程的定义 90 5.1.2 进程控制块 90 5.1.3 分配进程描述符 91 5.1.4 进程描述符的存放 92 5.1.5 进程状态 93 5.1.6 进程调度 94 5.2 进程控制编程 94 5.2.1 获取ID 94 5.2.2 进程创建 96 5.2.3 exec函数族 99 5.2.4 system() 102 5.2.5 等待函数 103 5.2.6 退出 106 5.3 实例进阶 107 5.3.1 实例进阶一:进程创建 107 5.3.2 实例进阶二:exec函数族使用 108 5.4 思考与练习 109 第6章 进程间通信 110 6.1 进程间通信概述 110 6.2 管道通信 112 6.2.1 创建管道 112 6.2.2 建立管道I/O 113 6.2.3 关闭管道 113 6.2.4 建立命名管道 114 6.3 消息队列 115 6.3.1 键值 115 6.3.2 打开/创建消息队列 116 6.3.3 发送消息 117 6.3.4 接收消息 117 6.3.5 消息控制 118 6.4 信号 118 6.4.1 信号发送与捕捉 118 6.4.2 信号处理 121 6.4.3 信号集 124 6.5 信号量 126 6.5.1 信号量创建 126 6.5.2 信号量操作 127 6.6 内存共享 129 6.6.1 共享内存创建 129 6.6.2 共享内存的操作 131 6.6.3 共享内存段连接到本进程空间 132 6.6.4 共享内存解除 132 6.7 实例进阶 134 6.7.1 实例进阶一:通过管道输出字符 134 6.7.2 实例进阶二:消息队列综合应用 134 6.8 思考与练习 137 第7章 多线程技术 138 7.1 Linux多线程概念 138 7.2 Linux线程实现 139 7.2.1 线程创建 139 7.2.2 线程退出 139 7.2.3 线程等待 140 7.2.4 线程标识获取 140 7.2.5 线程清除 140 7.3 修改线程的属性 141 7.3.1 绑定属性 142 7.3.2 分离属性 143 7.3.3 优先级属性 144 7.4 实例进阶 145 7.4.1 实例进阶一:创建线程 145 7.4.2 实例进阶二:线程退出 146 7.4.3 实例进阶三:用pthread_join()实现线程等待 147 7.4.4 实例进阶四:获取线程ID 148 7.4.5 实例进阶五:线程清除 149 7.5 思考与练习 151 第8章 网络编程 152 8.1 基本概念 152 8.1.1 OSI模型 152 8.1.2 常用的命令 153 8.2 TCP/IP协议 153 8.2.1 整体构架概述 153 8.2.2 IP协议 155 8.2.3 ICMP协议 155 8.2.4 UDP协议 156 8.2.5 TCP协议 156 8.2.6 TCP连接的建立 157 8.3 基本网络函数介绍 157 8.3.1 建立一个Socket通信 158 8.3.2 对Socket定位 158 8.3.3 等待连接 159 8.3.4 建立Socket连接 160 8.4 服务器和客户机的信息函数 161 8.4.1 字节转换函数 161 8.4.2 IP和域名的转换 163 8.4.3 字符串形式的IP和32位的IP转换 163 8.4.4 服务信息函数 164 8.5 完整的读写函数 164 8.5.1 write() 164 8.5.2 read() 165 8.5.3 数据的传递 165 8.6 用户数据报发送 166 8.6.1 recvfrom() 166 8.6.2 sendto() 166 8.7 高级套接字函数 167 8.7.1 recv() 167 8.7.2 send() 168 8.7.3 recvmsg() 168 8.7.4 sendmsg() 169 8.7.5 套接字的关闭 170 8.8 套接字选项 170 8.8.1 getsockopt() 170 8.8.2 setsockopt() 171 8.8.3 ioctl() 172 8.9 服务器模型 173 8.9.1 循环服务器:UDP服务器 173 8.9.2 循环服务器:TCP服务器 173 8.9.3 并发服务器:TCP服务器 174 8.9.4 并发服务器:多路复用I/O 174 8.9.5 并发服务器:UDP服务器 176 8.10 实例进阶 176 8.10.1 实例进阶一:IP与域名转换 176 8.10.2 实例进阶二:编写UDP协议程序实现数据通信 178 8.11 思考与练习 181 第9章 ARM基础知识 182 9.1 ARM概述 182 9.1.1 ARM处理器工作状态与工作模式 182 9.1.2 ARM寄存器组织结构 183 9.1.3 ARM异常处理机制 185 9.1.4 ARM存储器结构 186 9.2 ARM指令系统 187 9.2.1 ARM指令格式 187 9.2.2 ARM指令寻址方式 188 9.3 ARM指令集 190 9.3.1 数据处理指令 191 9.3.2 分支指令 196 9.3.3 存储器访问(Load/Store)指令 197 9.3.4 状态寄存器访问指令 201 9.3.5 协处理器指令 202 9.3.6 SWI软中断指令 204 9.4 思考与练习 205 第10章 ARM程序设计 206 10.1 ADS集成开发环境 206 10.1.1 ADS工具包 206 10.1.2 命令行开发工具 206 10.1.3 CodeWarrior IDE(集成开发环境)的使用 207 10.1.4 AXD调试器的使用 214 10.2 实例进阶 216 10.2.1 实例进阶一:LED程序设计 216 10.2.2 实例进阶二:按键程序设计 218 10.2.3 实例进阶三:串口程序设计 220 10.3 思考与练习 224 第11章 内核开发基础 225 11.1 嵌入式开发环境的搭建 225 11.1.1 交叉编译工具链 226 11.1.2 终端软件 227 11.2 Linux内核简介 229 11.2.1 Linux内核 229 11.2.2 Linux内核源代码 231 11.3 Linux内核配置与编译 232 11.3.1 Linux内核配置 232 11.3.2 编译内核 234 11.4 Linux内核模块 235 11.4.1 内核模块简介 235 11.4.2 内核模块编译与相关命令 236 11.5 文件系统 236 11.5.1 文件系统概述 236 11.5.2 根文件系统 238 11.5.3 Busybox 240 11.5.4 Ramdisk文件系统 245 11.6 实例进阶 246 11.6.1 实例进阶一:安装交叉编译工具链arm-linux-gcc-4.3.3 246 11.6.2 实例进阶二:x86平台内核配置、编译 247 11.7 思考与练习 248 第12章 BootLoader 250 12.1 BootLoader介绍 250 12.1.1 BootLoader的安装和启动过程 250 12.1.2 BootLoader的操作模式 251 12.1.3 BootLoader与主机之间的通信方式 251 12.1.4 常用BootLoader介绍 252 12.2 U-Boot介绍 252 12.2.1 目录结构 253 12.2.2 U-Boot主要功能 254 12.2.3 U-Boot的工具 254 12.3 U-Boot命令 254 12.3.1 获取帮助 255 12.3.2 环境变量 256 12.3.3 文件下载 258 12.3.4 内存操作 260 12.3.5 Flash操作 261 12.3.6 执行程序 264 12.4 U-Boot工作流程 264 12.4.1 stage1 264 12.4.2 stage2 266 12.5 U-Boot编译 266 12.6 实例进阶:U-Boot移植 267 12.7 思考与练习 270 第13章 Linux驱动开发基础与调试 271 13.1 设备驱动简介 271 13.1.1 设备类型划分 271 13.1.2 内核空间和用户空间 272 13.1.3 驱动程序层次结构 273 13.1.4 驱动程序与外界的接口 274 13.2 打印调试 276 13.3 思考与练习 278 第14章 字符设备驱动 279 14.1 字符设备驱动程序基础 279 14.1.1 关键数据结构 279 14.1.2 设备驱动开发的基本函数 281 14.1.3 设备文件和设备号 286 14.1.4 加载和卸载驱动程序 287 14.2 实例进阶一:LED设备驱动程序 288 14.2.1 LED接口电路 289 14.2.2 LED驱动程序 289 14.2.3 加载运行LED驱动程序 292 14.3 实例进阶二:按键设备驱动程序 293 14.3.1 按键模块硬件电路 294 14.3.2 按键驱动程序 295 14.3.3 加载、运行按键驱动程序 298 14.4 思考与练习 300 第15章 块设备驱动 301 15.1 块设备驱动程序开发基础 301 15.1.1 块设备的I/O操作特点 301 15.1.2 块设备主要数据结构 301 15.1.3 块设备的操作 310 15.2 实例进阶:IDE硬盘设备驱动 316 15.2.1 IDE硬盘设备原理 316 15.2.2 S3C2440与IDE接口电路 318 15.2.3 block_device_operations及成员函数 319 15.2.4 I/O请求处理 321 15.2.5 在内核中增加对新系统IDE设备的支持 328 15.3 思考与练习 333 第16章 网络设备驱动 334 16.1 网络设备驱动简介 334 16.1.1 驱动程序体系结构 334 16.1.2 主要数据结构 335 16.1.3 基本函数 337 16.2 CS8900A网卡设备 339 16.2.1 CS8900A简介 340 16.2.2 CS8900A网卡接口电路 341 16.3 实例进阶:CS8900A设备驱动程序 341 16.3.1 初始化网络设备 342 16.3.2 打开网络设备 347 16.3.3 关闭网络设备 349 16.3.4 中断处理 349 16.3.5 发送数据 352 16.3.6 接收数据 354 16.4 思考与练习 355 参考文献 357
【
关闭窗口
】