在好例子网,分享、交流、成长!
您当前所在位置:首页C/C++ 开发实例Linux内核编程 → 【正点原子】I.MX6U嵌入式Linux C应用编程指南V1.0

【正点原子】I.MX6U嵌入式Linux C应用编程指南V1.0

Linux内核编程

下载此实例
  • 开发语言:C/C++
  • 实例大小:15.69M
  • 下载次数:19
  • 浏览次数:297
  • 发布时间:2021-08-17
  • 实例类别:Linux内核编程
  • 发 布 人:ITAngel
  • 文件格式:.pdf
  • 所需积分:2
 相关标签: linux 嵌入式 LIN 1.0 指南

实例介绍

【实例简介】

【实例截图】

【核心代码】

目录
前言................................................................................................................................................................... 14
第一篇 入门篇 ................................................................................................................................................. 16
应用编程概念 ..................................................................................................................................... 17
1.1 系统调用 ................................................................................................................................................ 18
1.2 库函数.................................................................................................................................................... 22
1.3 标准 C 语言函数库................................................................................................................................ 23
1.4 main 函数 ................................................................................................................................................ 25
1.5 本书使用的开发环境 ............................................................................................................................ 25
Ubuntu 系统下安装 Eclipse............................................................................................................. 26
文件 I/O 基础...................................................................................................................................... 38
2.1 一个简单的文件 IO 示例...................................................................................................................... 39
2.2 文件描述符 ............................................................................................................................................ 40
2.3 open 打开文件......................................................................................................................................... 41
2.4 write 写文件............................................................................................................................................ 45
2.5 read 读文件 ............................................................................................................................................. 45
2.6 close 关闭文件........................................................................................................................................ 46
2.7 lseek......................................................................................................................................................... 46
2.8 练习........................................................................................................................................................ 47
深入探究文件 I/O............................................................................................................................... 54
3.1 Linux 系统如何管理文件....................................................................................................................... 55
静态文件与 inode ........................................................................................................................... 55
文件打开时的状态 ......................................................................................................................... 57
3.2 返回错误处理与 errno........................................................................................................................... 58
strerror 函数...................................................................................................................................... 59
perror 函数........................................................................................................................................ 60
3.3 exit、_exit、_Exit................................................................................................................................... 61
_exit()和_Exit()函数 ........................................................................................................................ 62
exit()函数.......................................................................................................................................... 62
3.4 空洞文件 ................................................................................................................................................ 63
概念 ................................................................................................................................................. 63
实验测试 ......................................................................................................................................... 63
3.5 O_APPEND 和 O_TRUNC 标志............................................................................................................ 65
O_TRUNC 标志............................................................................................................................... 65
O_APPEND 标志............................................................................................................................. 66
3.6 多次打开同一个文件 ............................................................................................................................ 69
验证一些现象 ................................................................................................................................. 69
多次打开同一文件进行读操作与 O_APPEND 标志 ................................................................... 73
3.7 复制文件描述符 .................................................................................................................................... 78
dup 函数 ........................................................................................................................................... 79
原子哥在线教学:www.yuanzige.com 论坛:www.openedv.com
5
I.MX6U 嵌入式 Linux C 应用编程指南
dup2 函数 ......................................................................................................................................... 82
3.8 文件共享 ................................................................................................................................................ 83
3.9 原子操作与竞争冒险 ............................................................................................................................ 86
竞争冒险简介 ................................................................................................................................. 86
原子操作 ......................................................................................................................................... 87
3.10 fcntl 和 ioctl........................................................................................................................................... 90
fcntl 函数........................................................................................................................................ 90
ioctl 函数........................................................................................................................................ 94
3.11 截断文件 .............................................................................................................................................. 94
标准 I/O 库.......................................................................................................................................... 97
4.1 标准 I/O 库简介..................................................................................................................................... 98
4.2 FILE 指针................................................................................................................................................ 98
4.3 标准输入、标准输出和标准错误 ........................................................................................................ 98
4.4 打开文件 fopen().................................................................................................................................... 99
4.5 读文件和写文件 .................................................................................................................................. 100
4.6 fseek 定位.............................................................................................................................................. 104
4.7 检查或复位状态 .................................................................................................................................. 107
feof()函数....................................................................................................................................... 107
ferror()函数..................................................................................................................................... 108
clearerr()函数 ................................................................................................................................. 108
4.8 格式化 I/O............................................................................................................................................ 109
格式化输出 ................................................................................................................................... 109
格式化输入 ................................................................................................................................... 115
小结 ............................................................................................................................................... 120
4.9 I/O 缓冲................................................................................................................................................. 120
文件 I/O 的内核缓冲.................................................................................................................... 120
刷新文件 I/O 的内核缓冲区........................................................................................................ 121
直接 I/O:绕过内核缓冲............................................................................................................. 123
stdio 缓冲........................................................................................................................................ 128
I/O 缓冲小节.................................................................................................................................. 133
4.10 文件描述符与 FILE 指针互转.......................................................................................................... 134
文件属性与目录 ............................................................................................................................... 136
5.1 Linux 系统中的文件类型..................................................................................................................... 137
普通文件 ....................................................................................................................................... 137
目录文件 ....................................................................................................................................... 138
字符设备文件和块设备文件 ....................................................................................................... 138
符号链接文件 ............................................................................................................................... 139
管道文件 ....................................................................................................................................... 139
套接字文件 ................................................................................................................................... 139
总结 ............................................................................................................................................... 139
5.2 stat 函数................................................................................................................................................. 140
struct stat 结构体............................................................................................................................ 140
原子哥在线教学:www.yuanzige.com 论坛:www.openedv.com
6
I.MX6U 嵌入式 Linux C 应用编程指南
st_mode 变量.................................................................................................................................. 141
struct timespec 结构体 ................................................................................................................... 143
练习 ............................................................................................................................................... 143
5.3 fstat 和 lstat 函数................................................................................................................................... 147
fstat 函数 ........................................................................................................................................ 147
lstat 函数......................................................................................................................................... 148
5.4 文件属主 .............................................................................................................................................. 149
有效用户 ID 和有效组 ID............................................................................................................ 150
chown 函数..................................................................................................................................... 150
fchown 和 lchown 函数.................................................................................................................. 153
5.5 文件访问权限 ...................................................................................................................................... 153
普通权限和特殊权限 ................................................................................................................... 153
目录权限 ....................................................................................................................................... 155
检查文件权限 access.................................................................................................................... 156
修改文件权限 chmod.................................................................................................................... 158
umask 函数..................................................................................................................................... 159
5.6 文件的时间属性 .................................................................................................................................. 161
utime()、utimes()修改时间属性 ................................................................................................... 162
futimens()、utimensat()修改时间属性.......................................................................................... 166
5.7 符号链接(软链接)与硬链接 .......................................................................................................... 170
创建链接文件 ............................................................................................................................... 171
读取软链接文件 ........................................................................................................................... 174
5.8 目录...................................................................................................................................................... 175
目录存储形式 ............................................................................................................................... 175
创建和删除目录 ........................................................................................................................... 175
打开、读取以及关闭目录 ........................................................................................................... 177
进程的当前工作目录 ................................................................................................................... 181
5.9 删除文件 .............................................................................................................................................. 184
5.10 文件重命名 ........................................................................................................................................ 186
5.11 总结.................................................................................................................................................... 187
字符串处理 ....................................................................................................................................... 188
6.1 字符串输入/输出................................................................................................................................. 189
字符串输出 ................................................................................................................................... 189
字符串输入 ................................................................................................................................... 194
总结 ............................................................................................................................................... 203
6.2 字符串长度 .......................................................................................................................................... 203
6.3 字符串拼接 .......................................................................................................................................... 205
6.4 字符串拷贝 .......................................................................................................................................... 206
6.5 内存填充 .............................................................................................................................................. 208
6.6 字符串比较 .......................................................................................................................................... 210
6.7 字符串查找 .......................................................................................................................................... 212
6.8 字符串与数字互转 .............................................................................................................................. 215
字符串转整形数据 ....................................................................................................................... 215
原子哥在线教学:www.yuanzige.com 论坛:www.openedv.com
7
I.MX6U 嵌入式 Linux C 应用编程指南
字符串转浮点型数据 ................................................................................................................... 218
数字转字符串 ............................................................................................................................... 220
6.9 给应用程序传参 .................................................................................................................................. 221
6.10 正则表达式 ........................................................................................................................................ 222
初识正则表达式 ......................................................................................................................... 222
元字符与普通字符 ..................................................................................................................... 223
字符集 ......................................................................................................................................... 223
匹配次数 ..................................................................................................................................... 223
贪婪与非贪婪 ............................................................................................................................. 223
匹配 x 或 y(|).......................................................................................................................... 223
组的概念 ..................................................................................................................................... 223
边界匹配符 ................................................................................................................................. 223
常用正则表达式 ......................................................................................................................... 223
6.11 C 语言中使用正则表达式.................................................................................................................. 223
系统信息与系统资源 ....................................................................................................................... 226
7.1 系统信息 .............................................................................................................................................. 227
系统标识 uname............................................................................................................................ 227
sysinfo 函数.................................................................................................................................... 228
gethostname 函数........................................................................................................................... 230
sysconf()函数 ................................................................................................................................. 231
7.2 时间、日期 .......................................................................................................................................... 232
时间的概念 ................................................................................................................................... 232
Linux 系统中的时间...................................................................................................................... 234
获取时间 time/gettimeofday ......................................................................................................... 235
时间转换函数 ............................................................................................................................... 237
设置时间 settimeofday.................................................................................................................. 246
总结 ............................................................................................................................................... 246
7.3 进程时间 .............................................................................................................................................. 247
times 函数....................................................................................................................................... 247
clock 函数....................................................................................................................................... 250
7.4 产生随机数 .......................................................................................................................................... 251
7.5 休眠...................................................................................................................................................... 253
秒级休眠: sleep............................................................................................................................. 253
微秒级休眠: usleep ....................................................................................................................... 254
高精度休眠: nanosleep ................................................................................................................. 255
7.6 申请堆内存 .......................................................................................................................................... 256
在堆上分配内存:malloc 和 free ................................................................................................ 256
在堆上分配内存的其它方法 ....................................................................................................... 258
分配对其内存 ............................................................................................................................... 259
7.7 proc 文件系统....................................................................................................................................... 263
proc 文件系统的使用 .................................................................................................................... 264
7.8 定时器.................................................................................................................................................. 266
信号:基础 ....................................................................................................................................... 267
原子哥在线教学:www.yuanzige.com 论坛:www.openedv.com
8
I.MX6U 嵌入式 Linux C 应用编程指南
8.1 基本概念 .............................................................................................................................................. 268
8.2 信号的分类 .......................................................................................................................................... 270
可靠信号与不可靠信号 ............................................................................................................... 270
实时信号与非实时信号 ............................................................................................................... 271
8.3 常见信号与默认行为 .......................................................................................................................... 271
8.4 进程对信号的处理 .............................................................................................................................. 273
signal()函数.................................................................................................................................... 274
sigaction()函数 ............................................................................................................................... 277
8.5 向进程发送信号 .................................................................................................................................. 280
kill()函数 ........................................................................................................................................ 280
raise().............................................................................................................................................. 282
8.6 alarm()和 pause()函数........................................................................................................................... 283
alarm()函数..................................................................................................................................... 284
pause()函数..................................................................................................................................... 285
8.7 信号集.................................................................................................................................................. 287
初始化信号集 ............................................................................................................................... 287
向信号集中添加/删除信号 .......................................................................................................... 287
测试信号是否在信号集中 ........................................................................................................... 288
8.8 获取信号的描述信息 .......................................................................................................................... 288
strsignal()函数................................................................................................................................ 289
psignal()函数.................................................................................................................................. 290
8.9 信号掩码(阻塞信号传递).................................................................................................................... 291
8.10 阻塞等待信号 sigsuspend()............................................................................................................... 294
8.11 实时信号 ............................................................................................................................................ 296
sigpending()函数.......................................................................................................................... 296
发送实时信号 ............................................................................................................................. 297
8.12 异常退出 abort()函数 ........................................................................................................................ 299
进程 ................................................................................................................................................... 302
9.1 进程与程序 .......................................................................................................................................... 303
main()函数由谁调用?.................................................................................................................. 303
程序如何结束? ........................................................................................................................... 303
何为进程? ................................................................................................................................... 304
进程号 ........................................................................................................................................... 304
9.2 进程的环境变量 .................................................................................................................................. 307
应用程序中获取环境变量 ........................................................................................................... 308
添加/删除/修改环境变量 ............................................................................................................. 310
清空环境变量 ............................................................................................................................... 312
环境变量的作用 ........................................................................................................................... 313
9.3 进程的内存布局 .................................................................................................................................. 313
9.4 进程的虚拟地址空间 .......................................................................................................................... 314
9.5 fork()创建子进程.................................................................................................................................. 315
9.6 父、子进程间的文件共享 .................................................................................................................. 318
9.7 系统调用 vfork().................................................................................................................................. 322
原子哥在线教学:www.yuanzige.com 论坛:www.openedv.com
9
I.MX6U 嵌入式 Linux C 应用编程指南
9.8 fork()之后的竞争条件.......................................................................................................................... 324
9.9 进程的诞生与终止 .............................................................................................................................. 327
进程的诞生 ................................................................................................................................... 327
进程的终止 ................................................................................................................................... 328
9.10 监视子进程 ........................................................................................................................................ 330
wait()函数..................................................................................................................................... 330
waitpid()函数................................................................................................................................ 333
waitid()函数.................................................................................................................................. 337
僵尸进程与孤儿进程 ................................................................................................................. 337
SIGCHLD 信号............................................................................................................................ 341
9.11 执行新程序 ........................................................................................................................................ 343
execve()函数................................................................................................................................. 343
exec 库函数.................................................................................................................................. 345
exec 族函数使用示例.................................................................................................................. 347
system()函数................................................................................................................................. 349
9.12 进程状态与进程关系 ........................................................................................................................ 351
进程状态 ..................................................................................................................................... 351
进程关系 ..................................................................................................................................... 352
9.13 守护进程 ............................................................................................................................................ 356
何为守护进程 ............................................................................................................................. 356
编写守护进程程序 ..................................................................................................................... 357
SIGHUP 信号............................................................................................................................... 360
9.14 单例模式运行 .................................................................................................................................... 362
通过文件存在与否进行判断 ..................................................................................................... 362
使用文件锁 ................................................................................................................................. 364
进程间通信简介 ............................................................................................................................... 367
10.1 进程间通信简介 ................................................................................................................................ 368
10.2 进程间通信的机制有哪些? ............................................................................................................ 368
10.3 管道和 FIFO....................................................................................................................................... 368
10.4 信号.................................................................................................................................................... 369
10.5 消息队列 ............................................................................................................................................ 369
10.6 信号量 ................................................................................................................................................ 369
10.7 共享内存 ............................................................................................................................................ 369
10.8 套接字(Socket) ............................................................................................................................. 369
线程 ............................................................................................................................................... 371
11.1 线程概述 ............................................................................................................................................ 372
线程概念 ..................................................................................................................................... 372
并发和并行 ................................................................................................................................. 373
11.2 线程 ID............................................................................................................................................... 375
11.3 创建线程 ............................................................................................................................................ 376
11.4 终止线程 ............................................................................................................................................ 378
11.5 回收线程 ............................................................................................................................................ 380
原子哥在线教学:www.yuanzige.com 论坛:www.openedv.com
10
I.MX6U 嵌入式 Linux C 应用编程指南
11.6 取消线程 ............................................................................................................................................ 382
取消一个线程 ............................................................................................................................. 382
取消状态以及类型 ..................................................................................................................... 384
取消点 ......................................................................................................................................... 386
线程可取消性的检测 ................................................................................................................. 388
11.7 分离线程 ............................................................................................................................................ 391
11.8 注册线程清理处理函数 .................................................................................................................... 393
11.9 线程属性 ............................................................................................................................................ 398
线程栈属性 ................................................................................................................................. 398
分离状态属性 ............................................................................................................................. 400
11.10 线程安全 .......................................................................................................................................... 401
线程栈 ....................................................................................................................................... 401
可重入函数 ............................................................................................................................... 402
线程安全函数 ........................................................................................................................... 408
一次性初始化 ........................................................................................................................... 410
线程特有数据 ........................................................................................................................... 412
线程局部存储 ........................................................................................................................... 419
11.11 更多细节问题 .................................................................................................................................. 420
线程与信号 ............................................................................................................................... 421
线程与 fork................................................................................................................................ 425
线程与 I/O................................................................................................................................. 425
11.12 总结.................................................................................................................................................. 425
线程同步 ....................................................................................................................................... 426
12.1 为什么需要线程同步? .................................................................................................................... 427
12.2 互斥锁 ................................................................................................................................................ 430
互斥锁初始化 ............................................................................................................................. 431
互斥锁加锁和解锁 ..................................................................................................................... 431
pthread_mutex_trylock()函数....................................................................................................... 434
销毁互斥锁 ................................................................................................................................. 436
互斥锁死锁 ................................................................................................................................. 438
互斥锁的属性 ............................................................................................................................. 439
12.3 条件变量 ............................................................................................................................................ 440
条件变量初始化 ......................................................................................................................... 442
通知和等待条件变量 ................................................................................................................. 443
条件变量的判断条件 ................................................................................................................. 445
条件变量的属性 ......................................................................................................................... 445
12.4 自旋锁 ................................................................................................................................................ 446
自旋锁初始化 ............................................................................................................................. 446
自旋锁加锁和解锁 ..................................................................................................................... 447
12.5 读写锁 ................................................................................................................................................ 449
读写锁初始化 ............................................................................................................................. 450
读写锁上锁和解锁 ..................................................................................................................... 450
读写锁的属性 ............................................................................................................................. 453
原子哥在线教学:www.yuanzige.com 论坛:www.openedv.com
11
I.MX6U 嵌入式 Linux C 应用编程指南
12.6 总结.................................................................................................................................................... 454
12.7 练习.................................................................................................................................................... 454
高级 I/O......................................................................................................................................... 455
13.1 非阻塞 I/O.......................................................................................................................................... 456
阻塞 I/O 与非阻塞 I/O 读文件................................................................................................... 456
阻塞 I/O 的优点与缺点.............................................................................................................. 460
使用非阻塞 I/O 实现并发读取.................................................................................................. 461
13.2 I/O 多路复用....................................................................................................................................... 464
何为 I/O 多路复用...................................................................................................................... 464
select()函数介绍........................................................................................................................... 464
poll()函数介绍 ............................................................................................................................. 468
13.3 异步 IO............................................................................................................................................... 472
13.4 优化异步 I/O...................................................................................................................................... 474
使用实时信号替换默认信号 SIGIO.......................................................................................... 475
使用 sigaction()函数注册信号处理函数 ................................................................................... 475
使用示例 ..................................................................................................................................... 476
13.5 存储映射 I/O...................................................................................................................................... 478
mmap()和 munmap()函数............................................................................................................ 479
mprotect()函数 ............................................................................................................................. 484
msync()函数 ................................................................................................................................. 484
普通 I/O 与存储映射 I/O 比较................................................................................................... 485
13.6 文件锁 ................................................................................................................................................ 486
flock()函数加锁 ........................................................................................................................... 487
fcntl()函数加锁 ............................................................................................................................ 492
lockf()函数加锁 ........................................................................................................................... 504
13.7 小结.................................................................................................................................................... 504
本篇总结 ....................................................................................................................................... 505
第二篇 提高篇 ............................................................................................................................................... 506
点亮 LED....................................................................................................................................... 507
15.1 应用层操控硬件的两种方式 ............................................................................................................ 508
sysfs 文件系统 ............................................................................................................................. 508
sysfs 与/sys................................................................................................................................... 508
总结 ............................................................................................................................................. 509
15.2 LED 硬件控制方式............................................................................................................................. 509
15.3 编写 LED 应用程序........................................................................................................................... 511
15.4 在开发板上测试 ................................................................................................................................ 514
GPIO 应用编程............................................................................................................................. 515
16.1 应用层如何操控 GPIO...................................................................................................................... 516
16.2 编写应用程序 .................................................................................................................................... 518
16.3 在开发板上测试 ................................................................................................................................ 521
原子哥在线教学:www.yuanzige.com 论坛:www.openedv.com
12
I.MX6U 嵌入式 Linux C 应用编程指南
输入设备应用编程 ....................................................................................................................... 523
17.1 输入类设备编程介绍 ........................................................................................................................ 524
什么是输入设备 ......................................................................................................................... 524
input 子系统................................................................................................................................. 524
读取数据的流程 ......................................................................................................................... 524
应用程序如何解析数据 ............................................................................................................. 524
17.2 编写程序读取输入设备的数据 ........................................................................................................ 527
17.3 在开发板上测试 ................................................................................................................................ 528
17.4 读取触摸屏数据 ................................................................................................................................ 532
FrameBuffer 应用编程.................................................................................................................. 537
18.1 什么是 FrameBuffer........................................................................................................................... 538
18.2 LCD 的基础知识 ................................................................................................................................ 538
18.3 LCD 应用编程介绍 ............................................................................................................................ 538
使用 ioctl()获取屏幕参数信息................................................................................................... 538
使用 mmap()将显示缓冲区映射到用户空间............................................................................ 543
18.4 LCD 应用编程练习之刷 LCD 背景颜色........................................................................................... 543
18.5 LCD 应用编程练习之 LCD 打点 ...................................................................................................... 547
18.6 LCD 应用编程练习之显示 BMP 图片.............................................................................................. 551
BMP 图像介绍............................................................................................................................. 551
编写应用程序 ............................................................................................................................. 558
在开发板上测试 ......................................................................................................................... 563
18.7 练习.................................................................................................................................................... 564
PWM 应用编程............................................................................................................................. 565
V4L2 摄像头应用编程................................................................................................................. 565
串口应用编程 ........................................................................................................................... 565
看门狗应用编程 ....................................................................................................................... 565
音频应用编程 ........................................................................................................................... 566
CAN 应用编程.......................................................................................................................... 566
USB 应用编程........................................................................................................................... 566
网络编程基础 ........................................................................................................................... 566
第三篇 进阶篇 ............................................................................................................................................... 567
链接库 ....................................................................................................................................... 567
cmake 入门................................................................................................................................ 567
cmake 进阶................................................................................................................................ 567
使用 syslog 生成日志信息 ........................................................................................................... 567
应用程序调试手段 ................................................................................................................... 567
小项目实战之 MQTT............................................................................................................... 567
原子哥在线教学:www.yuanzige.com 论坛:www.openedv.com
13
I.MX6U 嵌入式 Linux C 应用编程指南
小项目实战之未完待续! ....................................................................................................... 567
小项目实战之规划中 ............................................................................................................... 567

实例下载地址

【正点原子】I.MX6U嵌入式Linux C应用编程指南V1.0

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警