第1章 計算機漫談 1
1.1 日益繽彩紛呈的Raspberry 1
1.2 片上係統 4
1.3 一颱令人激動的信用卡般大小的計算機 5
1.4 Raspberry Pi的功能 6
1.5 Raspberry Pi闆 7
1.5.1 GPIO引腳 7
1.5.2 狀態LED 9
1.5.3 USB插口 10
1.5.4 以太網連接 10
1.5.5 音頻輸齣 11
1.5.6 復閤視頻 12
1.5.7 CSI攝像頭模塊連接器 13
1.5.8 HDMI 13
1.5.9 micro USB電源 14
1.5.10 存儲卡 14
1.5.11 DSI顯示連接 15
1.5.12 裝配孔 15
1.5.13 芯片 16
1.6 未來 16
第2章計算概述 19
2.1 計算機與烹飪 20
2.1.1 佐料與數據 20
2.1.2 基本操作 21
2.2 按計劃執行的盒子 22
2.2.1 執行和知曉 22
2.2.2 程序就是數據 23
2.2.3 存儲器 24
2.2.4 寄存器 25
2.2.5 係統總綫 26
2.2.6 指令集 26
2.3 電平、數字及其錶示 27
2.3.1 二進製:以1和0錶示 27
2.3.2 手指的局限性 29
2.3.3 數量、編號和0 29
2.3.4 用於二進製速記的十六進製 30
2.3.5 執行二進製和十六進製運算 31
2.4 操作係統:幕後老闆 33
2.4.1 操作係統的功能 33
2.4.2 嚮內核緻敬 34
2.4.3 多核 34
第3章電子存儲器35
3.1 存儲器先於計算機而存在 35
3.2 鏇轉磁存儲器(Rotating Magnetic Memory) 36
3.3 磁芯存儲器 37
3.3.1 磁芯存儲器的工作過程38
3.3.2 存儲器訪問時間39
3.4 靜態隨機訪問存儲器(SRAM) 40
3.5 地址綫和數據綫 41
3.6 由存儲器芯片構建存儲器係統42
3.7 動態隨機訪問存儲器(DRAM) 45
3.7.1 DRAM的工作原理 45
3.7.2 同步DRAM和異步DRAM47
3.7.3 SDRAM列、行、Bank、Rank和DIMM 49
3.7.4 DDR、DDR2、DDR3和DDR4 SDRAM50
3.7.5 糾錯碼存儲器53
3.8 Raspberry Pi的存儲器係統54
3.8.1節能性54
3.8.2球柵陣列封裝55
3.9 緩存 55
3.9.1訪問的局部性56
3.9.2緩存層級56
3.9.3緩存行和緩存映射57
3.9.4直接映射59
3.9.5相聯映射61
3.9.6組相聯高速緩存62
3.9.7迴寫緩存到存儲器63
3.10 虛擬存儲器 64
3.10.1虛擬存儲器概覽64
3.10.2虛擬存儲器到物理存儲器的映射65
3.10.3 深入瞭解存儲器管理單元66
3.10.4 多級頁錶和TLB69
3.10.5 Raspberry Pi的交換問題70
3.10.6 Raspberry Pi虛擬存儲器70
第4章ARM處理器與片上係統73
4.1 急速縮小的CPU 73
4.1.1微處理器74
4.1.2晶體管預算75
4.2 數字邏輯基礎 75
4.2.1邏輯門75
4.2.2觸發器和時序邏輯76
4.3 CPU內部78
4.3.1分支與標誌79
4.3.2係統棧80
4.3.3係統時鍾和執行時間82
4.3.4流水綫技術83
4.3.5流水綫技術詳解84
4.3.6深入流水綫以及流水綫阻塞86
4.3.7 ARM11 中的流水綫88
4.3.8 超標量執行89
4.3.9 基於SIMD的更多並行機製90
4.3.10 字節序92
4.4 CPU再認識:CISC與RISC 93
4.4.1 RISC的曆史95
4.4.2 擴展的寄存器文件95
4.4.3 加載/存儲架構 96
4.4.4 正交的機器指令96
4.4.5 獨立的指令和數據高速緩存97
4.5 源於艾康的ARM 97
4.5.1微架構、內核及傢族98
4.5.2 齣售設計許可而非成品芯片98
4.6 ARM11 99
4.6.1 ARM指令集99
4.6.2 處理器模式102
4.6.3 模式和寄存器103
4.6.4 快速中斷107
4.6.5 軟件中斷108
4.6.6 中斷優先級108
4.6.7 條件指令執行109
4.7 協處理器 111
4.7.1 ARM協處理器接口112
4.7.2 係統控製協處理器113
4.7.3 嚮量浮點協處理器113
4.7.4 仿真協處理器114
4.8 ARM Cortex 114
4.8.1 多發和亂序執行115
4.8.2 Thumb 2 115
4.8.3 Thumb EE 115
4.8.4 big.LITTLE 116
4.8.5 NEON SIMD協處理器 116
4.8.6 ARMv8和64位計算117
4.9 片上係統 118
4.9.1 博通BCM2835 SoC 118
4.9.2 第二代和第三代博通SoC 設備119
4.9.3 VLSI芯片原理119
4.9.4 流程、製程工藝和掩膜120
4.9.5 IP:單元、宏單元、內核120
4.9.6 硬IP和軟IP121
4.9.7 平麵規劃、布局和布綫121
4.9.8 片上通信的標準:AMBA 122
第5章程序設計 125
5.1 程序設計概述 125
5.1.1 軟件開發過程126
5.1.2 瀑布、螺鏇與敏捷128
5.1.3 二進製程序設計130
5.1.4 匯編語言和助記符131
5.1.5 高級語言132
5.1.6 花樣泛濫的後BASIC 時代134
5.1.7 程序設計術語135
5.2 本地代碼編譯器的工作原理 137
5.2.1 預處理138
5.2.2 詞法分析138
5.2.3 語義分析139
5.2.4 生成中間代碼139
5.2.5 優化139
5.2.6 生成目標代碼139
5.2.7 C編譯:一個具體示例140
5.2.8 鏈接目標代碼文件到可執行文件145
5.3 純文本解釋程序 146
5.4 字節碼解釋語言 148
5.4.1 p-code 148
5.4.2 Java 149
5.4.3 即時編譯(JIT) 150
5.4.4 Java之外的字節碼和JIT 編譯152
5.4.5 Android 、Java和Dalvik 152
5.5 數據構建塊 152
5.5.1 標識符、關鍵字、符號和操作符153
5.5.2 數值、文本和命名常量153
5.5.3 變量、錶達式和賦值154
5.5.4 類型和類型定義154
5.5.5 靜態和動態類型156
5.5.6 補碼和IEEE 754 157
5.6 代碼構建塊 159
5.6.1 控製語句和復閤語句159
5.6.2 if/then/else 159
5.6.3 switch和case 161
5.6.4 repeat循環162
5.6.5 while循環163
5.6.6 for循環164
5.6.7 break和continue語句166
5.6.8 函數166
5.6.9 局部性和作用域168
5.7 麵嚮對象程序設計 170
5.7.1 封裝172
5.7.2 繼承174
5.7.3 多態176
5.7.4 OOP小結 178
5.8 GNU編譯器工具集概覽178
5.8.1 作為編譯器和生成工具的gcc179
5.8.2 使用Linux make 181
第6章非易失性存儲器185
6.1 打孔卡和磁帶 186
6.1.1 打孔卡186
6.1.2 磁帶數據存儲器186
6.1.3 磁存儲器的黎明188
6.2 磁記錄和編碼方案 189
6.2.1 磁通躍遷190
6.2.2 垂直記錄191
6.3 磁盤存儲器 192
6.3.1 柱麵、磁軌和扇區193
6.3.2 低級格式化194
6.3.3 接口和控製器195
6.3.4 軟盤驅動器197
6.4 分區和文件係統 198
6.4.1 主分區和擴展分區198
6.4.2 文件係統和高級格式化199
6.4.3 未來:GUID分區錶 (GPT) 200
6.4.4 Raspberry Pi SD卡的分區201
6.5 光盤 202
6.5.1 源自CD的格式203
6.5.2 源自DVD的格式204
6.6 虛擬硬盤 205
6.7 Flash存儲器206
6.7.1 ROM、PROM和 EPROM 206
6.7.2 Flash與EEPROM 207
6.7.3 單級與多級存儲209
6.7.4 NOR Flash與NAND Flash 210
6.7.5 損耗平衡及Flash轉換層213
6.7.6 碎片迴收和TRIM 214
6.7.7 SD卡 215
6.7.8 eMMC216
6.7.9 非易失性存儲器的未來217
第7章有綫和無綫以太網219
7.1 網絡互連OSI參考模型220
7.1.1 應用層222
7.1.2 錶示層222
7.1.3 會話層223
7.1.4 傳輸層223
7.1.5 網絡層224
7.1.6 數據鏈路層226
7.1.7 物理層226
7.2 以太網 227
7.2.1 粗纜以太網和細纜以太網227
7.2.2 以太網的基本構想227
7.2.3 衝突檢測和規避228
7.2.4 以太網編碼係統229
7.2.5 PAM-5 編碼232
7.2.6 10BASE-T和雙絞綫233
7.2.7 從總綫拓撲結構到星型拓撲結構234
7.2.8 交換以太網235
7.3 路由器和互聯網 237
7.3.1 名稱與地址237
7.3.2 IP地址和TCP端口238
7.3.3 本地IP地址和DHCP 240
7.3.4 網絡地址轉換242
7.4 Wi-Fi 243
7.4.1 標準中的標準244
7.4.2 麵對現實世界245
7.4.3 正在使用的Wi-Fi 設備 248
7.4.4 基礎設施網絡與Ad Hoc 網絡249
7.4.5 Wi-Fi 分布式介質訪問 250
7.4.6 載波監聽和隱藏結點問題251
7.4.7 分片253
7.4.8 調幅、調相和QAM 253
7.4.9 擴頻技術256
7.4.10 Wi-Fi 調製和編碼細節256
7.4.11 Wi-Fi 連接的實現原理259
7.4.12 Wi-Fi 安全性 260
7.4.13 Raspberry Pi上的Wi-Fi 261
7.4.14 更多的網絡263
第8章
操作係統 265
8.1 操作係統簡介 266
8.1.1 操作係統的曆史 267
8.1.2 操作係統基礎 270
8.2 內核:操作係統的核心主導者 274
8.2.1 操作係統控製 276
8.2.2 模式 276
8.2.3 存儲器管理 277
8.2.4 虛擬存儲器 278
8.2.5 多任務處理 278
8.2.6 磁盤訪問和文件係統 279
8.2.7 設備驅動程序 279
8.3 操作係統的使能器和助手 279
8.3.1 喚醒操作係統 280
8.3.2 固件 283
8.4 Raspberry Pi上的操作係統 283
8.4.1 NOOBS 284
8.4.2 第三方操作係統 285
8.4.3 其他可用的操作係統 285
第9章 視頻編解碼器和視頻壓縮 287
9.1 第一個視頻編解碼器 288
9.1.1 利用眼睛 288
9.1.2 利用數據 290
9.1.3 理解頻率變換 293
9.1.4 使用無損編碼技術 297
9.2 時移世易 298
9.2.1 MPEG的最新標準 299
9.2.2 H.265 302
9.3 運動搜索 302
9.3.1 視頻質量 304
9.3.2 處理能力 305
第10章 3D圖形307
10.1 3D圖形簡史307
10.1.1 圖形用戶界麵(Graphical User Interface,GUI) 308
10.1.2 視頻遊戲中的3D圖形310
10.1.3 個人計算和顯卡311
10.1.4 兩個競爭標準312
10.2 OpenGL圖形管綫 314
10.2.1 幾何規範和屬性315
10.2.2 幾何變換317
10.2.3 光照和材質320
10.2.4 圖元組裝和光柵化322
10.2.5 像素處理(片段著色)324
10.2.6 紋理326
10.3 現代圖形硬件 328
10.3.1 瓦片渲染329
10.3.2 幾何拒絕330
10.3.3 著色332
10.3.4 緩存333
10.3.5 Raspberry Pi GPU 334
10.4 Open VG 336
10.5 通用GPU 338
10.5.1 異構體係結構338
10.5.2 OpenCL 339
第11章音頻 341
11.1 現在能聽到我的聲音嗎?341
11.1.1 MIDI342
11.1.2 聲卡342
11.2 模擬與數字343
11.3 聲音和信號處理344
11.3.1 編輯344
11.3.2 壓縮345
11.3.3 使用特效錄製345
11.3.4 編碼和解碼通信信息346
11.4 1位DAC 347
11.5 I2S 349
11.6 Raspberry Pi聲音輸入/輸齣350
11.6.1 音頻輸齣插孔350
11.6.2 HDMI350
11.7 Raspberry Pi的聲音351
11.7.1 Raspberry Pi闆載聲音351
11.7.2 處理Raspberry Pi的聲音351
第12章 輸入/輸齣359
12.1 輸入/輸齣簡介 359
12.2 I/O使能器 362
12.2.1 通用串行總綫363
12.2.2 USB有源集綫器365
12.2.3 以太網367
12.2.4 通用異步收發器368
12.2.5 小型計算機係統接口368
12.2.6 PATA 369
12.2.7 SATA 369
12.2.8 RS-232串口 370
12.2.9 HDMI 370
12.2.10 I2S 371
12.2.11 I2C 371
12.2.12 Raspberry Pi顯示器、攝像頭接口和JTAG 372
12.3 Raspberry Pi GPIO 373
12.3.1 GPIO概述以及博通SoC 373
12.3.2 接觸GPIO 374
12.3.3 可編程GPIO 380
12.3.4 可選模式385
12.3.5 GPIO實驗的簡單方法 385
· · · · · · (
收起)