嵌入式Linux系統設計及套用——基於國產龍芯SoC

《嵌入式Linux系統設計及套用——基於國產龍芯SoC》是清華大學出版社出版圖書。

基本介紹

  • 中文名:嵌入式Linux系統設計及套用——基於國產龍芯SoC
  • 作者:孫冬梅、石南
  • 出版社:清華大學出版社
  • 出版時間:2021年2月1日
  • 定價:89 元
  • ISBN:9787302522164
  • 印刷日期:2021年2月5日
內容簡介,目錄,

內容簡介

龍芯系列微處理器是中國擁有自主智慧財產權的中央處理器,中國科學院計算技術研究所從2001 年開始研製龍芯系列處理器,於2010 年正式成立龍芯中科技術有限公司(以下簡稱龍芯中科),主要產品包括龍芯1 號CPU、龍芯2 號CPU 及龍芯3 號CPU。本書是基於龍芯俱樂部與龍芯中科合作開發的南京龍眾創芯電子科技有限公司承制的智龍開發板,圍繞龍芯1 號晶片LS1C 進行嵌入式系統開發講解,也包含龍芯中科的2K 龍芯派、南京龍眾創芯電子科技有限公司的龍芯3A3000 開發者計算機的內容。本書內容共分3 篇。基礎篇包含實驗平台和開發環境的搭建。中級篇為Linux 基礎套用編程,包含執行緒、信號、網路等基本操作。高級篇包含開發板硬體編程、驅動程式編寫等高級操作。附錄主要為嵌入式系統開發常用資料和智龍開發板的電路原理圖。本書結合實踐案例及套用場景,按照嵌入式系統的開發流程組織內容,使讀者能熟練掌握從開發環境搭建到編寫完整工程的流程。同時提供核心源碼及實例代碼,並給出測試結果,方便讀者參考。本書具有廣泛的適用性,不僅可用於MIPS 架構的龍芯1 號晶片的嵌入式系統開發,還可用於基於Linux 作業系統的嵌入式系統學習。其中在核心原理、應用程式編寫,如虛擬機編譯、程式下載、調試、套用開發、核心裁減等方面與同類ARM 架構晶片相比,開發過程是通用的。本書可作為套用型本科、高職高專院校嵌入式系統方面的課程教材,也可作為相關開發人員的自學教材和參考手冊。

目錄

第1 章 實驗平台及背景知識 .......................... 2
1.1 本書使用的開發板及作業系統 ................ 2
1.1.1 龍芯系列晶片 .................................................. 3
1.1.2 龍芯1 號微處理器 .......................................... 4
1.1.3 智龍開發板資源 .............................................. 5
1.1.4 智龍開發板使用的作業系統 .......................... 5
1.1.5 龍芯派一代開發板資源 .................................. 8
1.1.6 龍芯派一代與智龍開發板的差異 ................ 10
1.1.7 龍芯派一代開發板操作與啟動盤製作 ........ 11
1.1.8 龍芯派二代開發板操作 ................................ 20
1.2 全龍芯的交叉編譯平台 .......................... 24
1.2.1 在龍芯3A3000 主機Loongnix 系統中
搭建龍芯1C 開發環境 ................................. 24
1.2.2 中標麒麟作業系統 ........................................ 27
1.2.3 深度作業系統 ................................................ 28
1.2.4 普華作業系統 ................................................ 29
1.3 安裝Ubuntu/Fedora 及其他程式 ............ 31
1.4 虛擬機常用目錄 ...................................... 31
1.5 Windows 下需要安裝的其他軟體 .......... 32
1.6 一點常識 .................................................. 34
1.7 本書使用的網路資源 .............................. 35
第2 章 虛擬機安裝Linux 作業系統 ............. 37
2.1 下載VMware Player 並安裝 ................... 37
2.2 下載Ubuntu 桌面系統 ............................ 37
2.3 安裝Ubuntu ............................................. 37
2.4 進入終端的方法 ...................................... 39
2.5 建立root 用戶並自動登錄 ...................... 39
2.6 安裝VMware Tools ................................. 40
2.7 安裝必要的軟體 ...................................... 42
2.8 查看相關版本和信息 .............................. 43
2.9 虛擬機Linux 系統中TFTP 服務搭建.... 44
第3 章 安裝工具鏈、編譯核心、
製作檔案系統 ................................... 47
3.1 安裝交叉編譯工具gcc-4.3-ls232 ........... 47
3.2 編譯和燒寫 PMON ................................. 48
3.3 編譯和燒寫核心 ...................................... 49
3.4 製作根檔案系統 ...................................... 51
3.4.1 配置和編譯BusyBox .................................... 51
3.4.2 創建檔案系統目錄 ........................................ 53
3.4.3 創建系統配置檔案 ........................................ 53
3.4.4 複製庫檔案 .................................................... 56
3.5 製作根檔案系統鏡像 .............................. 58
3.5.1 安裝鏡像檔案製作工具 ................................ 58
3.5.2 製作根檔案系統鏡像檔案 ............................ 60
3.5.3 燒寫根檔案系統 ............................................ 61
第4 章 使用buildroot 構建根檔案系統 ......... 62
4.1 獲取buildroot........................................... 62
4.2 系統構建 .................................................. 62
4.3 燒寫根檔案系統鏡像 .............................. 63
4.4 根檔案系統軟體包的定製 ...................... 63
4.5 buildroot 構建交叉編譯工具鏈 ............... 67
第5 章 簡單套用編程Hello World ............... 69
5.1 智龍開發板上運行程式 .......................... 69
5.2 友善之臂開發板mini2440 上
運行程式 .................................................. 70
5.3 ARM 架構應用程式的移植 .................... 71
第6 章 簡單驅動程式編寫 ............................ 74
6.1 驅動的原理及編寫流程 .......................... 74
6.2 驅動模組的載入與卸載 .......................... 75
6.3 最簡單的Linux 驅動 ............................... 75
6.4 驅動的編譯和執行 .................................. 76
6.5 核心配置驅動 .......................................... 80
6.6 LED 子系統剖析 ..................................... 82
6.7 led_trigger 接口分析 ................................ 89
中級篇套用
第7 章 Linux 套用編程 ................................ 93
7.1 Linux 套用編程的基礎知識 .................... 93
7.2 檔案I/O 編程 ........................................... 93
7.3 進程和執行緒 .............................................. 96
7.4 多進程操作 .............................................. 97
7.5 進程間的通信 .......................................... 99
7.5.1 管道 ............................................................... 99
7.5.2 訊息佇列 .......................................................105
7.5.3 共享記憶體 .......................................................107
7.6 多執行緒操作 ............................................ 109
7.6.1 執行緒控制 .......................................................109
7.6.2 執行緒屬性 .......................................................111
7.6.3 互斥鎖...........................................................113
7.6.4 信號量...........................................................117
7.7 網路編程 ................................................ 119
7.7.1 網路編程基礎概念 .......................................119
7.7.2 網路編程實例 ...............................................122
7.7.3 網路編程小結 ...............................................132
7.8 OpenVPN 使用 ....................................... 132
7.8.1 OpenVPN 簡介 .............................................132
7.8.2 OpenVPN 在智龍上的移植 ........................133
7.8.3 生成證書和私鑰 ...........................................133
7.8.4 伺服器端啟動VPN 服務 .............................135
7.8.5 客戶端連線VPN 伺服器 .............................136
7.8.6 在虛擬機中測試連線 ...................................137
7.8.7 在普華桌面作業系統中測試連線 .............. 138
7.9 套用編程總結 ........................................ 140
第8 章 開發板硬體接口編程 ...................... 141
8.1 點亮一個LED 燈 .................................. 141
8.1.1 LED 的操作接口 ......................................... 141
8.1.2 LED 控制 .................................................... 142
8.1.3 在程式中操作LED 燈 ................................ 142
8.2 GPIO 硬體編程 ...................................... 143
8.2.1 GPIO 和sysfs 操作接口 .............................. 144
8.2.2 GPIO 基本操作 ............................................ 145
8.2.3 在C 程式中操作GPIO ............................... 146
8.3 按鍵套用層編程 .................................... 148
8.3.1 按鍵操作接口 .............................................. 148
8.3.2 在程式中操作按鍵 ...................................... 151
8.4 U 盤和SD 卡 ......................................... 152
8.4.1 U 盤 .............................................................. 152
8.4.2 SD 卡 ............................................................ 153
8.5 RTC 時鐘 ............................................... 154
8.6 串口讀寫 ................................................ 155
8.6.1 串口硬體說明 .............................................. 155
8.6.2 用minicom 操作串口 .................................. 156
8.6.3 用接口操作串口 .......................................... 157
8.6.4 在程式中操作串口 ...................................... 158
高級篇驅動
第9 章 NFS 檔案系統搭建 ........................ 163
9.1 在虛擬機端安裝NFS ............................ 163
9.2 配置虛擬機NFS .................................... 164
9.3 配置開發板NFS .................................... 165
9.4 使用NFS ................................................ 166
9.4.1 在開發板上掛載NFS 服務 ......................... 166
9.4.2 建立網路檔案系統 .......................................166
第10 章 配置Eclipse 編程 ........................ 168
10.1 用Eclipse 開發應用程式 .................... 168
10.2 用Eclipse 開發核心模組 .................... 170
第11 章 一個簡單的字元設備驅動 ............. 175
11.1 主設備號和次設備號 .......................... 175
11.1.1 設備編號的表達 .........................................176
11.1.2 分配和釋放設備編號 .................................176
11.2 重要的數據結構 .................................. 178
11.3 字元設備的註冊 .................................. 181
11.4 具體實例 .............................................. 182
11.4.1 file_operations 結構體設計 ........................185
11.4.2 模組初始化、模組卸載函式實現 .............186
11.4.3 讀寫函式的實現 .........................................187
11.4.4 驅動程式編譯 .............................................187
11.4.5 驅動程式編譯和載入 .................................188
11.4.6 驅動程式測試 .............................................188
11.5 一些有用的資料 .................................. 189
11.6 修改為模組註銷自動刪除設備節點 .. 190
第12 章 misc 雜項設備驅動 ...................... 191
12.1 misc 使用的結構體和函式 .................. 191
12.2 misc 設備的優點 .................................. 193
12.3 核心源碼 .............................................. 193
12.4 具體實例 .............................................. 195
第13 章 PWM控制輸出 ............................ 199
13.1 利用 LED_PWM ................................. 199
13.2 自己編寫驅動檔案 .............................. 205
第14 章 I2C 匯流排和設備驅動 .................... 214
14.1 I2C 匯流排概述 ....................................... 214
14.2 Linux I2C 設備驅動 ............................. 214
14.2.1 I2C adapter ..................................................215
14.2.2 I2C 子系統驅動模組的API .......................220
14.2.3 I2C client 的註冊 ........................................220
14.2.4 I2C driver ....................................................224
14.2.5 I2C adapter 的註冊 .....................................225
14.2.6 I2C tools 的使用 .........................................228
14.2.7 核心模組分析 ............................................ 231
14.3 實例分析at24cxx ................................. 232
14.4 實例分析DS3231 ................................ 234
第15 章 SPI 匯流排和設備驅動 ..................... 236
15.1 SPI 匯流排概述 ....................................... 236
15.1.1 硬體結構 .................................................... 236
15.1.2 工作時序 .................................................... 237
15.2 Linux SPI 設備驅動軟體架構 ............. 238
15.3 SPI 通用接口層 ................................... 238
15.3.1 SPI 匯流排和類 ............................................. 238
15.3.2 spi_master 結構 .......................................... 239
15.3.3 spi_device 結構 .......................................... 240
15.3.4 spi_driver 結構 ........................................... 241
15.3.5 spi_message 和spi_transfer 結構 .............. 242
15.4 SPI 控制器驅動 ................................... 244
15.4.1 定義控制器設備 ........................................ 244
15.4.2 註冊SPI 控制器的platform_driver .......... 246
15.4.3 註冊spi_master .......................................... 246
15.5 SPI 數據傳輸 ....................................... 249
15.6 實例分析:驅動編寫之SPI
設備靜態註冊spidev.c ........................ 250
15.7 實例分析:驅動編寫之SPI
設備動態註冊spike.c .......................... 253
15.8 編寫測試程式 ...................................... 260
第16 章 CAN 匯流排和設備驅動 ................... 266
16.1 智龍開發板硬體CAN 接口 ................ 266
16.2 Socket CAN .......................................... 268
16.3 測試工具 .............................................. 269
16.4 Socket CAN 在智龍上的測試:
使用工具iproute2 ................................. 269
16.5 Socket CAN 在智龍上的測試:
使用工具canutils .................................. 273
16.6 編寫CAN 的socket 收發
測試程式canapp ................................... 277
16.6.1 程式設計說明 ............................................ 277
16.6.2 程式傳送示例 ............................................ 280
16.6.3 程式接收示例 ............................................ 281
16.6.4 傳送和接收測試 .........................................282
第17 章 嵌入式GUI 編程 .......................... 284
17.1 使用外部LCD 控制器的
LCD 編程 ............................................ 284
17.1.1 硬體接口 .....................................................284
17.1.2 GPIO 口操作函式 ......................................284
17.1.3 LCD 操作 ....................................................293
17.1.4 編寫Makefile .............................................294
17.1.5 代碼及運行結果 .........................................295
17.2 基於Qt 使用內部LCD 控制器的
GUI 編程 ............................................... 302
17.2.1 關於Qt ........................................................302
17.2.2 Qt 的移植過程 ............................................303
17.2.3 配置buildroot .............................................304
17.2.4 下載並運行例程 .........................................306
17.2.5 搭建Qt 環境及編寫應用程式 ...................308
17.2.6 PMON 及核心源碼的修改 ........................313
17.2.7 支持鍵盤輸入和串口、LCD 同時輸出 ....314
第18 章 ADC 驅動及套用 .......................... 315
18.1 配置ADC 驅動 .................................... 315
18.2 硬體管腳分配 ...................................... 316
18.3 套用測試 .............................................. 316
18.4 套用層編程 .......................................... 316
第19 章 核心訪問外設I/O 資源 ................. 319
19.1 MIPS 的記憶體映射 ................................ 319
19.2 動態映射方式 ...................................... 320
19.3 靜態映射方式 ...................................... 326
19.4 mmap 記憶體映射 ................................... 328
19.4.1 mmap 系統調用 ..........................................328
19.4.2 系統調用mmap 用於共享記憶體的
兩種方式 .....................................................329
19.4.3 mmap 進行記憶體映射的原理 ......................329
19.4.4 記憶體映射的步驟 .........................................333
19.5 mmap 編程示例 ................................... 333
第20 章 PMON 源碼編譯、燒寫、
啟動及裸機編程 ........................... 335
20.1 PMON 源碼分析 .................................. 335
20.2 PMON 燒寫 .......................................... 336
20.2.1 採用編程器更新PMON 到SPI Flash ....... 336
20.2.2 網路更新PMON 到SPI Flash .................. 336
20.2.3 網路更新PMON 到NAND Flash ............. 337
20.3 NAND Flash 存儲器分區 .................... 337
20.4 核心啟動過程 ...................................... 338
20.4.1 核心從NAND Flash 中載入 ..................... 338
20.4.2 核心從SD Card 中載入 ............................ 339
20.4.3 核心從tftp 中載入 ..................................... 340
20.4.4 設定PMON 的IP 地址 ............................. 340
20.5 PMON 的內置命令 .............................. 341
20.6 PMON 龍芯官方參考 .......................... 342
20.7 PMON 裸機編程 .................................. 342
第21 章 在Windows 環境下搭建龍芯1C
開發環境及龍芯1C 庫 ................ 344
21.1 交叉編譯工具鏈的下載和安裝 .......... 344
21.2 MinGW 的下載和安裝 ........................ 345
21.3 編譯 ...................................................... 347
21.4 調試和運行 .......................................... 348
21.5 運行點燈程式 ...................................... 349
21.6 龍芯1C 庫............................................ 350
第22 章 智龍開發板套用及其他龍芯開
發板 ............................................. 351
22.1 智龍開發板套用例程 .......................... 351
22.1.1 WiFi 小車套用 ........................................... 351
22.1.2 北斗導航套用 ............................................ 351
22.1.3 龍印3D 印表機 ......................................... 352
22.1.4 LCD 擴展板 ............................................... 353
22.1.5 其他套用開發例程 .................................... 353
22.2 龍芯機器人控制器 .............................. 354
22.2.1 硬體結構 .................................................... 354
22.2.2 燒錄核心與根檔案系統 ............................ 354
22.2.3 機器人控制器的PWM 輸出操作 ............. 356
22.2.4 機器人控制器的套用 ................................ 357
22.3 智龍開發板在高校和社區中的
推廣套用 .............................................. 357
22.3.1 高校套用 .................................................... 357
22.3.2 龍芯CPU 高校開源計畫 ........................... 358
22.3.3 “龍芯杯”全國大學生計算機系統
能力培養大賽 ...........................................359
22.3.4 龍芯俱樂部開源社區 .................................359
22.3.5 基於龍芯平台的嵌入式系統設計競賽等
高校比賽活動 .............................................360
第23 章 Linux 核心的配置和編譯 .............. 362
23.1 安裝圖形化配置工具Ncurses ............. 362
23.2 運行圖形化配置界面 .......................... 362
23.3 編譯、燒寫Linux 核心 ....................... 363
23.4 開發板各模組驅動源碼 ...................... 363
23.5 配置核心各模組驅動 .......................... 364
23.5.1 配置網卡驅動 .............................................364
23.5.2 配置NFS 支持 ...........................................367
23.5.3 配置串口驅動 .............................................369
23.5.4 配置LCD 驅動 ...........................................370
23.5.5 配置按鍵驅動 .............................................372
23.5.6 配置SD 卡驅動 ..........................................374
23.5.7 配置U 盤驅動 ............................................375
23.5.8 配置USB 滑鼠和鍵盤驅動 .......................377
23.5.9 配置USB OTG 驅動 ..................................380
23.5.10 配置音頻驅動 ...........................................381
23.5.11 配置RTC 驅動 .........................................382
23.5.12 配置PWM 驅動 .......................................384
23.5.13 配置LED 驅動 .........................................386
23.5.14 配置紅外驅動 ...........................................387
23.5.15 配置CAN 匯流排驅動 ................................388
23.5.16 配置SPI 控制器驅動 ...............................390
23.5.17 配置I2C 控制器驅動 ...............................391
23.5.18 配置ADC 驅動 ........................................392
23.5.19 配置GPIO 驅動 .......................................393
23.5.20 配置看門狗驅動 ...................................... 394
參考文獻 ..................................................... 396
附錄1 常用Linux 命令 .............................. 397
附錄2 VIM 圖例及常用操作 ....................... 410
附錄3 BusyBox 的下載及配置 ................... 411
附錄4 PMON 常用命令 ............................. 412
附錄5 創建與驅動程式對應的設備節點 ..... 415
附錄6 Linux 檔案結構 ............................... 416
附錄7 git 命令 ........................................... 418
附錄8 在PMON 中使用命令devcp 進行
壞塊處理和支持yaffs2 燒寫 ........... 420
附錄9 智龍開發板V2 電路原理圖 ............. 421
附錄10 智龍開發板V3 電路原理圖 ........... 422
附錄11 LCD 擴展板(外部控制器)
原理圖.......................................... 423
附錄12 LCD 擴展板(內部控制器)
原理圖 ........................................... 424
附錄13 機器人控制器電路原理圖 .............. 425
附錄14 第一屆全國大學生嵌入式晶片設計
與套用競賽龍芯平台獲獎名單及
作品 ............................................... 426

相關詞條

熱門詞條

聯絡我們