龙芯嵌入式处理器应用开发 / 高等职业教育新形态一体化教材
作者: 杨黎
出版社:高等教育出版社
- 高等教育出版社
- 9787040670233
- 1版
- 48271574-5
- 16开
- 350
- 电子与信息大类
- 电子信息类
- 电子信息类
- 高职
本书以龙芯2K1000LA处理器为核心,以2K1000LA龙芯派(教育派)开发者套件为实践平台,紧扣嵌入式工程师核心工作场景,以工业网关设计作为贯穿全书的综合项目。全书设置9个项目、33个实践任务,项目和任务均源自真实工作场景,配套代码完全开源,构建了完整的技能培养体系,涵盖嵌入式Linux应用开发环境搭建、板载外设控制系统设计、串口通信系统设计、Modbus总线系统设计、网络通信系统设计、CAN总线系统设计、MQTT远程访问传感器系统设计、Qt界面开发、工业网关设计等内容,同时提供教学课件、课程简介、课程标准、任务代码、微课等丰富的数字化教学资源,选用本书授课的教师可登录“高等教育出版社产品信息检索系统”(https://xuanshu.hep.com.cn)免费下载教学课件等资源。
本书为介绍龙芯2K1000LA处理器在工业控制领域应用的项目化教材,采用“理实一体化”的设计思路,践行“学中做、做中学”的教学理念。每个实践任务是一个完整的工作过程,呈现从需求分析、功能实现到系统测试的全流程设计方案,并结合代码剖析任务的实现过程和实际测试结果,使读者快速掌握龙芯2K1000LA处理器的应用方法,高效解决工程实践中的各类问题。
本书配套教学课件、课程简介、课程标准、任务代码、微课视频等丰富的数字化教学资源。教师如需获取本书授课用教学课件、课程简介、课程标准、任务代码,请登录“高等教育出版社产品信息检索系统”(https://xuanshu.hep.com.cn)免费下载。
本书适用范围广泛,既可作为高等职业本科、专科院校或者应用型本科院校电子信息类、计算机类、通信类、自动化类等专业的课程教材,也适合作为从事嵌入式Linux软硬件开发的工程技术人员学习参考书。
前辅文
项目1 嵌入式Linux应用开发环境搭建
任务1.1 龙芯2K1000LA开发者套件使用
【任务描述】
【知识准备】
1.1.1 龙芯2K1000LA概述
1.1.2 龙芯2K1000LA体系结构
1.1.3 龙芯2K1000LA开发者套件
【任务实施】
1.1.4 使用本地显示模式
1.1.5 使用远程登录模式
1.1.6 重烧系统
任务1.2 Linux常用命令熟练运用
【任务描述】
【知识准备】
1.2.1 基础命令
1.2.2 文件编辑命令
【任务实施】
1.2.3 使用vi打开/新建/保存文件
1.2.4 使用vi编辑文件
1.2.5 使用gedit编辑文件
任务1.3 文件传输和VSCode使用
【任务描述】
【知识准备】
1.3.1 多种文件传输方法比较
1.3.2 各类编辑工具对比
【任务实施】
1.3.3 传输文件
1.3.4 下载和安装VSCode
1.3.5 使用VSCode与AI辅助编程
项目2 板载外设控制系统设计
任务2.1 GPIO控制继电器
【任务描述】
【知识准备】
2.1.1 龙芯2K1000LA处理器的GPIO
2.1.2 系统调用I/O的用法
2.1.3 系统I/O和标准I/O的差别
2.1.4 文件的打开和创建
2.1.5 文件的读写操作
【任务实施】
2.1.6 连接模块
2.1.7 使用SYSFS接口控制继电器
2.1.8 使用libgpiod控制继电器
2.1.9 使用系统I/O接口控制继电器
任务2.2 PWM控制LED灯
【任务描述】
【知识准备】
2.2.1 龙芯2K1000LA处理器的PWM
2.2.2 基于Linux的PWM操作方法
【任务实施】
2.2.3 连接模块
2.2.4 控制LED灯亮度
2.2.5 使用脚本控制LED灯逐渐变亮
2.2.6 使用C程序控制LED灯逐渐变亮
任务2.3 I2C接口传感器读写
【任务描述】
【知识准备】
2.3.1 龙芯2K1000LA处理器的I2C
2.3.2 基于Linux的I2C操作方法
【任务实施】
2.3.3 连接模块
2.3.4 AT24C16的读写方法
2.3.5 使用i2c-tools读写AT24C16
2.3.6 使用C程序读写AT24C16
任务2.4 SPI接口传感器读写
【任务描述】
【知识准备】
2.4.1 龙芯2K1000LA处理器的SPI
2.4.2 基于Linux的SPI操作方法
【任务实施】
2.4.3 连接模块
2.4.4 SPI DAC模块TLC5615操作方法
2.4.5 使用C程序控制DAC模块
项目3 串口通信系统设计
任务3.1 串口数据回环传输
【任务描述】
【知识准备】
3.1.1 龙芯2K1000LA处理器的UART
3.1.2 基于Linux的串口操作方法
【任务实施】
3.1.3 连接模块
3.1.4 串口数据回环传输设计
任务3.2 串口通信协议设计
【任务描述】
【知识准备】
3.2.1 数据传输的要点
3.2.2 实现数据传输协议
【任务实施】
3.2.3 连接模块
3.2.4 串口数据包传输
任务3.3 文件传输协议设计
【任务描述】
【知识准备】
3.3.1 上层协议传输要点
【任务实施】
3.3.2 连接模块
3.3.3 实现文件传输协议
项目4 Modbus总线系统设计
任务4.1 Modbus RTU设备模拟通信
【任务描述】
【知识准备】
4.1.1 Modbus RTU协议
4.1.2 协议速记
4.1.3 读取线圈报文
【任务实施】
4.1.4 安装Modbus软件和虚拟串口驱动
4.1.5 使用Modbus Slave模拟RTU设备
4.1.6 使用Modbus Poll操作RTU设备
任务4.2 Modbus主站编程
【任务描述】
【知识准备】
4.2.1 libmodbus开源软件框架分析
4.2.2 libmodbus使用流程情景分析
4.2.3 libmodbus代码移植
【任务实施】
4.2.4 连接模块
4.2.5 主站程序设计
4.2.6 读取模拟的温湿度传感器
4.2.7 读取真实的温湿度传感器
任务4.3 Modbus从站编程
【任务描述】
【知识准备】
4.3.1 传感器点表设计
【任务实施】
4.3.2 连接模块
4.3.3 从站代码设计
4.3.4 访问开发板模拟的传感器
4.3.5 访问真实的传感器
任务4.4 Modbus总线综合应用
【任务描述】
【知识准备】
4.4.1 多线程概述
4.4.2 线程的控制
【任务实施】
4.4.3 连接模块
4.4.4 基于Modbus RTU的控制系统设计
4.4.5 程序运行与测试
项目5 网络通信系统设计
任务5.1 Socket接口编程
【任务描述】
【知识准备】
5.1.1 网络编程概述
5.1.2 Socket接口使用方法
【任务实施】
5.1.3 实现TCP server程序
5.1.4 实现TCP client程序
5.1.5 程序运行与测试
任务5.2 Modbus TCP应用与编程
【任务描述】
【知识准备】
5.2.1 Modbus TCP
【任务实施】
5.2.2 基于Modbus TCP的主从设备通信
5.2.3 使用Modbus TCP模拟传感器控制
任务5.3 远程控制设备
【任务描述】
【知识准备】
5.3.1 协议选择
【任务实施】
5.3.2 基于Modbus TCP的控制系统设计
5.3.3 程序运行与测试
任务5.4 视频信号采集
【任务描述】
【知识准备】
5.4.1 FFmpeg介绍
5.4.2 FFmpeg内部机制
5.4.3 Nginx介绍
【任务实施】
5.4.4 FFmpeg安装与测试
5.4.5 Nginx安装与测试
5.4.6 视频推流
项目6 CAN总线系统设计
任务6.1 使用命令进行CAN数据收发
【任务描述】
【知识准备】
6.1.1 CAN协议
6.1.2 SocketCAN命令
【任务实施】
6.1.3 连接模块
6.1.4 使用命令收发数据
任务6.2 编程实现CAN数据收发
【任务描述】
【知识准备】
6.2.1 SocketCAN编程接口
【任务实施】
6.2.2 CAN数据收发程序设计
6.2.3 程序运行与测试
项目7 MQTT远程访问传感器系统设计
任务7.1 使用计算机体验MQTT
【任务描述】
【知识准备】
7.1.1 MQTT协议
【任务实施】
7.1.2 MQTT工具的使用
任务7.2 Paho.mqtt库移植与应用
【任务描述】
【知识准备】
7.2.1 Paho.mqtt开源软件分析
【任务实施】
7.2.2 交叉编译Paho.mqtt
7.2.3 编写MQTT客户端程序
7.2.4 MQTT客户端程序运行与测试
任务7.3 使用MQTT远程控制设备
【任务描述】
【知识准备】
7.3.1 JSON数据格式
7.3.2 常用的JSON函数
【任务实施】
7.3.3 连接模块
7.3.4 设计接口协议
7.3.5 设计程序框架
7.3.6 编写MQTT远程控制设备程序
7.3.7 程序运行与测试
任务7.4 使用MQTT云平台实现互联网控制
【任务描述】
【知识准备】
7.4.1 MQTT云平台
【任务实施】
7.4.2 MQTT云平台的配置与使用
7.4.3 基于MQTT云平台编写客户端程序
项目8 Qt界面开发
任务8.1 搭建Qt开发环境
【任务描述】
【知识准备】
8.1.1 Qt介绍
【任务实施】
8.1.2 安装Qt开发组件
8.1.3 编写第1个Qt程序
任务8.2 Qt按钮控件应用
【任务描述】
【知识准备】
8.2.1 Qt的“信号与槽”机制
8.2.2 “信号与槽”的连接
【任务实施】
8.2.3 编程实现按钮
任务8.3 文本文件读写
【任务描述】
【知识准备】
8.3.1 QFile类和QTextStream类
【任务实施】
8.3.2 实现文件的读写
任务8.4 Qt多线程应用
【任务描述】
【知识准备】
8.4.1 两种Qt线程实现方式
【任务实施】
8.4.2 继承QThread实现多线程
8.4.3 继承QObject实现多线程
项目9 工业网关设计
任务9.1 搭建工业网关界面
【任务描述】
【知识准备】
9.1.1 需求分析与方案设计
【任务实施】
9.1.2 工业网关界面设计
任务9.2 前后台系统设计
【任务描述】
【知识准备】
9.2.1 远程调用的概念
9.2.2 JSON-RPC示例与情景分析
9.2.3 程序运行与测试
【任务实施】
9.2.4 Modbus RTU设备的远程调用接口设计
9.2.5 Modbus RTU设备的远程调用接口实现
9.2.6 程序运行与测试
任务9.3 MQTT网关数据交互与控制
【任务描述】
【知识准备】
9.3.1 实现方案
9.3.2 使用inotify监控文件系统变化
【任务实施】
9.3.3 完善MQTT程序
9.3.4 程序运行与测试
任务9.4 网络摄像头监控系统设计
【任务描述】
【知识准备】
9.4.1 实现方案
9.4.2 使用共享内存传输数据
【任务实施】
9.4.3 网络摄像头数据采集代码设计
9.4.4 程序运行与测试
任务9.5 系统集成与联调
【任务描述】
【知识准备】
9.5.1 实现方案
【任务实施】
9.5.2 GUI程序设计
9.5.3 程序运行与测试
参考文献
前辅文
项目1 嵌入式Linux应用开发环境搭建
任务1.1 龙芯2K1000LA开发者套件使用
【任务描述】
【知识准备】
1.1.1 龙芯2K1000LA概述
1.1.2 龙芯2K1000LA体系结构
1.1.3 龙芯2K1000LA开发者套件
【任务实施】
1.1.4 使用本地显示模式
1.1.5 使用远程登录模式
1.1.6 重烧系统
任务1.2 Linux常用命令熟练运用
【任务描述】
【知识准备】
1.2.1 基础命令
1.2.2 文件编辑命令
【任务实施】
1.2.3 使用vi打开/新建/保存文件
1.2.4 使用vi编辑文件
1.2.5 使用gedit编辑文件
任务1.3 文件传输和VSCode使用
【任务描述】
【知识准备】
1.3.1 多种文件传输方法比较
1.3.2 各类编辑工具对比
【任务实施】
1.3.3 传输文件
1.3.4 下载和安装VSCode
1.3.5 使用VSCode与AI辅助编程
项目2 板载外设控制系统设计
任务2.1 GPIO控制继电器
【任务描述】
【知识准备】
2.1.1 龙芯2K1000LA处理器的GPIO
2.1.2 系统调用I/O的用法
2.1.3 系统I/O和标准I/O的差别
2.1.4 文件的打开和创建
2.1.5 文件的读写操作
【任务实施】
2.1.6 连接模块
2.1.7 使用SYSFS接口控制继电器
2.1.8 使用libgpiod控制继电器
2.1.9 使用系统I/O接口控制继电器
任务2.2 PWM控制LED灯
【任务描述】
【知识准备】
2.2.1 龙芯2K1000LA处理器的PWM
2.2.2 基于Linux的PWM操作方法
【任务实施】
2.2.3 连接模块
2.2.4 控制LED灯亮度
2.2.5 使用脚本控制LED灯逐渐变亮
2.2.6 使用C程序控制LED灯逐渐变亮
任务2.3 I2C接口传感器读写
【任务描述】
【知识准备】
2.3.1 龙芯2K1000LA处理器的I2C
2.3.2 基于Linux的I2C操作方法
【任务实施】
2.3.3 连接模块
2.3.4 AT24C16的读写方法
2.3.5 使用i2c-tools读写AT24C16
2.3.6 使用C程序读写AT24C16
任务2.4 SPI接口传感器读写
【任务描述】
【知识准备】
2.4.1 龙芯2K1000LA处理器的SPI
2.4.2 基于Linux的SPI操作方法
【任务实施】
2.4.3 连接模块
2.4.4 SPI DAC模块TLC5615操作方法
2.4.5 使用C程序控制DAC模块
项目3 串口通信系统设计
任务3.1 串口数据回环传输
【任务描述】
【知识准备】
3.1.1 龙芯2K1000LA处理器的UART
3.1.2 基于Linux的串口操作方法
【任务实施】
3.1.3 连接模块
3.1.4 串口数据回环传输设计
任务3.2 串口通信协议设计
【任务描述】
【知识准备】
3.2.1 数据传输的要点
3.2.2 实现数据传输协议
【任务实施】
3.2.3 连接模块
3.2.4 串口数据包传输
任务3.3 文件传输协议设计
【任务描述】
【知识准备】
3.3.1 上层协议传输要点
【任务实施】
3.3.2 连接模块
3.3.3 实现文件传输协议
项目4 Modbus总线系统设计
任务4.1 Modbus RTU设备模拟通信
【任务描述】
【知识准备】
4.1.1 Modbus RTU协议
4.1.2 协议速记
4.1.3 读取线圈报文
【任务实施】
4.1.4 安装Modbus软件和虚拟串口驱动
4.1.5 使用Modbus Slave模拟RTU设备
4.1.6 使用Modbus Poll操作RTU设备
任务4.2 Modbus主站编程
【任务描述】
【知识准备】
4.2.1 libmodbus开源软件框架分析
4.2.2 libmodbus使用流程情景分析
4.2.3 libmodbus代码移植
【任务实施】
4.2.4 连接模块
4.2.5 主站程序设计
4.2.6 读取模拟的温湿度传感器
4.2.7 读取真实的温湿度传感器
任务4.3 Modbus从站编程
【任务描述】
【知识准备】
4.3.1 传感器点表设计
【任务实施】
4.3.2 连接模块
4.3.3 从站代码设计
4.3.4 访问开发板模拟的传感器
4.3.5 访问真实的传感器
任务4.4 Modbus总线综合应用
【任务描述】
【知识准备】
4.4.1 多线程概述
4.4.2 线程的控制
【任务实施】
4.4.3 连接模块
4.4.4 基于Modbus RTU的控制系统设计
4.4.5 程序运行与测试
项目5 网络通信系统设计
任务5.1 Socket接口编程
【任务描述】
【知识准备】
5.1.1 网络编程概述
5.1.2 Socket接口使用方法
【任务实施】
5.1.3 实现TCP server程序
5.1.4 实现TCP client程序
5.1.5 程序运行与测试
任务5.2 Modbus TCP应用与编程
【任务描述】
【知识准备】
5.2.1 Modbus TCP
【任务实施】
5.2.2 基于Modbus TCP的主从设备通信
5.2.3 使用Modbus TCP模拟传感器控制
任务5.3 远程控制设备
【任务描述】
【知识准备】
5.3.1 协议选择
【任务实施】
5.3.2 基于Modbus TCP的控制系统设计
5.3.3 程序运行与测试
任务5.4 视频信号采集
【任务描述】
【知识准备】
5.4.1 FFmpeg介绍
5.4.2 FFmpeg内部机制
5.4.3 Nginx介绍
【任务实施】
5.4.4 FFmpeg安装与测试
5.4.5 Nginx安装与测试
5.4.6 视频推流
项目6 CAN总线系统设计
任务6.1 使用命令进行CAN数据收发
【任务描述】
【知识准备】
6.1.1 CAN协议
6.1.2 SocketCAN命令
【任务实施】
6.1.3 连接模块
6.1.4 使用命令收发数据
任务6.2 编程实现CAN数据收发
【任务描述】
【知识准备】
6.2.1 SocketCAN编程接口
【任务实施】
6.2.2 CAN数据收发程序设计
6.2.3 程序运行与测试
项目7 MQTT远程访问传感器系统设计
任务7.1 使用计算机体验MQTT
【任务描述】
【知识准备】
7.1.1 MQTT协议
【任务实施】
7.1.2 MQTT工具的使用
任务7.2 Paho.mqtt库移植与应用
【任务描述】
【知识准备】
7.2.1 Paho.mqtt开源软件分析
【任务实施】
7.2.2 交叉编译Paho.mqtt
7.2.3 编写MQTT客户端程序
7.2.4 MQTT客户端程序运行与测试
任务7.3 使用MQTT远程控制设备
【任务描述】
【知识准备】
7.3.1 JSON数据格式
7.3.2 常用的JSON函数
【任务实施】
7.3.3 连接模块
7.3.4 设计接口协议
7.3.5 设计程序框架
7.3.6 编写MQTT远程控制设备程序
7.3.7 程序运行与测试
任务7.4 使用MQTT云平台实现互联网控制
【任务描述】
【知识准备】
7.4.1 MQTT云平台
【任务实施】
7.4.2 MQTT云平台的配置与使用
7.4.3 基于MQTT云平台编写客户端程序
项目8 Qt界面开发
任务8.1 搭建Qt开发环境
【任务描述】
【知识准备】
8.1.1 Qt介绍
【任务实施】
8.1.2 安装Qt开发组件
8.1.3 编写第1个Qt程序
任务8.2 Qt按钮控件应用
【任务描述】
【知识准备】
8.2.1 Qt的“信号与槽”机制
8.2.2 “信号与槽”的连接
【任务实施】
8.2.3 编程实现按钮
任务8.3 文本文件读写
【任务描述】
【知识准备】
8.3.1 QFile类和QTextStream类
【任务实施】
8.3.2 实现文件的读写
任务8.4 Qt多线程应用
【任务描述】
【知识准备】
8.4.1 两种Qt线程实现方式
【任务实施】
8.4.2 继承QThread实现多线程
8.4.3 继承QObject实现多线程
项目9 工业网关设计
任务9.1 搭建工业网关界面
【任务描述】
【知识准备】
9.1.1 需求分析与方案设计
【任务实施】
9.1.2 工业网关界面设计
任务9.2 前后台系统设计
【任务描述】
【知识准备】
9.2.1 远程调用的概念
9.2.2 JSON-RPC示例与情景分析
9.2.3 程序运行与测试
【任务实施】
9.2.4 Modbus RTU设备的远程调用接口设计
9.2.5 Modbus RTU设备的远程调用接口实现
9.2.6 程序运行与测试
任务9.3 MQTT网关数据交互与控制
【任务描述】
【知识准备】
9.3.1 实现方案
9.3.2 使用inotify监控文件系统变化
【任务实施】
9.3.3 完善MQTT程序
9.3.4 程序运行与测试
任务9.4 网络摄像头监控系统设计
【任务描述】
【知识准备】
9.4.1 实现方案
9.4.2 使用共享内存传输数据
【任务实施】
9.4.3 网络摄像头数据采集代码设计
9.4.4 程序运行与测试
任务9.5 系统集成与联调
【任务描述】
【知识准备】
9.5.1 实现方案
【任务实施】
9.5.2 GUI程序设计
9.5.3 程序运行与测试
参考文献
















