嵌入式Linux系統設計及應用——基于國產龍芯SoC 版權信息
- ISBN:9787302522164
- 條形碼:9787302522164 ; 978-7-302-52216-4
- 裝幀:一般膠版紙
- 冊數:暫無
- 重量:暫無
- 所屬分類:>>
嵌入式Linux系統設計及應用——基于國產龍芯SoC 本書特色
隨著國產芯片的崛起,需要更多的開發者熟悉基于國產處理器的Linux平臺。龍芯是一款具有自主知識產權的國產處理器,中國科學院計算技術研究所從2001年開始研制龍芯系列處理器。本書從龍芯SoC架構開始,較為系統全面地介紹了嵌入式Linux的構成、開發、編譯和調優等各個環節的知識,內容詳實,示例豐富。本書可作為應用型本科、高職高專院校嵌入式系統方面的課程教材,也可作為相關開發人員的自學教材和參考手冊。
一本能滿足高校嵌入式Linux系統教學和龍芯產業鏈企業技術培訓的教材。
嵌入式Linux系統設計及應用——基于國產龍芯SoC 內容簡介
龍芯系列微處理器是中國擁有自主知識產權的中央處理器,中國科學院計算技術研究所從2001 年開始研制龍芯系列處理器,于2010 年正式成立龍芯中科技術有限公司(以下簡稱龍芯中科),主要產品包括龍芯1 號CPU、龍芯2 號CPU 及龍芯3 號CPU。本書是基于龍芯俱樂部與龍芯中科合作開發的南京龍眾創芯電子科技有限公司承制的智龍開發板,圍繞龍芯1 號芯片LS1C 進行嵌入式系統開發講解,也包含龍芯中科的2K 龍芯派、南京龍眾創芯電子科技有限公司
的龍芯3A3000 開發者計算機的內容。 本書內容共分3 篇。基礎篇包含實驗平臺和開發環境的搭建。中級篇為Linux 基礎應用編程,包含線程、信號、網絡等基本操作。高級篇包含開發板硬件編程、驅動程序編寫等高級操作。附錄主要為嵌入式系統開發常用資料和智龍開發板的電路原理圖。本書結合實踐案例及應用場景,按照嵌入式系統的開發流程組織內容,使讀者能熟練掌握從開發環境搭建到編寫完整工程的流程。同時提供內核源碼及實例代碼,并給出測試結果,方便讀者參考。 本書具有廣泛的適用性,不僅可用于MIPS 架構的龍芯1 號芯片的嵌入式系統開發,還可用于基于Linux 操作系統的嵌入式系統學習。其中在內核原理、應用程序編寫,如虛擬機編譯、程序下載、調試、應用開發、內核裁減等方面與同類ARM 架構芯片相比,開發過程是通用的。本書可作為應用型本科、高職高專院校嵌入式系統方面的課程教材,也可作為相關開發人員的自學教材和參考手冊。
嵌入式Linux系統設計及應用——基于國產龍芯SoC 目錄
第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_x00B_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_x00C_
展開全部
嵌入式Linux系統設計及應用——基于國產龍芯SoC 作者簡介
孫冬梅(1975.1-):博士后,副教授,2004年獲南京理工大學測試計量技術及儀器專業博士學位;2011.1~2015.12進入南京工業大學“動力工程及工程熱物理”博士后流動站,從事研究工作。現任江蘇省儀器儀表學會理事,江蘇省射頻識別技術標準化技術委員會委員。 2012年主持了江蘇省博士后基金“大型風電回轉支承多源振動信號故障診斷的數據融合方法研究”;2009年主持江蘇省高校自然科學基金項目“基于熱導式微流量智能傳感器的分析儀器開發研究”。參與了多項國家自然科學基金開發研究,完成了多項科研項目,有豐富的理論及實踐經驗;近幾年來,在國內外核心期刊上發表學術論文50多篇。