第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