书籍详情
用芯探核:龙芯派开发实战
作者:胡伟武,杜安利,乔崇,叶骐宁 等 著
出版社:人民邮电出版社
出版时间:2020-12-01
ISBN:9787115545206
定价:¥69.00
购买这本书可以去
内容简介
这是一本带领读者快速熟悉、掌握龙芯派开发的专著。本书基于龙芯派二代开发板,首先由浅入深地介绍了龙芯派二代的架构、龙芯派的启动和开发配置、Linux 基本操作与常用工具等内容,带领读者快速上手龙芯派;然后通过Qt 编程、智能家居、无人机编队系统、数字采集系统、个人路由器、网络加速、图像识别、语音关键词检索等多个项目,手把手地带领读者掌握龙芯派开发的方法,并提供了项目代码供读者一步步学习。
作者简介
胡伟武:龙芯中科技术有限公司董事长。杜安利:龙芯中科技术有限公司副总裁。长期从事国产嵌入式计算机、国产软硬件设备的研发和管理工作,在能源、交通、网安通信、工业互联网等多个领域,提供基于国产龙芯处理器的应用解决方案,奋战在我国电子信息化、工业控制设备国产化、安全应用的第一线。 乔崇:龙芯中科技术有限公司嵌入式事业部技术总监,参与龙芯系列芯片的研发工作,目前在龙芯负责嵌入软件bios、内核、嵌入式操作系统、模拟器、仿真器的研发工作。 叶骐宁:龙芯中科技术有限公司嵌入式事业部工程师。
目录
第01章 初识龙芯派
1.1 主板简介 002
1.2 背景知识 003
1.2.1 LoongISA、ARM 和X86 003
1.2.2 龙芯处理器的起源和发展 003
第02章 启动龙芯派
2.1 第一次上电启动 006
2.1.1 上电检查与开机 006
2.1.2 串口通信获知主板状态 006
2.2 连接显示器 012
2.2.1 关于显示器的基础知识 012
2.2.2 连接显示器 013
2.2.3 修改显示模式 013
2.3 连接网络 015
2.3.1 连接有线网络 015
2.3.2 连接无线网络 017
2.3.3 修改网络参数 018
2.3.4 网络应用: SSH 远程控制 019
2.3.5 网络应用: Samba 文件共享 020
2.4 安装系统 021
2.4.1 平台基础知识 021
2.4.2 安装Loongnix 022
2.4.3 安装Debian 025
第03章 使用龙芯派
3.1 基本操作 028
3.1.1 龙芯支持的Linux 发行版 028
3.1.2 Linux 系统目录树 028
3.1.3 用户权限 030
3.1.4 Linux 基础命令 031
3.1.5 Linux 进阶命令 041
3.2 常用工具 058
3.2.1 软件包管理 058
3.2.2 编辑器 071
3.2.3 编译器 072
3.2.4 调试器 075
3.2.5 git 079
3.2.6 Docker 081
第04章 龙芯派的软件开发
4.1 嵌入式开发 085
4.1.1 本地编译和交叉编译 086
4.1.2 龙芯工具链 087
4.1.3 搭建Linux 编译环境 088
4.1.4 第一个Linux 程序 102
4.2 系统编程 103
4.2.1 搭建系统编译环境 103
4.2.2 PMON 104
4.2.3 更新PMON 106
4.2.4 编译内核 107
4.2.5 更换编译好的内核 112
4.2.6 系统模块和驱动 113
4.2.7 GPIO 管脚复用配置 115
4.3 感知世界 118
4.3.1 嵌入式系统外设 119
4.3.2 GPIO - LED 版摩尔斯电码 119
4.3.3 PWM - LED 闪光灯 124
第05章 基于Qt 开发拼图游戏的设计与实现
5.1 应用需求设计 132
5.1.1 应用功能 132
5.1.2 应用界面预览 133
5.2 配置交叉编译环境 136
5.2.1 开发环境要求 136
5.2.2 交叉编译的流程 136
5.2.3 下载安装交叉编译工具链 136
5.2.4 下载Qt 源码 137
5.2.5 选择需要的选项参数 138
5.2.6 编译Qt 源码 139
5.2.7 下载Qt Creator 4.8 140
5.2.8 在Qt Creator 中配置交叉编译环境 141
5.3 使用Qt Creator 143
5.4 主体代码前的准备 146
5.4.1 头文件配置 146
5.4.2 函数和主要变量声明 147
5.5 构造游戏界面 148
5.5.1 界面初始化 148
5.5.2 创建定时器,构建计时、计分、
计步联系 149
5.5.3 绘制图片分割线 149
5.5.4 添加功能按钮 150
5.5.5 放置图片 152
5.6 图片切割,打乱图片 153
5.6.1 使用cutImage() 分割图片 153
5.6.2 挖空图片块 153
5.6.3 使用Random() 函数打乱图片块 153
5.6.4 图片移动 155
5.7 鼠标事件 156
5.7.1 判断拼图状态,关联计步 156
5.7.2 为鼠标操作添加限定条件 157
5.8 计时得分 158
5.8.1 判断完成状态 158
5.8.2 弹出分数对话框 159
5.9 将应用拷贝到龙芯派上 160
5.10 实战演练 161
5.10.1 尝试解决一个bug 161
5.10.2 为拼图游戏添加键盘控制 162
5.11 项目总结 165
第06章 使用传感器搭建智能家居原型
6.1 项目概览 167
6.2 主要技术要点 168
6.3 系统架构 168
6.3.1 物理层 168
6.3.2 网络层 169
6.3.3 应用层 170
6.4 云- 端通信部分搭建 171
6.4.1 环境准备 171
6.4.2 阿里云Python 开发环境搭建 171
6.4.3 构建Python 虚拟环境 171
6.4.4 安装阿里云Python 依赖的库 172
6.4.5 安装Python 的串口库pyserial 174
6.4.6 注册阿里云平台 175
6.4.7 编写通信程序 175
6.5 项目总结 178
第07章 基于室内定位技术的无人机编队系统
7.1 应用概览 180
7.2 主要技术要点 181
7.3 系统架构 181
7.3.1 飞行器定位导航流程 182
7.3.2 飞行器系统 182
7.3.3 室内定位系统 183
7.3.4 龙芯派编队导航系统 184
7.4 搭建龙芯派编队导航系统 185
7.4.1 环境准备 185
7.4.2 实现系统连接 185
7.4.3 飞行轨迹脚本 187
7.5 实战演练 190
7.6 附录:单架无人机飞行脚本参考代码 190
7.7 项目总结 194
第08章 基于libmodbus 开发数字采集系统
8.1 开发流程概述 198
8.2 基于龙芯派的交叉编译环境搭建 198
8.2.1 交叉编译libmodbus 开发库 199
8.2.2 下载安装交叉编译工具链 199
8.2.3 下载libmodbus 源码 200
8.2.4 指定交叉编译工具链 200
8.2.5 编译libmodbus 源码 200
8.2.6 配置Code::Blocks 201
8.3 主体代码前的准备 203
8.3.1 配置文件格式 203
8.3.2 数据表结构设计 204
8.4 主体函数实现 204
8.5 数据采集模块 206
8.6 数据处理模块 208
8.6.1 libmodbus 实现的数据收发流程 208
8.6.2 数据处理模块的代码实现 211
8.7 报警模块 213
8.7.1 短信报警 213
8.7.2 邮件报警 214
8.8 数据入库 215
8.8.1 SQLite 3 介绍 215
8.8.2 结果入库 216
8.9 编译应用程序并移植到龙芯派上 216
8.10 项目总结 217
第09章 使用OpenWrt 搭建个人路由器
9.1 需求设计 219
9.1.1 系统需求 219
9.1.2 应用需求 220
9.2 系统选型 220
9.2.1 资源考察 220
9.2.2 OpenWrt 简介 221
9.2.3 如何提问和参与 222
9.3 添加硬件平台 223
9.3.1 熟悉源码 223
9.3.2 流程梳理 225
9.3.3 开始移植 225
9.4 深入开发环境 228
9.4.1 使用Linux 操作系统 228
9.4.2 开启旅程 229
9.5 应用开发入门 234
9.5.1 系统软件 234
9.5.2 网页应用 235
9.6 项目总结 235
第10章 使用 DPDK 进行网络加速
10.1 初识DPDK 237
10.1.1 为什么要用DPDK 237
10.1.2 DPDK 能做什么 238
10.1.3 DPDK 的框架简介 239
10.2 再观DPDK 239
10.2.1 体系架构相关 239
10.2.2 DPDK EAL 初始化过程 241
10.3 DPPK EAL 中的重要函数 246
10.3.1 rte_eal_cpu_init(void) 246
10.3.2 eal_hugepage_info_init() 248
10.3.3 rte_eal_pci_init() 251
10.3.4 rte_eal_memory_init() 257
10.3.5 rte_eal_memzone_init() 268
10.3.6 rte_eal_pci_probe() 271
10.4 DPDK 的运行 274
10.4.1 在龙芯派上运行DPDK 的例程l2fwd 274
10.4.2 DPDK 的应用实例:l2fwd程序解析 276
10.5 项目总结 281
第11章 使用 DPDK 进行网络加速 使用 OpenCV+Qt 实现图像识别
11.1 准备工作 283
11.2 Buildroot 构建文件系统 284
11.2.1 下载Buildroot 284
11.2.2 Buildroot 目录结构 285
11.2.3 配置Buildroot 286
11.3 内核编译并添加到启动项 290
11.3.1 内核编译 290
11.3.2 添加龙芯启动项 291
11.4 搭建Qt+OpenCV 开发环境 293
11.5 OpenCV 基础 296
11.5.1 Mat 基本图像容器 297
11.5.2 像素的表示 297
11.5.3 Haar 特征 297
11.6 编写第一个OpenCV 程序 297
11.6.1 代码编写 298
11.6.2 界面设计 301
11.6.3 程序测试 303
11.6.4 代码优化 304
11.7 从摄像头采集图像处理 308
11.7.1 准备工作 309
11.7.2 编写采集代码 310
11.8 实战演练 314
11.8.1 采集人脸信息 314
11.8.2 训练采集到的人脸信息 318
11.8.3 编写人脸匹配程序 323
11.9 项目总结 328
第12章 语音关键词检索
12.1 应用需求设计 330
12.2 配置交叉编译环境 330
12.2.1 开发环境要求 331
12.2.2 下载安装交叉编译工具 331
12.3 系统代码设计 332
12.3.1 系统函数定义 332
12.3.2 提取语音特征 333
12.3.3 注册语音作为模板 338
12.3.4 对待测语音进行检测 339
12.4 将应用拷贝到龙芯派上 345
12.5 实战演练 345
12.6 项目总结 346
1.1 主板简介 002
1.2 背景知识 003
1.2.1 LoongISA、ARM 和X86 003
1.2.2 龙芯处理器的起源和发展 003
第02章 启动龙芯派
2.1 第一次上电启动 006
2.1.1 上电检查与开机 006
2.1.2 串口通信获知主板状态 006
2.2 连接显示器 012
2.2.1 关于显示器的基础知识 012
2.2.2 连接显示器 013
2.2.3 修改显示模式 013
2.3 连接网络 015
2.3.1 连接有线网络 015
2.3.2 连接无线网络 017
2.3.3 修改网络参数 018
2.3.4 网络应用: SSH 远程控制 019
2.3.5 网络应用: Samba 文件共享 020
2.4 安装系统 021
2.4.1 平台基础知识 021
2.4.2 安装Loongnix 022
2.4.3 安装Debian 025
第03章 使用龙芯派
3.1 基本操作 028
3.1.1 龙芯支持的Linux 发行版 028
3.1.2 Linux 系统目录树 028
3.1.3 用户权限 030
3.1.4 Linux 基础命令 031
3.1.5 Linux 进阶命令 041
3.2 常用工具 058
3.2.1 软件包管理 058
3.2.2 编辑器 071
3.2.3 编译器 072
3.2.4 调试器 075
3.2.5 git 079
3.2.6 Docker 081
第04章 龙芯派的软件开发
4.1 嵌入式开发 085
4.1.1 本地编译和交叉编译 086
4.1.2 龙芯工具链 087
4.1.3 搭建Linux 编译环境 088
4.1.4 第一个Linux 程序 102
4.2 系统编程 103
4.2.1 搭建系统编译环境 103
4.2.2 PMON 104
4.2.3 更新PMON 106
4.2.4 编译内核 107
4.2.5 更换编译好的内核 112
4.2.6 系统模块和驱动 113
4.2.7 GPIO 管脚复用配置 115
4.3 感知世界 118
4.3.1 嵌入式系统外设 119
4.3.2 GPIO - LED 版摩尔斯电码 119
4.3.3 PWM - LED 闪光灯 124
第05章 基于Qt 开发拼图游戏的设计与实现
5.1 应用需求设计 132
5.1.1 应用功能 132
5.1.2 应用界面预览 133
5.2 配置交叉编译环境 136
5.2.1 开发环境要求 136
5.2.2 交叉编译的流程 136
5.2.3 下载安装交叉编译工具链 136
5.2.4 下载Qt 源码 137
5.2.5 选择需要的选项参数 138
5.2.6 编译Qt 源码 139
5.2.7 下载Qt Creator 4.8 140
5.2.8 在Qt Creator 中配置交叉编译环境 141
5.3 使用Qt Creator 143
5.4 主体代码前的准备 146
5.4.1 头文件配置 146
5.4.2 函数和主要变量声明 147
5.5 构造游戏界面 148
5.5.1 界面初始化 148
5.5.2 创建定时器,构建计时、计分、
计步联系 149
5.5.3 绘制图片分割线 149
5.5.4 添加功能按钮 150
5.5.5 放置图片 152
5.6 图片切割,打乱图片 153
5.6.1 使用cutImage() 分割图片 153
5.6.2 挖空图片块 153
5.6.3 使用Random() 函数打乱图片块 153
5.6.4 图片移动 155
5.7 鼠标事件 156
5.7.1 判断拼图状态,关联计步 156
5.7.2 为鼠标操作添加限定条件 157
5.8 计时得分 158
5.8.1 判断完成状态 158
5.8.2 弹出分数对话框 159
5.9 将应用拷贝到龙芯派上 160
5.10 实战演练 161
5.10.1 尝试解决一个bug 161
5.10.2 为拼图游戏添加键盘控制 162
5.11 项目总结 165
第06章 使用传感器搭建智能家居原型
6.1 项目概览 167
6.2 主要技术要点 168
6.3 系统架构 168
6.3.1 物理层 168
6.3.2 网络层 169
6.3.3 应用层 170
6.4 云- 端通信部分搭建 171
6.4.1 环境准备 171
6.4.2 阿里云Python 开发环境搭建 171
6.4.3 构建Python 虚拟环境 171
6.4.4 安装阿里云Python 依赖的库 172
6.4.5 安装Python 的串口库pyserial 174
6.4.6 注册阿里云平台 175
6.4.7 编写通信程序 175
6.5 项目总结 178
第07章 基于室内定位技术的无人机编队系统
7.1 应用概览 180
7.2 主要技术要点 181
7.3 系统架构 181
7.3.1 飞行器定位导航流程 182
7.3.2 飞行器系统 182
7.3.3 室内定位系统 183
7.3.4 龙芯派编队导航系统 184
7.4 搭建龙芯派编队导航系统 185
7.4.1 环境准备 185
7.4.2 实现系统连接 185
7.4.3 飞行轨迹脚本 187
7.5 实战演练 190
7.6 附录:单架无人机飞行脚本参考代码 190
7.7 项目总结 194
第08章 基于libmodbus 开发数字采集系统
8.1 开发流程概述 198
8.2 基于龙芯派的交叉编译环境搭建 198
8.2.1 交叉编译libmodbus 开发库 199
8.2.2 下载安装交叉编译工具链 199
8.2.3 下载libmodbus 源码 200
8.2.4 指定交叉编译工具链 200
8.2.5 编译libmodbus 源码 200
8.2.6 配置Code::Blocks 201
8.3 主体代码前的准备 203
8.3.1 配置文件格式 203
8.3.2 数据表结构设计 204
8.4 主体函数实现 204
8.5 数据采集模块 206
8.6 数据处理模块 208
8.6.1 libmodbus 实现的数据收发流程 208
8.6.2 数据处理模块的代码实现 211
8.7 报警模块 213
8.7.1 短信报警 213
8.7.2 邮件报警 214
8.8 数据入库 215
8.8.1 SQLite 3 介绍 215
8.8.2 结果入库 216
8.9 编译应用程序并移植到龙芯派上 216
8.10 项目总结 217
第09章 使用OpenWrt 搭建个人路由器
9.1 需求设计 219
9.1.1 系统需求 219
9.1.2 应用需求 220
9.2 系统选型 220
9.2.1 资源考察 220
9.2.2 OpenWrt 简介 221
9.2.3 如何提问和参与 222
9.3 添加硬件平台 223
9.3.1 熟悉源码 223
9.3.2 流程梳理 225
9.3.3 开始移植 225
9.4 深入开发环境 228
9.4.1 使用Linux 操作系统 228
9.4.2 开启旅程 229
9.5 应用开发入门 234
9.5.1 系统软件 234
9.5.2 网页应用 235
9.6 项目总结 235
第10章 使用 DPDK 进行网络加速
10.1 初识DPDK 237
10.1.1 为什么要用DPDK 237
10.1.2 DPDK 能做什么 238
10.1.3 DPDK 的框架简介 239
10.2 再观DPDK 239
10.2.1 体系架构相关 239
10.2.2 DPDK EAL 初始化过程 241
10.3 DPPK EAL 中的重要函数 246
10.3.1 rte_eal_cpu_init(void) 246
10.3.2 eal_hugepage_info_init() 248
10.3.3 rte_eal_pci_init() 251
10.3.4 rte_eal_memory_init() 257
10.3.5 rte_eal_memzone_init() 268
10.3.6 rte_eal_pci_probe() 271
10.4 DPDK 的运行 274
10.4.1 在龙芯派上运行DPDK 的例程l2fwd 274
10.4.2 DPDK 的应用实例:l2fwd程序解析 276
10.5 项目总结 281
第11章 使用 DPDK 进行网络加速 使用 OpenCV+Qt 实现图像识别
11.1 准备工作 283
11.2 Buildroot 构建文件系统 284
11.2.1 下载Buildroot 284
11.2.2 Buildroot 目录结构 285
11.2.3 配置Buildroot 286
11.3 内核编译并添加到启动项 290
11.3.1 内核编译 290
11.3.2 添加龙芯启动项 291
11.4 搭建Qt+OpenCV 开发环境 293
11.5 OpenCV 基础 296
11.5.1 Mat 基本图像容器 297
11.5.2 像素的表示 297
11.5.3 Haar 特征 297
11.6 编写第一个OpenCV 程序 297
11.6.1 代码编写 298
11.6.2 界面设计 301
11.6.3 程序测试 303
11.6.4 代码优化 304
11.7 从摄像头采集图像处理 308
11.7.1 准备工作 309
11.7.2 编写采集代码 310
11.8 实战演练 314
11.8.1 采集人脸信息 314
11.8.2 训练采集到的人脸信息 318
11.8.3 编写人脸匹配程序 323
11.9 项目总结 328
第12章 语音关键词检索
12.1 应用需求设计 330
12.2 配置交叉编译环境 330
12.2.1 开发环境要求 331
12.2.2 下载安装交叉编译工具 331
12.3 系统代码设计 332
12.3.1 系统函数定义 332
12.3.2 提取语音特征 333
12.3.3 注册语音作为模板 338
12.3.4 对待测语音进行检测 339
12.4 将应用拷贝到龙芯派上 345
12.5 实战演练 345
12.6 项目总结 346
猜您喜欢