
微信扫一扫,移动浏览光盘
简介
本书系统论述了基于ARM处理器的嵌入式Linux系统开发的原理、方法与实践。全书共15章,分别介绍了嵌入式Linux系统管理、Linux编程基础、Linux高级编程、Linux内核开发、Linux系统移植和Linux驱动程序开发等。 本书内容吸收了作者在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.1Linux发行版本 4
1.2.2 Linux定制安装 6
1.3Linux常用命令 18
1.3.1系统管理相关命令 18
1.3.2文件管理相关命令 19
1.3.3备份压缩相关命令 25
1.3.4网络通信相关命令 26
1.3.5其他常用命令 30
1.4 服务器配置 34
1.4.1samba服务器 34
1.4.2NFS服务器 38
1.4.3TFTP服务器 40
习题与练习 42
第2章 Linux脚本编程 43
2.1 常用shell命令 43
2.2 脚本编写基础 44
2.2.1 特殊字符 44
2.2.2 变量和参数 46
2.2.3退出和退出状态 48
2.3 流程控制 49
2.3.1条件测试 49
2.3.2操作符相关主题 51
2.3.3循环控制 53
2.3.4测试与分支 55
习题与练习 58
第3章 Linux编程基础 59
3.1 编辑器介绍 59
3.1.1vi介绍 59
3.1.2vi的各模式功能键 60
3.2 程序编译与调试 63
3.2.1gcc编译流程 64
3.2.2gcc编译选项分析 64
3.2.3gdb程序调试 69
习题与练习 75
第4章 C语言进阶 76
4.1C语言的基本知识 76
4.2 数据类型 77
4.2.1常量和变量 78
4.2.2进制 78
4.2.3字符 79
4.2.4转义符与字符集 79
4.2.5类型转换 79
4.2.6输入输出 82
4.2.7运算符 83
4.3 控制语句 86
4.3.1分支语句 86
4.3.2循环语句 88
4.4 数组与字符串 97
4.4.1数组的定义 97
4.4.2数组本质探讨 98
4.4.3一维数组和二维数组 99
4.4.4字符串 101
4.5 函数 103
4.5.1函数的定义 103
4.5.2函数的深度剖析 103
4.5.3函数的作用剖析 104
4.6 指针 108
4.6.1指针的本质 108
4.6.2连续空间的内存地址 108
4.6.3指针变量 109
4.6.4指针数组和指针的指针 111
4.6.5函数和指针 115
4.7 预处理指令 119
4.7.1宏定义 120
4.7.2#include 121
4.7.3条件编译 121
习题与练习 123
第5章 文件I/O编程 124
5.1 文件和目录 124
5.2 目录操作 126
5.3 文件操作 134
5.3.1基本概念 134
5.3.2检查文件及确定文件的权限 136
5.3.3创建文件 137
5.3.4打开文件 138
5.3.5关闭文件 139
5.3.6删除文件 140
5.3.7文件指针移动 142
5.3.8其他常用函数 145
5.4 设备控制 148
5.5Linux时间编程 159
5.5.1取得目前的时间 159
5.5.2取得目前时间和日期 160
5.5.3取得当地目前时间和日期 161
5.5.4将时间结构数据转换成经过的秒数 162
5.5.5设置目前时间 162
5.5.6取得当前时间 163
5.5.7将时间和日期以ASCII码格式表示 164
5.5.8将时间和日期以字符串格式表示 164
习题与练习 165
第6章 进程控制 166
6.1 进程控制概述 166
6.1.1进程的定义 166
6.1.2进程控制块 167
6.1.3分配进程描述符 168
6.1.4进程的创建 168
6.1.5进程状态 169
6.1.6进程调度 171
6.1.7虚拟内存 172
6.1.8文件锁 172
6.2 进程控制编程 173
6.2.1创建进程 173
6.2.2进程终止 181
6.2.3守护进程 186
习题与练习 187
第7章 进程间通信 188
7.1 进程间通信概述 188
7.2 管道通信 190
7.2.1无名管道 190
7.2.2有名管道 192
7.2.3标准流管道 195
7.3 消息队列 196
7.3.1键值 196
7.3.2打开/创建消息队列 197
7.3.3发送消息 197
7.3.4接收消息 198
7.3.5消息控制 198
7.4 信号 201
7.4.1信号处理的方式 201
7.4.2信号操作指令 201
7.5 信号量 207
7.5.1信号量创建 208
7.5.2信号量操作 208
7.6 内存共享 214
7.6.1共享内存创建 214
7.6.2共享内存的操作 216
7.6.3共享内存段连接到本进程空间 216
7.6.4共享内存解除 217
习题与练习 220
第8章 多线程技术 221
8.1Linux多线程概念 221
8.2Linux线程实现 222
8.2.1线程创建 222
8.2.2线程退出 224
8.2.3线程等待 226
8.2.4线程标识获取 228
8.2.5线程清除 229
8.3 线程函数传递及修改线程的属性 232
8.3.1线程函数传递 232
8.3.2绑定属性 235
8.3.3分离属性 236
8.3.4优先级属性 237
8.3.5线程的互斥 239
8.3.6线程的同步 241
8.3.7信号量 243
习题与练习 245
第9章 网络编程 246
9.1 基本概念 246
9.1.1OSI模型 246
9.1.2常用命令 247
9.1.3网络地址 247
9.1.4IP设置项 248
9.1.5端口 248
9.2TCP/IP协议 249
9.2.1整体构架概述 249
9.2.2IP协议 250
9.2.3ICMP协议 251
9.2.4UDP协议 251
9.2.5TCP协议 252
9.2.6TCP连接的建立 253
9.3 基本网络函数介绍 253
9.3.1建立一个socket通信 253
9.3.2对socket定位 254
9.3.3等待连接 255
9.3.4建立socket连线 255
9.4 服务器和客户端的信息函数 256
9.4.1字节转换函数 256
9.4.2IP和域名的转换 257
9.4.3字符串的IP和32位的IP转换 259
9.4.4服务信息函数 260
9.5 完整的读写函数 260
9.5.1 write 260
9.5.2 read 261
9.5.3数据的传递 261
9.6 用户数据报发送 262
9.6.1 recvfrom 262
9.6.2 sendto 262
9.7 高级套接字函数 263
9.7.1 recv 263
9.7.2send 263
9.7.3 recvmsg 264
9.7.4sendmsg 264
9.7.5 套接字的关闭 265
9.8 套接字选项 265
9.8.1getsockopt 265
9.8.2setsockopt 266
9.8.3ioctl 267
9.9 服务器模型 267
9.9.1循环服务器:UDP服务器 267
9.9.2循环服务器:TCP服务器 268
9.9.3并发服务器:TCP服务器 271
9.9.4并发服务器:多路复用I/O 272
9.9.5并发服务器:UDP服务器 273
习题与练习 276
第10章 内核开发基础 277
10.1嵌入式开发环境搭建 277
10.1.1交叉编译工具链 278
10.1.2终端软件 281
10.2Linux内核简介 282
10.2.1Linux内核 282
10.2.2Linux内核源代码 285
10.3Linux内核配置与编译 285
10.3.1Linux内核配置 286
10.3.2编译内核 288
10.4Linux内核模块 288
10.4.1内核模块简介 288
10.4.2内核模块编译与相关命令 289
10.5文件系统 289
10.5.1文件系统简介 290
10.5.2根文件系统 291
10.5.3Busybox 293
10.5.4Ramdisk文件系统 299
习题与练习 299
第11章 BootLoader 300
11.1BootLoader介绍 300
11.1.1BootLoader的安装和启动 300
11.1.2 BootLoader的操作模式 301
11.1.3 BootLoader与主机之间的通信方式 301
11.1.4 常用BootLoader介绍 301
11.2U-boot介绍 302
11.2.1目录结构 302
11.2.2U-boot的主要功能 303
11.2.3U-boot的工具 303
11.3 U-boot工作流程 304
11.3.1stage1 305
11.3.2 stage2 306
11.4 U-boot编译 308
习题与练习 309
第12章 Linux驱动开发基础与调试 310
12.1设备驱动简介 310
12.1.1设备类型分类 311
12.1.2内核空间和用户空间 312
12.1.3驱动程序层次结构 312
12.1.4驱动程序与外界接口 313
12.2打印调试 315
习题与练习 316
第13章 字符设备驱动 317
13.1字符设备驱动程序基础 317
13.1.1关键数据结构 317
13.1.2设备驱动开发的基本函数 319
13.1.3设备文件和设备号 324
13.1.4加载和卸载驱动程序 325
13.2LED设备驱动程序 326
13.2.1LED接口电路 326
13.2.2LED驱动程序 327
13.2.3 加载运行LED驱动程序 329
13.3按键设备驱动程序 330
13.3.1按键模块硬件电路 330
13.3.2按键驱动程序 331
13.3.3加载运行按键驱动程序 335
13.4DS18B20驱动程序设计分析 336
13.4.1DS18B20基础知识 336
13.4.2DS18B20代码设计 337
习题与练习 344
第14章 块设备驱动 345
14.1块设备驱动程序开发基础 345
14.1.1块设备的I/O操作特点 345
14.1.2块设备主要数据结构 345
14.1.3块设备的操作 353
14.2IDE硬盘设备驱动 359
14.2.1 IDE硬盘设备原理 359
14.2.2S3C2440与IDE接口电路 360
14.2.3block_device_operations及成员函数 361
14.2.4I/O请求处理 363
14.2.5在内核中增加对新系统IDE设备的支持 369
习题与练习 372
第15章 网络设备驱动 373
15.1网络设备驱动简介 373
15.1.1驱动程序体系结构 373
15.1.2主要数据结构 374
15.1.3基本函数 376
15.2CS8900A网卡设备 378
15.2.1CS8900A简介 378
15.2.2CS8900A网卡接口电路 379
15.3CS8900A设备驱动程序 380
15.3.1初始化网络设备 380
15.3.2打开网络设备 385
15.3.3关闭网络设备 386
15.3.4中断处理 387
15.3.5发送数据 389
15.3.6接收数据 391
习题与练习 392
参考文献 393
- 名称
- 类型
- 大小
光盘服务联系方式: 020-38250260 客服QQ:4006604884
云图客服:
用户发送的提问,这种方式就需要有位在线客服来回答用户的问题,这种 就属于对话式的,问题是这种提问是否需要用户登录才能提问
