1800+页使用手册(持续更新)+入门视频教程+实战视频教程
关注VX公众号:迅为电子 , 回复 :终结者,免费获取产品资料
让教程更细致,终结入门难!
所有教程由迅为原创,是迅为工作多年的工程师精心编写,深知初学者痛点。从Linux入门到驱动开发再到系统移植,一步一步由浅入深,逐步掌握嵌入式技术。每个例子有详细的注释,每个命令详细的说明。只要你对嵌入式感兴趣,就可以学习。
注意事项与售后维修 2
技术支持与开发定制 4
资料获取与后续更新 5
更新记录 6
前言 开发板使用前必读 31
必须注意的问题 31
一 光盘资料介绍 31
二 开发板使用前装配流程 33
第一部分 总领及学习指引 37
01 框架学习法 38
02 嵌入式系统学习的框架 39
03 关于裸机程序和仿真 41
04 基于迅为开发板的学习步骤 42
第一章 开发板初体验 44
1.1 初识i.MX6ULL终结者开发板 45
1.2 i.MX6ULL终结者硬件资源说明 46
1.2.1 i.MX6ULL核心板资源说明 46
1.2.2 i.MX6ULL终结者底板资源说明 48
1.3 i.MX6ULL终结者底板原理分析 51
1.3.1 核心板接口 51
1.3.2 启动方式原理部分 52
1.3.3 系统电源接口 53
1.3.4 复位电路 54
1.3.5 纽扣电池电路 55
1.3.6 CAN接口电路 56
1.3.7 RS485/TTL串口选择电路 56
1.3.8 GPIO接口电路 57
1.3.9 RS485电路 57
1.3.10 USB转串口电路 58
1.3.11 LED电路 60
1.3.12 按键电路 60
1.3.13 蜂鸣器电路 60
1.3.14 TF卡电路 61
1.3.15 EEPROM电路 62
1.3.16 音频电路 62
1.3.17 RGB屏幕电路 64
1.3.18 LVDS屏幕接口 65
1.3.19 USB OTG电路 66
1.3.20 USB HOST接口 67
1.3.21 CSI摄像头接口电路 68
1.3.22 WIFI/蓝牙电路 69
1.3.23 PCIE 4G模块电路 69
1.3.24 六轴传感器电路 70
1.3.25 光环境传感器电路 71
1.3.26 温湿度传感器电路 71
1.3.27 ADC电位器电路 72
1.3.28 红外接收电路 73
1.3.29 HDMI接口电路 73
1.3.30 以太网电路 74
1.4 i.MX6ULL终结者软件资源 76
1.5 外设功能验证 79
1.5.1 用户LED测试 79
1.5.2 蜂鸣器测试 79
1.5.3 ADC电位器测试 80
1.5.4 TF卡测试 80
1.5.5 USB HOST测试 81
1.5.6 以太网测试 83
1.5.7 用户按键测试 86
1.5.8 内存测试 87
1.5.9 Linux系统时钟测试 88
1.5.10 CSI摄像头测试 89
1.5.11 USB摄像头测试 92
1.5.12 AP3216C测试 94
1.5.13 WIFI联网测试 95
1.5.14 PCIE 4G模块测试 97
1.5.15 CAN接口测试 101
1.5.16 485接口测试 103
1.5.17 DHT11模块测试 106
1.6 外设模块功能验证 108
1.6.1 RC522模块测试 108
1.6.2 步进电机模块测试 110
1.6.3 GPS模块测试 113
1.6.4 zigbee模块测试 115
1.6.5 继电器模块测试 121
第二章 Ubuntu系统安装及配置 123
2.1 虚拟机VMware的安装 124
2.2 虚拟机安装Ubuntu系统 130
2.2.1 获取Ubuntu系统镜像 130
2.2.2 虚拟机安装Ubuntu系统 131
2.3 Ubuntu系统初体验 145
2.3.1 登录Ubuntu系统 145
2.3.2 Ubuntu系统设置 150
2.3.3 Ubuntu系统关机 154
2.3.4 Ubuntu设置中文显示 155
2.4 Ubuntu终端和常用命令 163
2.4.1 Ubuntu的终端 163
2.5 Ubuntu常用命令 164
2.5.1 文件信息查看命令ls 165
2.5.2 目录切换命令cd 166
2.5.3 显示当前路径命令pwd 166
2.5.4 系统信息查看命令uname 167
2.5.5 清屏命令clear 167
2.5.6 切换用户执行身份命令sudo 168
2.5.7 添加用户命令adduser 169
2.5.8 删除用户命令deluser 169
2.5.9 切换用户命令su 170
2.5.10 查看文件内容命令cat 171
2.5.11 网络配置命令ifconfig 171
2.5.12 帮助命令man 172
2.5.13 系统重启命令reboot 173
2.5.14 系统关机命令poweroff 173
2.6 apt-get软件下载工具 174
2.6.1 更新软件列表 176
2.6.2 检查依赖是否有损坏 176
2.6.3 软件安装 176
2.6.4 软件更新 178
2.6.5 软件卸载 180
2.7 文本编辑工具 181
2.8 Linux文件系统 189
2.8.1 Linux文件系统类型 189
2.8.2 文件操作命令 191
2.9 Linux用户权限 200
2.9.1 用户组及用户 200
2.9.2 文件权限管理 201
2.9.3 权限管理命令 203
第三章 Ubuntu下C 编程入门 206
3.1 Linux下编写第一个C 程序 207
3.1.1 代码编写 207
3.1.2 代码编译 208
3.2 gcc编译器 210
3.2.1 gcc命令分析 210
3.2.2 编译警告错误处理 210
3.2.3 gcc编译流程 211
3.3 初识Makefile 212
3.3.1 什么是Makefile 212
3.3.2 第一个Makefile 212
3.4 Makefile语法 216
3.4.1 初识Makefile 216
3.4.2 Makefile的变量 218
3.4.3 条件判断 220
3.4.4 使用函数 221
3.4.5 在规则中使用通配符 223
第二部分 裸机开发 224
第四章 开发环境搭建详解 225
4.1 搭建SSH服务 226
4.2 Windows安装ssh客户端 228
4.3 搭建交叉编译环境 237
4.4 SecureCRT 软件安装和使用 241
4.5 安装CH340串口驱动 250
4.6 Source Insight 软件安装和使用 253
4.7 Putty软件的安装教程 283
4.8 MobaXterm的安装教程 291
4.9 VMware 虚拟机扩展Ubuntu系统磁盘空间 294
第五章 i.MX6ULL启动方式和镜像文件格式 299
5.1 i.MX6ULL启动方式 300
5.2 镜像格式 304
第六章 i.MX6ULL镜像烧写 309
6.1 mfgtool烧写镜像 310
6.2 屏幕设置 314
第七章 Cortex-A7架构 316
7.1 Cortex-A7运行模式 317
7.2 Cortex-A7寄存器组 318
7.2.1 通用寄存器 319
7.2.2 程序状态寄存器 320
第八章 初识ARM汇编 323
8.1 GNU汇编语法 324
8.2 ARM汇编指令 326
8.2.1 MOV指令 326
8.2.2 MRS指令 326
8.2.3 MSR指令 326
8.2.4 LDR指令 326
8.2.5 STR指令 327
8.2.6 入栈,出栈指令 327
8.2.7 跳转指令 327
8.2.8 逻辑运算指令 328
8.2.9 算数运算符 329
第九章 第一个汇编实验 330
9.1 i.MX6ULL GPIO分析 331
9.2 IO引脚配置 335
9.3 GPIO配置 336
9.4 GPIO时钟 342
9.5 LED原理分析 344
9.6 LED汇编程序 344
9.7 编译LED汇编程序 348
第十章 C 语言实现LED例程 356
10.1 C 程序版LED例程简介 357
10.2 原理图分析 357
10.3 程序编写 357
10.4 修改Makefile 364
10.5 编译烧写验证 366
第十一章 移植官方SDK 368
11.1 官方SDK简介 369
11.2 硬件原理图分析 370
11.3 SDK程序编写 370
11.4 编译下载 378
第十二章 创建裸机工程 380
12.1 创建工程目录结构 381
12.2 原理分析 382
12.3 程序设计 382
12.4 编译及运行 391
第十三章 蜂鸣器例程 393
13.1 蜂鸣器原理 394
13.2 原理分析 394
13.3 程序设计 395
13.4 编译及运行 400
第十四章 按键例程 404
14.1 按键输入原理 405
14.2 原理分析 405
14.3 程序设计 405
14.4 编译及运行 416
第十五章 主频和时钟配置例程 421
15.1 i.MX6ULL时钟系统 422
15.2 原理分析 435
15.3 程序设计 435
15.4 编译及运行 441
第十六章 GPIO中断例程 445
16.1 中断系统简介 446
16.1.1 中断向量表 446
16.1.2 GIC控制器 451
16.2 原理分析 468
16.3 程序设计 468
16.4 编译及运行 488
第十七章 EPIT定时器例程 492
17.1 EPIT定时器介绍 493
17.2 原理分析 496
17.3 程序设计 496
17.4 编译及运行 501
第十八章 定时器按键例程 504
18.1 定时器按键原理 505
18.2 原理分析 505
18.3 程序设计 505
18.4 编译及运行 512
第十九章 GPT定时器延时例程 515
19.1 GPT 定时器简介 516
19.2 GPT定时器延时原理 520
19.3 原理分析 520
19.4 程序设计 520
19.5 编译及运行 526
第二十章 串口通信例程 529
20.1 串口简介 530
20.2 原理分析 536
20.3 程序设计 538
20.4 编译及运行 549
第二十一章 串口格式化函数例程 555
21.1 原理分析 556
21.2 程序设计 556
21.3 编译及运行 559
第二十二章 LCD屏幕显示例程 563
22.1 eLCDIF接口简介 564
22.2 原理分析 576
22.3 程序设计 577
22.4 编译及运行 604
第二十三章 SRTC实时时钟例程 608
23.1 SRTC简介 609
23.2 原理分析 613
23.3 程序设计 614
23.4 编译及运行 627
第二十四章 I2C操作 631
24.1 I2C简介 632
24.2 原理分析 641
24.3 程序设计 641
24.4 编译及运行 660
第二十五章 电容触摸实验 665
25.1 触摸屏简介 666
25.2 原理分析 668
25.3 程序设计 668
25.4 编译及运行 681
第二十六章 屏幕背光调节例程 686
26.1 背光调节简介 687
26.2 原理分析 693
26.3 程序设计 693
26.4 编译及运行 701
第二十七章 MPU6050 六轴传感器例程 707
27.1 MPU6050简介 708
27.2 原理分析 712
27.3程序设计 712
27.4 编译运行 722
第二十八章 DHT11温湿度模块例程 726
28.1 DHT11简介 727
28.2 原理分析 729
28.3 程序设计 730
28.4 编译运行 741
第三部分 Linux系统移植篇 746
第二十九章 编译终结者开发板的Uboot和内核 747
29.1 安装第三方库 748
29.2 编译终结者开发板Uboot 750
29.3 编译终结者开发板Linux内核 751
第三十章 Linux内核启动流程 754
30.1 Linux内核启动(一):Linux内核自解压过程 755
30.2 Linux内核启动(二):ARM处理器相关设置 755
30.2.1 Linux内核入口函数Stext 756
30.2.2 _Mmap_Switched 函数 759
30.3 Linux内核启动(三):内核初始化 760
30.3.1 Start_Kernel 函数 760
30.3.2 Rest_Init 函数 764
30.3.3 Init 进程 766
第三十一章 linux内核裁剪与定制 770
31.1 获取Linux源码 771
31.2 NXP官方Linux源码编译 771
31.2.1 配置交叉编译工具链 771
31.2.2 配置并编译Linux内核 771
31.3 在Linux中添加自己的开发板 772
31.3.1 添加默认开发板内核配置文件 772
31.3.2 添加开发板对应的设备树文件 773
31.3.3 编译开发板对应镜像 773
31.4 添加简单设备驱动 774
31.4.1 网卡驱动 774
31.4.2 LED灯驱动 779
31.5 Linux 5.4.3系统移植 780
31.5.1 获取Linux内核源码 780
31.5.2 搭建编译环境 784
31.5.3 编译内核 785
第三十二章 Linux文件系统的构建 793
32.1 根文件系统简介 794
32.2 根文件系统目录介绍 794
32.3 BusyBox构建根文件系统 795
32.3.1 获取BusyBox源码 796
32.3.2 编译BusyBox构建根文件系统 797
32.3.3 构建整个根文件系统 804
32.4 完善根文件系统 807
32.4.1 创建/etc/init.d/rcS文件 807
32.4.2 创建/etc/fstab文件 808
32.4.3 创建/etc/inittab文件 809
32.4.4 生成文件系统镜像 810
第四部分 Linux驱动开发 812
第三十三章 字符设备驱动 813
33.1 字符设备驱动开发 814
33.2 常规字符设备驱动框架 814
33.3 简化版字符设备驱动框架 818
33.4 设备号 822
33.4.1 设备号的组成 822
33.4.2 设备号的分配 822
33.5 驱动模块的安装与卸载 824
33.6 字符设备驱动实验 825
33.6.1 常规字符驱动程序 825
33.6.2 简化版字符设备驱动程序 831
33.6.3 Linux下应用测试程序 832
33.6.4 编译驱动和应用程序 834
33.6.5 运行测试 835
33.7 自动创建设备节点 839
33.7.1 mdev简介 839
33.7.2 创建和删除类函数 839
33.7.3 创建设备函数 840
33.7.4 代码实例 840
33.7.5 运行测试 845
第三十四章 Linux设备树 848
34.1 什么是设备树 849
34.2 DTS、DTC和DTB 849
34.3 DTS设备树语法结构 851
34.3.1 dtsi头文件 851
34.3.2 设备节点信息 853
34.3.3 设备节点及label的命名 855
34.3.4 标准属性 856
34.3.5 根节点compatible属性 860
34.3.6 在设备节点中添加或修改内容 865
34.4 设备树实验 867
34.4.1 初始结构 868
34.4.2 添加CPU处理器 868
34.4.3 添加设备 868
34.4.4 CPU编址 870
34.4.5 内存映射设备 870
34.4.6 非内存映射设备 872
34.4.7 地址转换 872
34.4.8 添加中断 874
34.5 设备树在系统中的体现 877
34.6 特殊节点 877
34.6.1 aliases子节点 877
34.6.2 chosen子节点 878
34.7 DTB文件格式 879
34.7.1 DTB文件格式总览 879
34.7.2 DTB起始段 879
34.7.3 内存预留块 880
34.7.4 结构块 881
34.7.5 字符串块 881
34.8 Binding信息文档 883
34.9 设备树常用OF操作函数 884
34.9.1 查找节点的OF函数 885
34.9.2 查找父子节点的OF函数 887
34.9.3 获取属性值的OF函数 887
34.9.4 其他常用的 OF 函数 891
第三十五章 Pinctrl子系统和GPIO子系统 894
35.1 Pinctrl子系统 895
35.1.1 配置pinctrl 895
35.1.2 调用pinctrl 900
35.2 GPIO子系统 901
第三十六章 Linux LED实验 904
36.1 LED设备注册流程 905
36.2 LED硬件原理图分析 905
36.3 修改设备树文件 905
36.3.1 添加Pinctrl信息 905
36.3.2 添加LED设备节点 906
36.4 编写LED驱动程序 907
36.5 编写应用测试程序 913
36.6 编译运行测试 915
36.6.1 编译LED驱动文件 915
36.6.2 编译应用测试程序 916
36.6.3 运行测试 916
第三十七章 Linux 蜂鸣器实验 917
37.1 蜂鸣器设备注册流程 918
37.2 蜂鸣器硬件原理图分析 918
37.3 修改设备树文件 918
37.3.1 添加pinctrl信息 918
37.3.2 添加beep设备节点 919
37.4 编写蜂鸣器驱动程序 919
37.5 编写应用测试程序 925
37.6 编译运行测试 926
37.6.1 编译蜂鸣器驱动文件 926
37.6.2 编译应用测试程序 927
37.6.3 运行测试 927
第三十八章 Linux并发与竞争 929
38.1 并发与竞争 930
38.2 中断屏蔽 930
38.3 原子操作 931
38.3.1 什么是原子操作 931
38.3.2 整型原子操作 932
38.3.3 位原子操作 933
38.4 自旋锁 934
38.4.1 自旋锁简介 934
38.4.2 自旋锁相关函数 935
38.4.3 其他类型的锁 937
38.5 信号量 939
38.5.1 信号量简介 939
38.5.2 信号量相关函数 940
38.6 互斥体 941
38.6.1 互斥体简介 941
38.6.2 互斥体相关函数 942
第三十九章 Linux并发与竞争实验 944
39.1 原子操作 945
39.1.1 实验程序编写 945
39.1.2 编写应用测试程序 951
39.1.3 运行测试 953
39.2 自旋锁实验 955
39.2.1 实验程序编写 955
39.2.2 编写应用测试程序 962
39.2.3 运行测试 962
39.3 信号量实验 963
39.3.1 编写驱动程序 964
39.3.2 编写应用测试程序 967
39.3.3 运行测试 967
39.4 互斥体实验 969
39.4.1 编写驱动程序 969
39.4.2 编写应用测试程序 971
39.4.3 运行测试 972
第四十章 Linux按键输入实验 974
40.1 Linux下按键驱动原理 975
40.2 按键硬件原理图分析 975
40.3 修改设备树文件 975
40.3.1 添加Pinctrl节点 975
40.3.2 添加KEY设备节点 976
40.4 按键驱动程序 976
40.5 应用测试程序 982
40.6 运行测试 983
40.6.1 编译按键驱动文件 983
40.6.2 编译应用测试程序 984
40.6.3 运行测试 984
第四十一章 Linux内核定时器实验 986
41.1 Linux时间管理和内核定时器简介 987
41.1.1 Linux内核时间管理 987
41.1.2 内核定时器简介 989
41.2 实验程序编写 991
41.2.1 驱动程序编写 991
41.2.2 应用测试程序编写 999
41.3 运行测试 1001
41.3.1 编译驱动文件 1001
41.3.2 编译应用程序 1001
41.3.3 运行测试 1002
第四十二章 Linux中断实验 1003
42.1 Linux中断简介 1004
42.1.1 Linux中断介绍 1004
42.1.2 Linux中断相关函数 1004
42.1.3 顶半部与底半部 1006
42.1.4 设备树中的中断节点 1013
42.1.5 驱动获取中断号函数 1015
42.2 实验程序编写 1015
42.2.1 修改设备树文件 1015
42.2.2 按键中断驱动程序 1016
42.2.3 编写应用测试程序 1025
42.3 运行测试 1027
42.3.1 编译驱动程序 1027
42.3.2 编译应用测试程序 1027
42.3.3 运行测试 1027
第四十三章 Linux阻塞和非阻塞IO实验 1029
43.1 阻塞和非阻塞IO 1030
43.1.1 阻塞和非阻塞简介 1030
43.1.2 等待队列 1031
43.1.3 轮询 1034
43.1.4 Linux驱动下的poll操作函数 1039
43.2 阻塞IO实验 1040
43.2.1 驱动程序编写 1040
43.2.2 编写应用测试程序 1050
43.2.3 运行测试 1050
43.3 非阻塞IO实验 1052
43.3.1 编写驱动程序 1052
43.3.2 编写应用测试程序 1056
43.3.3 运行测试 1058
第四十四章 Linux异步通知实验 1061
44.1 异步通知 1062
44.1.1 异步通知概念 1062
44.1.2 Linux信号 1062
44.1.3 应用程序中信号的处理 1064
44.1.4 驱动中信号的处理 1065
44.2 编写实验程序 1067
44.2.1 驱动程序编写 1067
44.2.2 应用测试程序 1077
44.2.3 运行测试 1079
第四十五章 Platform设备驱动 1081
45.1 Linux设备驱动分层和分离 1082
45.1.1 设备驱动的分层思想 1082
45.1.2 主机驱动和外设驱动分离思想 1083
45.2 Platform平台驱动模型 1084
45.2.1 Platform设备 1084
45.2.2 Platform驱动 1087
45.2.3 Platform总线 1092
45.3 实验程序 1095
45.3.1 Platform设备和驱动程序 1095
45.3.2 应用测试程序 1106
45.4 运行测试 1107
45.4.1 编译驱动和设备程序 1107
45.4.2 编译应用测试程序 1108
45.4.3 运行测试 1108
第四十六章 设备树下的Platform驱动 1111
46.1 设备树下的Platform设备 1112
46.2 实验程序编写 1113
46.2.1 修改设备树文件 1113
46.2.2 platform驱动程序 1113
46.2.3 应用测试程序 1119
46.3 运行测试 1119
46.3.1 编译驱动程序 1119
46.3.2 编译应用测试程序 1120
46.3.3 运行测试 1120
第四十七章 Linux内核自带LED灯驱动 1122
47.1 Linux内核中的LED灯驱动 1123
47.2 Linux自带LED驱动分析 1124
47.2.1 LED灯驱动框架分析 1124
47.2.2 Module_platform_driver函数解析 1125
47.2.3 Gpio_led_probe函数解析 1126
47.3 添加设备树节点 1129
47.4 运行测试 1130
第四十八章 Linux MISC驱动 1132
48.1 misc设备驱动简介 1133
48.2 编写实验程序 1134
48.2.1 修改设备树文件 1134
48.2.2 编写驱动程序 1134
48.2.3 应用测试程序 1140
48.3 运行测试 1142
48.3.1 编译驱动程序 1142
48.3.2 编译应用测试程序 1142
48.3.3 运行测试 1142
第四十九章 Linux INPUT子系统实验 1144
49.1 Input子系统 1145
49.1.1 input子系统简介 1145
49.1.2 input驱动程序编写流程 1146
49.1.3 input_event结构体 1152
49.2 编写实验程序 1153
49.2.1 编写驱动程序 1153
49.2.2 应用测试程序 1159
49.3 运行测试 1162
49.3.1 编译驱动程序 1162
49.3.2 编译应用测试程序 1162
49.3.3 运行测试 1162
49.4 linux自带按键驱动程序 1164
49.4.1 Linux自带按键驱动程序源码 1164
49.4.2 Linux内核自带按键驱动程序的使用 1170
第五十章 Linux LCD驱动实验 1172
50.1 Linux下LCD驱动简介 1173
50.1.1 framebuffer设备 1173
50.1.2 LCD驱动解析 1174
50.2 编写LCD驱动程序 1180
50.2.1 设备树中LCD屏幕GPIO配置 1180
50.2.2 LCD屏幕参数节点信息 1182
50.2.3 LCD屏幕背光节点信息 1184
50.3 运行测试 1186
50.3.1 LCD屏幕基本测试 1186
50.3.2 LCD背光调节 1187
第五十一章 Linux RTC驱动实验 1189
51.1 Linux内核RTC驱动简介 1190
51.2 i.MX6UL下的RTC驱动 1194
51.3 Linux系统下RTC时间设置与查看 1200
51.3.1 查看RTC时间 1200
51.3.2 设置RTC时间 1200
第五十二章 Linux I2C驱动实验 1202
52.1 Linux I2C驱动框架简介 1203
52.1.1 I2C总线驱动 1203
52.1.2 I2C设备驱动 1205
52.1.3 I2C核心 1209
52.2 IMX6ULL的I2C总线驱动分析 1210
52.3 I2C设备驱动编写流程 1217
52.3.1 设备信息描述 1217
52.3.2 I2C设备的数据收发和处理 1219
52.4 实验程序编写 1223
52.4.1 硬件原理图 1223
52.4.2 修改设备树 1223
52.4.3 驱动程序编写 1225
52.4.4 应用测试程序 1236
52.5 运行测试 1237
52.5.1 编译驱动程序 1237
52.5.2 编译应用测试程序 1238
52.5.3 运行测试 1238
第五十三章 Linux RS232/485驱动实验 1240
53.1 Linux下的UART驱动框架 1241
53.1.1 uart_driver结构体 1241
53.1.2 uart_port结构体 1242
53.1.3 uart_ops结构体 1243
53.2 i.MX6UL UART驱动分析 1244
53.2.1 uart的platform驱动框架 1244
53.2.2 uart_driver初始化 1247
53.2.3 uart_port初始化和注册 1247
53.2.4 imx_pops结构体 1250
53.3 硬件原理图 1252
53.3.1 RS232原理图 1252
53.3.2 RS485原理图 1252
53.4 RS232驱动 1253
53.4.1 设备树添加UART3节点 1253
53.5 RS232驱动测试 1254
53.5.1 编写应用测试程序 1254
53.5.2 运行测试 1259
53.6 RS485测试 1260
第五十四章 Linux 电容触摸屏实验 1261
54.1 Linux下电容触摸屏驱动框架 1262
54.1.1 多点触摸协议详解 1262
54.1.2 Type A 触摸点信息上报时序 1263
54.1.3 Type B触摸点信息上报时序 1265
54.1.4 MT其他事件的使用 1267
54.1.5 多点触摸使用到的API函数 1267
54.1.6 多点电容触摸驱动框架 1269
54.2 硬件原理图 1274
54.3 实验程序编写 1275
54.3.1 修改设备树文件 1275
54.3.2 编写多点电容触摸驱动 1276
54.4 运行测试 1288
54.4.1 编译驱动程序 1288
54.4.2 运行测试 1289
54.4.3 将驱动添加到内核中 1290
54.5 Tslib移植和使用 1291
54.5.1 获取tslib源码 1291
54.5.2 编译tslib 1292
54.5.3 测试tslib 1293
54.6 使用Linux内核自带的ft5426驱动 1294
第五十五章 Linux WIFI驱动实验 1297
55.1 wifi驱动添加和编译 1298
55.1.1 在Linux内核中添加wifi驱动 1298
55.1.2 配置Linux内核 1299
55.1.3 Rtl8723 wifi模块驱动测试 1302
55.2 Wireless Tools 工具移植与测试 1303
55.2.1 wireless tools工具移植 1303
55.2.2 wireless tools工具测试 1304
55.3 Wpa_supplicant 移植 1305
55.3.1 libopenssl移植 1305
55.3.2 libnl库移植 1306
55.3.3 wpa_supplicant 移植 1307
55.4 rtl8723 Wifi联网测试 1308
第五十六章 Linux 4G通信实验 1312
56.1 4G网络连接 1313
56.2 EC20 4G模块配置 1314
56.2.1 添加USB设备信息 1314
56.2.2 Linux内核配置 1315
56.3 EC20 4G模块联网测试 1317
56.3.1 PPP软件包编译 1317
56.3.2 EC20 4G模块联网测试 1318
第五部分 Linux构建文件系统篇 1324
第五十七章 Linux文件系统开发 1325
57.1 根文件系统简介 1326
57.1.1 根文件系统 1326
57.1.2 根文件系统目录 1326
57.2 制作最小文件系统镜像 1328
57.2.1 BusyBox工具简介 1328
57.2.2 Busybox 制作最小文件系统 1329
57.3 最小Linux系统功能测试 1351
57.3.1 U盘挂载与卸载 1351
57.3.2 编译测试helloworld 1352
57.3.3 广域网连接测试 1355
57.3.4 中文显示测试 1355
第五十八章 Buildoot文件系统构建篇 1358
58.1 buildroot简介 1359
58.2 buildroot构建文件系统 1359
58.2.1 获取Buildroot 1359
58.2.2 配置及编译Buildroot 1360
58.3 buildroot文件系统测试 1369
58.4 buildroot添加支持第三方软件 1370
58.4.1 使能Alsa-lib 1370
58.4.2 使能Alsa-utils 1372
58.5 buildroot下配置Busybox 1375
第五十九章 Yocto文件系统构建篇 1377
59.1 注意事项 1378
59.2 在线构建文件系统 1378
59.2.1 安装软件包与配置git 1378
59.2.2 获取Yocto项目 1380
59.2.3 构建文件系统 1382
59.2.4 构建SDK工具 1387
59.3 离线构建文件系统 1388
第六十章 Ubuntu文件系统 1390
60.1 Ubuntu-base获取 1391
60.2 Ubuntu-base构建 1392
60.2.1 解压Ubuntu-base 1392
60.2.2 安装Qemu-User-Static工具 1393
60.2.3 设置软件源 1393
60.2.4 挂载根文件系统并Chroot 1394
60.3 Ubuntu文件系统测试 1398
60.3.1 打包烧写Ubuntu 1398
60.3.2 Ubuntu 根文件系统测试 1399
第六十一章 Debian文件系统的构建 1402
61.1 i.MX6ULL 移植Debian文件系统 1402
61.1.1 安装Qumu和Debootstrap 1402
61.1.2 抽取Debain文件系统 1402
61.1.3 完善文件系统 1403
61.1.4 打包文件系统 1405
61.1.5 烧写验证 1406
第六部分 QT开发 1407
第六十二章 QT应用开发 1408
62.1 c++入门 1408
62.1.1 c++基础 1408
62.1.2 c++类和对象 1409
62.1.3 函数的重载 1411
62.1.4 构造函数和析构函数 1411
62.1.5 虚函数和纯虚函数 1413
62.2 Qt基础 1413
62.2.1 安装Qtcreator 1414
62.2.2 创建工程 1416
62.2.3 信号和槽 1419
62.2.4 给界面添加图片 1426
62.2.5 界面布局 1433
62.2.6 界面切换 1437
62.2.7 Qt串口编程 1439
62.2.8 Qt程序打包和部署 1449
62.2.9 Qt网络编程 1452
62.2.10 Qt定时器 1466
62.3 Qt系统移植 1472
62.3.1 制作根文件系统 1472
62.3.2 交叉编译Qt源码 1494
62.3.3 搭建Qt文件系统 1498
62.3.4 交叉编译 Qt代码 1501
62.4 Qt下控制硬件 1503
62.5 Qt for Android 1511
62.5.1 搭建开发环境 1511
62.5.2 制作安卓APP 1514
62.6 一键烧写QT程序到开发板 1519
62.6.1 在开发板上移植ssh 1519
62.6.2 安装ssh 1525
62.6.3 生成KEY文件,并安装 1526
62.6.4 修改目标板密钥文件 1527
62.6.5 测试 1527
62.6.6 在Ubuntu上搭建QT开发环境 1529
62.6.7 配置编译套件 1535
第六十三章 QT实战项目 1546
63.1 DHT11&网络编程实战练习 1546
63.1.1 项目前准备 1546
63.1.3 Linux应用程序 1546
63.1.4 终结者Qt服务器 1550
63.1.2 软件流程图 1557
63.1.5 PC端Qt软件开发 1560
63.1.6 运行测试 1567
第六十四章 使用Yocto文件系统开发QT 1571
64.1 安装测试Qt Creator 1572
64.1.1 QT安装包获取 1572
64.1.2 QT安装 1573
64.1.3 Ubuntu下QT应用开发 1577
64.2 安装交叉编译工具及QT 1585
64.3 搭建IMX6Ul/ULL QT Creator交叉编译环境 1586
64.4 QT工程的编译及测试 1596
64.4.1 QT Creator直接编译ARM架构程序 1596
64.4.2 命令行编译QT程序 1599
64.4.3 运行Helloworld 1601
64.5 文件系统 1603
64.5.1 外部存储设备(U盘,TF卡)使用 1603
64.5.2 网络配置 1604
64.5.3 触摸测试 1607
64.5.4 屏幕亮度(背光) 1608
第七部分 Linux系统开发进阶 1609
第六十五章 Mfgtools修改单独只烧写Uboot,内核,文件系统 1610
第六十六章 iTOP-i.MX6ULL开发板-修改开机进度条修改文档 1615
第六十七章 iTOP-i.MX6ULL开发板-Uboot-Logo修改文档 1622
67.1 Uboot修改 1622
67.2 Uboot测试 1630
第六十八章 iTOP-i.MX6ULL开发板-内核-Logo 修改使用文档 1631
68.1 内核配置 1631
68.2 生成 PPM 文件 1635
68.2.1 使用 PS 软件修改图片分辨率和位深度 1635
68.2.2 使用工具“Bmptopnm”将图片转化为 ppm 格式 1637
68.2.3 修改内核 Logo 文件 1638
68.3 测试 1638
68.4 Logo 位置的居中调整 1639
第六十九章 iTOP-i.MX6ULL开发板-移植Gdb+Gdbserver调试 1641
第七十章 iTOP-iMX6ULL开发板-移植ssh服务 1649
70.1 SSH 官网和下载地址 1649
70.2 详细移植过程 1649
70.2.1 移植 Zlib 1650
70.2.2 移植 Openssl 1652
70.2.3 移植 SSH 1656
70.3 安装测试 1658
70.3.1 基本文件的安装 1658
70.3.2 生成 Key 文件,并安装 1659
70.3.3 修改目标板密钥文件 1660
70.3.4 测试 1660
第七十一章 iTOP-i.MX6ULL开发板-Jtag调试 1665
71.1 调试需要的硬件环境 1665
71.2 搭建开发环境 1665
71.2.1 安装Jlink V9驱动 1665
71.2.2 安装I.MX6ULL SDK开发包 1669
71.2.3 安装IAR开发工具 1673
71.3 IAR JLNK调试SDK程序 1679
71.4 查看变量的实时值 1692
第七十二章 iTOP-i.MX6ULL开发板-网络通信-套字节TCP 1699
72.1 实验操作 1699
第七十三章 iTOP-i.MX6ULL开发板-网络通信-套字节UDP 1707
73.1 实验操作 1707
第七十四章 iTOP-i.MX6ULL开发板-Tftp烧写和Nfs启动 1713
74.1 配置开发板网络 1713
74.2 Tftp服务搭建 1715
74.3 Nfs服务搭建 1715
74.4 设置自启动参数 1716
第七十五章 iTOP-i.MX6ULL开发板-搭建Web服务器 1720
第七十六章 iTOP-i.MX6ULL开发板-Modbus移植和使用 1727
76.1 什么是Modbus 1727
76.2 源码下载 1727
76.3 编译和移植 1728
76.4 移植ARM测试程序 1730
76.5 X86-Linux的Modbus的移植和编译 1731
76.6 测试 1732
第七十七章 iTOP-i.MX6ULL开发板-USB转串口驱动Ch34X移植 1734
第七十八章 iTOP-i.MX6ULL开发板-Sqlite3移植和使用 1737
第七十九章 iTOP-i.MX6ULL开发板-Qt5.7Mplayer移植文档 1741
79.1 交叉编译Libmad-0.15.1b 1741
79.2 交叉编译Alsa-lob-1.0.22 1742
79.3 交叉编译MPlayer-1.0rc3 1743
79.4 测试软件使用 1744
第八十章 iTOP-i.MX6ULL开发板-移植OpenCv2.4.9 1746
80.1 安装交叉编译工具 1746
80.2 搭建OpenCv编译环境 1746
80.3 QT程序编译 1751
80.4 烧写文件系统 1753
80.5 测试开发板 1754
第八十一章 iTOP-i.MX6ULL开发板-移植OpenCv3.4.1 1756
81.1 安装交叉编译工具 1756
81.2 搭建 OpenCV 的编译环境 1756
81.3 编译 OpenCV 源码 1760
81.4 打包文件系统 1762
81.5 烧写文件系统 1764
81.6 测试开发板 1765
第八十二章 iTOP-i.MX6ULL开发板-网络测试方法 1767
82.1 测试环境搭建 1767
82.2 安装 Java环境 1769
82.3 安装测试软件 1772
82.4 设置网络 1773
82.5 TCP测试 1774
82.6 UDP测试 1775
第八十三章 iTOP-i.MX6ULL开发板-Mqtt 移植教程 1778
83.1 MQTT介绍 1778
83.2 在 X86 上安装mosquitto 1778
83.3 在x86上测试mosquitto 1778
83.4 移植 mosquitto 到开发板 1779
83.5 把 mosquitto 移植到开发板 1783
83.6 使用命令在开发板上测试 mqtt 1785
83.7 使用代码在开发板上测试 mqtt 1789
第八十四章 iTOP-i.MX6ULL开发板-Busybox移植DHCP 1793
84.1 安装交叉编译工具链 1793
84.2 下载DHCP-4.4.1源码 1796
84.3 交叉编译DHCP-4.4.1 1797
84.4 打包文件系统 1799
84.5 烧写文件系统 1801
84.6 测试开发板 1802
第八十五章 iTOP-i.MX6ULL开发板-C程序调用shell 1805
第八十六章 iTOP-iMX6ULL开发板-八路串口配置 1809
86.1 文档说明 1809
86.2 UART2配置 1810
86.3 UART3配置 1815
86.4 UART4配置 1817
86.5 UART5配置 1820
86.6 UART6配置 1822
86.7 UART7配置 1823
86.8 UART8配置 1825
86.9 UART1使用方法 1827