暂无商品咨询信息 [发表商品咨询]
本书主要介绍嵌入式Linux接口开发技术,首先介绍Linux的基础知识、嵌入式Linux C的开发基础和Linux系统的文件操作,然后在此基础上详细介绍嵌入式系统常用接口的编程,最后通过一个完整的案例开发来介绍嵌入式系统的综合设计。对于每种接口,本书先介绍其原理,然后通过典型的外设来介绍嵌入式Linux的接口编程。在编程过程中采用示波器和逻辑分析仪来进行验证,通过形象化的手段来提高读者的动手能力,加深读者对本书知识点的理解。
邓宽,男,副教授,博士,毕业于南京理工大学,现为金陵科技学院专任教师。研究方向为嵌入式系统、物联网、通信、人工智能。曾就职于中兴通讯股份有限公司,任职软件工程师。
第1章 嵌入式Linux系统的基础知识 1
1.1 Linux简介 1
1.1.1 Linux的发展 1
1.1.2 Linux的发行版 1
1.1.3 Linux系统的下载方法 2
1.2 在虚拟机上安装Linux系统 2
1.2.1 虚拟机的安装 2
1.2.2 安装Linux系统 2
1.2.3 采用虚拟机镜像导入Linux系统 3
1.2.4 使用Ubuntu系统的注意事项 5
1.3 Linux的文件系统 6
1.4 Linux系统的常用命令 7
1.4.1 系统命令 8
1.4.2 文本文件编辑命令 9
1.4.3 工作目录命令 9
1.5 环境变量 11
1.6 Vim编辑器与Shell脚本命令 12
1.6.1 Vim编辑器 12
1.6.2 Shell脚本命令 13
1.7 用户身份与文件权限 15
1.7.1 passwd命令 15
1.7.2 文件权限 16
1.7.3 chmod命令 16
1.7.4 su命令与sudo命令 17
练习题 17
第2章 嵌入式Linux C开发基础 19
2.1 C语言概述 19
2.2 嵌入式Linux C开发工具 19
2.3 嵌入式编译器gcc 20
2.3.1 初识gcc编译器 20
2.3.2 gcc命令的常用选项及编译过程 20
2.3.3 库的使用 22
2.4 构建工具 23
2.4.1 Makefile文件 23
2.4.2 Makefile文件的特性 25
练习题 28
第3章 Linux系统的文件操作 29
3.1 Linux系统的文件类型 29
3.2 Linux系统的文件描述符 30
3.3 不带缓存的文件I/O操作涉及的函数 30
3.3.1 creat函数 30
3.3.2 open函数 31
3.3.3 read函数 32
3.3.4 write函数 32
3.3.5 lseek函数 33
3.3.6 close函数 33
3.3.7 经典范例:文件复制 33
3.4 带缓存的文件I/O操作涉及的函数 34
3.4.1 带缓存文件I/O操作的主要函数 34
3.4.2 缓存类型 34
3.4.3 带缓存与不带缓存I/O操作的对比 35
3.5 格式化输入/输出函数 35
3.5.1 格式化输入函数:scanf、fscanf和sscanf 35
3.5.2 格式化输出函数:printf、sprintf和fprintf 37
练习题 38
第4章 进程与线程 39
4.1 操作系统调度 39
4.1.1 操作系统调度的基本原理 39
4.1.2 调度的时机与触发条件 39
4.1.3 调度算法与策略 40
4.2 进程简介 40
4.3 线程简介 41
4.3.1 使用多线程的原因 41
4.3.2 多线程的优缺点 41
4.4 多线程的实现 42
4.4.1 线程的创建 42
4.4.2 终止线程 43
4.4.3 等待线程终止 44
4.5 线程同步机制 44
4.5.1 互斥锁(Mutex)介绍 46
4.5.2 互斥锁使用实例 47
4.5.3 互斥锁的优化实例 49
练习题 52
第5章 嵌入式开发板的基本使用 53
5.1 嵌入式开发板简介 54
5.1.1 嵌入式开发板和PC 54
5.1.2 本书配套的嵌入式开发板简介 55
5.2 嵌入式开发板的初步使用 59
5.2.1 嵌入式Linux系统的安装 59
5.2.2 如何登录嵌入式开发板 60
5.2.3 PC通过调试串口登录嵌入式开发板 61
5.2.4 通过网络登录嵌入式开发板 63
5.2.5 配置开机自动连接Wi-Fi 67
5.2.6 配置开机自动运行程序 68
5.2.7 PC和嵌入式开发板之间的文件传输 68
5.3 代码编译的两种方式 70
练习题 73
第6章 嵌入式Linux接口编程:GPIO和PWM 75
6.1 示波器和逻辑分析仪的基本用法 75
6.1.1 示波器简介 75
6.1.2 示波器的触发方式和触发条件 79
6.1.3 逻辑分析仪简介 81
6.2 GPIO接口编程 83
6.2.1 GPIO接口工作原理 84
6.2.2 本书配套代码的组织结构 84
6.2.3 bsp_gpio接口函数简介 85
6.2.4 实验6.1.1:GPIO输入和输出 87
6.2.5 实验6.1.2:多线程GPIO输入和输出 92
6.2.6 通过示波器的三种触发方式观察电压信号的波形 94
6.3 PWM接口编程 96
6.3.1 PWM接口工作原理 96
6.3.2 硬件PWM接口函数简介 98
6.3.3 实验6.2.1:使用硬件PWM控制蜂鸣器的声音 99
6.3.4 实验6.2.2:软硬件PMW的联合应用 103
6.3.5 PWM DAC的原理 106
6.3.6 实验6.3:使用硬件PWM实现DAC 106
6.4 实验6.4:GPIO和PWM综合训练 108
练习题 112
第7章 嵌入式Linux接口编程:UART 113
7.1 串行通信协议的基础 113
7.1.1 串行通信协议的数据格式 113
7.1.2 串行通信协议的电气规则和电路连接方式 114
7.1.3 UART接口信号的波形分析 116
7.1.4 UART接口编程 120
7.1.5 实验7.1:串口和PC间的初步通信 122
7.2 串口屏的原理和使用 126
7.2.1 串口屏简介 126
7.2.2 串口屏的基本使用 127
7.2.3 串口屏的接口函数 129
7.2.4 实验7.2.1:使用串口屏控制LED 130
7.2.5 实验7.2.2:使用串口屏控制蜂鸣器 134
7.3 串口LoRa通信原理与编程 138
7.3.1 LoRa简介 138
7.3.2 LoRa的通信原理 139
7.3.3 LoRa的参数和计算器工具 140
7.3.4 LoRa模块简介 141
7.3.5 LoRa模块接口函数 144
7.3.6 实验7.3.1:配置LoRa模块的参数 145
7.3.7 实验7.3.2:通过LoRa远程遥控嵌入式开发板 148
7.4 RS485接口和Modbus协议简介 153
7.4.1 RS485接口原理 153
7.4.2 Modbus协议原理 155
7.5 RS485温湿度传感器的原理与编程 158
7.5.1 RS485温湿度传感器的原理 158
7.5.2 RS485温湿度传感器的接口函数 159
7.5.3 实验7.4:RS485温湿度传感器的编程 160
7.6 其他UART接口模块 166
7.6.1 串口蓝牙模块 166
7.6.2 GY-39串口气象信息模块 167
7.6.3 串口GNSS模块 167
7.7 实验7.5:UART接口综合训练 167
练习题 176
第8章 嵌入式Linux接口编程:I2C 177
8.1 I2C总线的基础知识 177
8.1.1 I2C总线的物理层特点 177
8.1.2 I2C总线的通信时序 178
8.2 I2C总线的接口函数 180
8.2.1 软件I2C的接口函数 180
8.2.2 硬件I2C的接口函数 185
8.2.3 实验8.1:使用逻辑分析仪测试I2C总线协议 186
8.3 LM75温度模块的原理与编程 189
8.3.1 LM75温度模块的基础知识 189
8.3.2 LM75温度模块的接口函数 191
8.3.3 实验8.2:LM75温度模块的编程 192
8.4 A/D和D/A模块的原理与编程 195
8.4.1 A/D和D/A模块的原理 195
8.4.2 PCF8591模块的基础知识 196
8.4.3 PCF8591芯片的接口函数 198
8.4.4 实验8.3.1:使用PCF8591模块进行A/D转换 198
8.4.5 实验8.3.2:使用PCF8591模块进行D/A转换 202
8.4.6 红外测距原理和分段线性拟合算法 207
8.4.7 实验8.3.3:GP2Y0A红外测距模块的使用 210
8.5 其他I2C设备简介 213
8.5.1 三轴磁力计 213
8.5.2 红外测温传感器 213
8.5.3 血氧和心率监测模块 213
8.6 实验8.4:I2C接口综合训练 214
练习题 227
第9章 嵌入式Linux接口编程:SPI 229
9.1 SPI总线协议的基础 229
9.1.1 SPI总线的接口定义 229
9.1.2 单从机模式 229
9.1.3 多从机模式 230
9.1.4 SPI总线的起始信号和停止信号 230
9.1.5 SPI总线的数据有效性 231
9.1.6 SPI总线的通信模式 231
9.2 SPI总线的接口函数和应用 232
9.2.1 SPI总线的接口函数 232
9.2.2 实验9.1:通过逻辑分析仪测试SPI总线的信号波形 235
9.3 三轴加速度传感器的原理与编程 238
9.3.1 ADXL345芯片的工作原理 239
9.3.2 ADXL345芯片的接口函数 243
9.3.3 实验9.2.1:ADXL345芯片寄存器的读取 245
9.3.4 实验9.2.2:ADXL345芯片加速度数据的读取 248
9.4 非标准SPI接口 252
9.4.1 三线SPI 252
9.4.2 Dual SPI和Quad SPI 253
9.5 UART、RS485、I2C和SPI的对比 253
9.6 实验9.3:SPI接口的综合训练 254
练习题 260
第10章 网络通信、JSON和数据库应用 261
10.1 网络通信基础 261
10.1.1 OSI模型 261
10.1.2 传输控制协议/网络协议 261
10.1.3 UDP协议 263
10.1.4 超文本传输协议 263
10.1.5 Socket 264
10.2 Linux系统的网络编程基础和 应用 264
10.2.1 Linux系统的网络通信 函数 264
10.2.2 TCP通信接口函数 271
10.2.3 实验10.1:基于TCP协议的 网络通信 272
10.2.4 实验10.2:基于UDP协议的 网络通信 279
10.3 JSON数据格式原理及应用 285
10.3.1 JSON和cJSON库 285
10.3.2 使用cJSON库生成JSON 数据 290
10.3.3 使用cJSON库解析JSON 数据 293
10.3.4 实验10.3:基于TCP协议的 JSON通信 297
10.4 SQLite数据库原理及应用 305
练习题 305
第11章 嵌入式系统综合设计案例 307
11.1 综合案例:分布式温湿度监测 系统 307
11.1.1 项目论证和需求 307
11.1.2 系统的总体设计:网关、MQTT 服务器、PC控制端程序 307
11.2 MQTT协议――物联网开发主流 协议 308
11.2.1 MQTT的基本概念 308
11.2.2 MQTT-C库及其基本使用 310
11.3 网关软硬件设计 311
11.3.1 RS485温湿度传感器参数 配置 311
11.3.2 网关程序设计 312
11.3.3 连线方法 316
11.4 MQTT服务器配置:中国移动OneNet 平台 316
11.4.1 创建工程和设备 316
11.4.2 鉴权信息和MQTT主题 318
11.4.3 网关参数配置 319
11.5 MQTT服务器配置:私有MQTT 服务器 320
11.5.1 EMQX服务器简介 320
11.5.2 鉴权信息和MQTT主题 320
11.5.3 网关参数配置 321
11.6 PC控制端程序设计 321
11.7 实验11.1:中国移动OneNET平台的 云端MQTT服务器通信 322
11.8 实验11.2:私有MQTT服务器 通信 324
参考文献 326
| 基本信息 | |
|---|---|
| 出版社 | 电子工业出版社 |
| ISBN | 9787121518942 |
| 条码 | 9787121518942 |
| 编者 | 邓宽等 著 |
| 译者 | -- |
| 出版年月 | 2026-01-01 00:00:00.0 |
| 开本 | 其他 |
| 装帧 | 平装 |
| 页数 | 325 |
| 字数 | |
| 版次 | 1 |
| 印次 | 1 |
| 纸张 | |
暂无商品评论信息 [发表商品评论]
暂无商品咨询信息 [发表商品咨询]