這是一本帶領(lǐng)讀者快速熟悉、掌握龍芯派開發(fā)的專著。本書基于龍芯派二代開發(fā)板,首先由淺入深地介紹了龍芯派二代的架構(gòu)、龍芯派的啟動和開發(fā)配置、Linux 基本操作與常用工具等內(nèi)容,帶領(lǐng)讀者快速上手龍芯派;然后通過Qt 編程、智能家居、無人機(jī)編隊系統(tǒng)、數(shù)字采集系統(tǒng)、個人路由器、網(wǎng)絡(luò)加速、圖像識別、語音關(guān)鍵詞檢索等多個項目,手把手地帶領(lǐng)讀者掌握龍芯派開發(fā)的方法,并提供了項目代碼供讀者一步步學(xué)習(xí)。
龍芯派二代具有優(yōu)秀的處理能力,接口豐富,支持多種操作系統(tǒng),軟件全開源,應(yīng)用廣泛,非常適合開發(fā)者學(xué)習(xí)使用。使用龍芯派作為開發(fā)平臺的應(yīng)用也在全國大學(xué)生嵌入式芯片與系統(tǒng)設(shè)計競賽暨全國大學(xué)生智能互聯(lián)創(chuàng)新大賽中多次斬獲全國獎項。
基礎(chǔ)知識講解,快速上手龍芯派
8 大項目實戰(zhàn),入門嵌入式開發(fā)
提供項目源碼,供讀者一步步學(xué)習(xí)
胡偉武:龍芯中科技術(shù)有限公司董事長。
杜安利:龍芯中科技術(shù)有限公司副總裁。長期從事國產(chǎn)嵌入式計算機(jī)、國產(chǎn)軟硬件設(shè)備的研發(fā)和管理工作,在能源、交通、網(wǎng)安通信、工業(yè)互聯(lián)網(wǎng)等多個領(lǐng)域,提供基于國產(chǎn)龍芯處理器的應(yīng)用解決方案,奮戰(zhàn)在我國電子信息化、工業(yè)控制設(shè)備國產(chǎn)化、安全應(yīng)用的第一線。
喬崇:龍芯中科技術(shù)有限公司嵌入式事業(yè)部技術(shù)總監(jiān),參與龍芯系列芯片的研發(fā)工作,目前在龍芯負(fù)責(zé)嵌入軟件bios、內(nèi)核、嵌入式操作系統(tǒng)、模擬器、仿真器的研發(fā)工作。
葉騏寧:龍芯中科技術(shù)有限公司嵌入式事業(yè)部工程師。
第01章 初識龍芯派
1.1 主板簡介 002
1.2 背景知識 003
1.2.1 LoongISA、ARM 和X86 003
1.2.2 龍芯處理器的起源和發(fā)展 003
第02章 啟動龍芯派
2.1 第一次上電啟動 006
2.1.1 上電檢查與開機(jī) 006
2.1.2 串口通信獲知主板狀態(tài) 006
2.2 連接顯示器 012
2.2.1 關(guān)于顯示器的基礎(chǔ)知識 012
2.2.2 連接顯示器 013
2.2.3 修改顯示模式 013
2.3 連接網(wǎng)絡(luò) 015
2.3.1 連接有線網(wǎng)絡(luò) 015
2.3.2 連接無線網(wǎng)絡(luò) 017
2.3.3 修改網(wǎng)絡(luò)參數(shù) 018
2.3.4 網(wǎng)絡(luò)應(yīng)用: SSH 遠(yuǎn)程控制 019
2.3.5 網(wǎng)絡(luò)應(yīng)用: Samba 文件共享 020
2.4 安裝系統(tǒng) 021
2.4.1 平臺基礎(chǔ)知識 021
2.4.2 安裝Loongnix 022
2.4.3 安裝Debian 025
第03章 使用龍芯派
3.1 基本操作 028
3.1.1 龍芯支持的Linux 發(fā)行版 028
3.1.2 Linux 系統(tǒng)目錄樹 028
3.1.3 用戶權(quán)限 030
3.1.4 Linux 基礎(chǔ)命令 031
3.1.5 Linux 進(jìn)階命令 041
3.2 常用工具 058
3.2.1 軟件包管理 058
3.2.2 編輯器 071
3.2.3 編譯器 072
3.2.4 調(diào)試器 075
3.2.5 git 079
3.2.6 Docker 081
第04章 龍芯派的軟件開發(fā)
4.1 嵌入式開發(fā) 085
4.1.1 本地編譯和交叉編譯 086
4.1.2 龍芯工具鏈 087
4.1.3 搭建Linux 編譯環(huán)境 088
4.1.4 第一個Linux 程序 102
4.2 系統(tǒng)編程 103
4.2.1 搭建系統(tǒng)編譯環(huán)境 103
4.2.2 PMON 104
4.2.3 更新PMON 106
4.2.4 編譯內(nèi)核 107
4.2.5 更換編譯好的內(nèi)核 112
4.2.6 系統(tǒng)模塊和驅(qū)動 113
4.2.7 GPIO 管腳復(fù)用配置 115
4.3 感知世界 118
4.3.1 嵌入式系統(tǒng)外設(shè) 119
4.3.2 GPIO - LED 版摩爾斯電碼 119
4.3.3 PWM - LED 閃光燈 124
第05章 基于Qt 開發(fā)拼圖游戲的設(shè)計與實現(xiàn)
5.1 應(yīng)用需求設(shè)計 132
5.1.1 應(yīng)用功能 132
5.1.2 應(yīng)用界面預(yù)覽 133
5.2 配置交叉編譯環(huán)境 136
5.2.1 開發(fā)環(huán)境要求 136
5.2.2 交叉編譯的流程 136
5.2.3 下載安裝交叉編譯工具鏈 136
5.2.4 下載Qt 源碼 137
5.2.5 選擇需要的選項參數(shù) 138
5.2.6 編譯Qt 源碼 139
5.2.7 下載Qt Creator 4.8 140
5.2.8 在Qt Creator 中配置交叉編譯環(huán)境 141
5.3 使用Qt Creator 143
5.4 主體代碼前的準(zhǔn)備 146
5.4.1 頭文件配置 146
5.4.2 函數(shù)和主要變量聲明 147
5.5 構(gòu)造游戲界面 148
5.5.1 界面初始化 148
5.5.2 創(chuàng)建定時器,構(gòu)建計時、計分、
計步聯(lián)系 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() 函數(shù)打亂圖片塊 153
5.6.4 圖片移動 155
5.7 鼠標(biāo)事件 156
5.7.1 判斷拼圖狀態(tài),關(guān)聯(lián)計步 156
5.7.2 為鼠標(biāo)操作添加限定條件 157
5.8 計時得分 158
5.8.1 判斷完成狀態(tài) 158
5.8.2 彈出分?jǐn)?shù)對話框 159
5.9 將應(yīng)用拷貝到龍芯派上 160
5.10 實戰(zhàn)演練 161
5.10.1 嘗試解決一個bug 161
5.10.2 為拼圖游戲添加鍵盤控制 162
5.11 項目總結(jié) 165
第06章 使用傳感器搭建智能家居原型
6.1 項目概覽 167
6.2 主要技術(shù)要點 168
6.3 系統(tǒng)架構(gòu) 168
6.3.1 物理層 168
6.3.2 網(wǎng)絡(luò)層 169
6.3.3 應(yīng)用層 170
6.4 云- 端通信部分搭建 171
6.4.1 環(huán)境準(zhǔn)備 171
6.4.2 阿里云Python 開發(fā)環(huán)境搭建 171
6.4.3 構(gòu)建Python 虛擬環(huán)境 171
6.4.4 安裝阿里云Python 依賴的庫 172
6.4.5 安裝Python 的串口庫pyserial 174
6.4.6 注冊阿里云平臺 175
6.4.7 編寫通信程序 175
6.5 項目總結(jié) 178
第07章 基于室內(nèi)定位技術(shù)的無人機(jī)編隊系統(tǒng)
7.1 應(yīng)用概覽 180
7.2 主要技術(shù)要點 181
7.3 系統(tǒng)架構(gòu) 181
7.3.1 飛行器定位導(dǎo)航流程 182
7.3.2 飛行器系統(tǒng) 182
7.3.3 室內(nèi)定位系統(tǒng) 183
7.3.4 龍芯派編隊導(dǎo)航系統(tǒng) 184
7.4 搭建龍芯派編隊導(dǎo)航系統(tǒng) 185
7.4.1 環(huán)境準(zhǔn)備 185
7.4.2 實現(xiàn)系統(tǒng)連接 185
7.4.3 飛行軌跡腳本 187
7.5 實戰(zhàn)演練 190
7.6 附錄:單架無人機(jī)飛行腳本參考代碼 190
7.7 項目總結(jié) 194
第08章 基于libmodbus 開發(fā)數(shù)字采集系統(tǒng)
8.1 開發(fā)流程概述 198
8.2 基于龍芯派的交叉編譯環(huán)境搭建 198
8.2.1 交叉編譯libmodbus 開發(fā)庫 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 主體代碼前的準(zhǔn)備 203
8.3.1 配置文件格式 203
8.3.2 數(shù)據(jù)表結(jié)構(gòu)設(shè)計 204
8.4 主體函數(shù)實現(xiàn) 204
8.5 數(shù)據(jù)采集模塊 206
8.6 數(shù)據(jù)處理模塊 208
8.6.1 libmodbus 實現(xiàn)的數(shù)據(jù)收發(fā)流程 208
8.6.2 數(shù)據(jù)處理模塊的代碼實現(xiàn) 211
8.7 報警模塊 213
8.7.1 短信報警 213
8.7.2 郵件報警 214
8.8 數(shù)據(jù)入庫 215
8.8.1 SQLite 3 介紹 215
8.8.2 結(jié)果入庫 216
8.9 編譯應(yīng)用程序并移植到龍芯派上 216
8.10 項目總結(jié) 217
第09章 使用OpenWrt 搭建個人路由器
9.1 需求設(shè)計 219
9.1.1 系統(tǒng)需求 219
9.1.2 應(yīng)用需求 220
9.2 系統(tǒng)選型 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 深入開發(fā)環(huán)境 228
9.4.1 使用Linux 操作系統(tǒng) 228
9.4.2 開啟旅程 229
9.5 應(yīng)用開發(fā)入門 234
9.5.1 系統(tǒng)軟件 234
9.5.2 網(wǎng)頁應(yīng)用 235
9.6 項目總結(jié) 235
第10章 使用 DPDK 進(jìn)行網(wǎng)絡(luò)加速
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 體系架構(gòu)相關(guān) 239
10.2.2 DPDK EAL 初始化過程 241
10.3 DPPK EAL 中的重要函數(shù) 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 的運(yùn)行 274
10.4.1 在龍芯派上運(yùn)行DPDK 的例程l2fwd 274
10.4.2 DPDK 的應(yīng)用實例:l2fwd程序解析 276
10.5 項目總結(jié) 281
第11章 使用 DPDK 進(jìn)行網(wǎng)絡(luò)加速 使用 OpenCV+Qt 實現(xiàn)圖像識別
11.1 準(zhǔn)備工作 283
11.2 Buildroot 構(gòu)建文件系統(tǒng) 284
11.2.1 下載Buildroot 284
11.2.2 Buildroot 目錄結(jié)構(gòu) 285
11.2.3 配置Buildroot 286
11.3 內(nèi)核編譯并添加到啟動項 290
11.3.1 內(nèi)核編譯 290
11.3.2 添加龍芯啟動項 291
11.4 搭建Qt+OpenCV 開發(fā)環(huán)境 293
11.5 OpenCV 基礎(chǔ) 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 界面設(shè)計 301
11.6.3 程序測試 303
11.6.4 代碼優(yōu)化 304
11.7 從攝像頭采集圖像處理 308
11.7.1 準(zhǔn)備工作 309
11.7.2 編寫采集代碼 310
11.8 實戰(zhàn)演練 314
11.8.1 采集人臉信息 314
11.8.2 訓(xùn)練采集到的人臉信息 318
11.8.3 編寫人臉匹配程序 323
11.9 項目總結(jié) 328
第12章 語音關(guān)鍵詞檢索
12.1 應(yīng)用需求設(shè)計 330
12.2 配置交叉編譯環(huán)境 330
12.2.1 開發(fā)環(huán)境要求 331
12.2.2 下載安裝交叉編譯工具 331
12.3 系統(tǒng)代碼設(shè)計 332
12.3.1 系統(tǒng)函數(shù)定義 332
12.3.2 提取語音特征 333
12.3.3 注冊語音作為模板 338
12.3.4 對待測語音進(jìn)行檢測 339
12.4 將應(yīng)用拷貝到龍芯派上 345
12.5 實戰(zhàn)演練 345
12.6 項目總結(jié) 346