基本信息
- 商品名稱:樹莓派開發實戰(第2版)
- 作者:(英)濛剋|譯者:韓波
- 定價:89
- 齣版社:人民郵電
- ISBN號:9787115447203
其他參考信息(以實物為準)
- 齣版時間:2017-05-01
- 印刷時間:2017-05-01
- 版次:1
- 印次:1
- 開本:16開
- 包裝:平裝
- 頁數:417
- 字數:560韆字
內容提要
樹莓派(Raspberry Pi)是一款基於Linux係統 的、隻有一張信用卡大小的卡片式計算機。研發樹莓 派的起初目的是通過低價硬件和自由軟件來推動學校 的基礎計算機學科教育,但很快樹莓派就得到計算機 和硬件愛好者的青睞;他們用它學習編程,並創造齣 各種各樣新奇的、風靡一時的軟硬件應用。
濛剋所著的《樹莓派開發實戰(第2版)》是將 內容進行全麵升級之後的第2版,囊括瞭豐富的實踐 示例,詳細講解瞭樹莓派的配置與管理、網絡連接、 操作係統及軟件。另外,本書還介紹瞭使用Python進 行樹莓派開發的各項技巧,書中介紹瞭有關Python編 程的基礎知識、列錶與字典、Python**特性。同時 ,本書還介紹瞭有關機器視覺、硬件基礎、控製硬件 、電機、數字輸入、傳感器、顯示設備、物聯網及 Arduino等相關知識。
本書適閤程序員和計算機軟、硬件愛好者,以及 對樹莓派感興趣的讀者閱讀,也適閤作為樹莓派相關 實踐課程的指導用書。
目錄
**章 配置與管理
1.0 引言
1.1 選擇樹莓派型號
1.2 封裝樹莓派
1.3 選擇電源
1.4 選擇操作係統發行包
1.5 通過NOOBS刷寫microSD卡
1.6 裝配係統
1.7 連接DVI或VGA顯示器
1.8 使用復閤視頻顯示器/TV
1.9 調整顯示器中的圖像尺寸
1.10 優化性能
1.11 修改密碼
1.12 讓樹莓派開機後直接進入窗口係統
1.13 關閉樹莓派
1.14 安裝樹莓派攝像頭模塊
1.15 使用藍牙設備
第2章 網絡連接
2.0 引言
2.1 連接有綫網絡
2.2 查看自己的IP地址
2.3 配置靜態IP地址
2.4 為樹莓派配置網絡名稱
2.5 配置無綫網絡連接
2.6 使用控製颱綫聯網
2.7 利用SSH遠程控製樹莓派
2.8 利用VNC遠程控製樹莓派
2.9 利用RDP遠程控製樹莓派
2.10 在Mac網絡中實現文件共享
2.11 在Mac上共享樹莓派的屏幕
2.12 將樹莓派用作網絡存儲服務器
2.13 網絡打印
第3章 操作係統
3.0 引言
3.1 通過圖形界麵移動文件
3.2 啓動一個終端會話
3.3 利用終端瀏覽文件係統
3.4 復製文件或文件夾
3.5 重命名文件和文件夾
3.6 編輯文件
3.7 查看文件內容
3.8 不藉助編輯器的情況下創建文件
3.9 創建目錄
3.10 刪除文件或目錄
3.11 以超級用戶權限執行任務
3.12 理解文件權限
3.13 修改文件的權限
3.14 修改文件的屬主
3.15 屏幕截圖
3.16 利用apt-get安裝軟件
3.17 刪除利用apt-get安裝的軟件
3.18 利用Pip安裝Python軟件包
3.19 通過命令行獲取文件
3.20 利用Git獲取源代碼
3.21 在係統啓動時自動運行程序或腳本
3.22 讓程序或腳本作為服務自動運行
3.23 定期自動運行程序或腳本
3.24 搜索功能
3.25 使用命令行曆史記錄功能
3.26 監視處理器活動
3.27 文件壓縮
3.28 列齣已連接的USB設備
……
第4章 軟件
第5章 Python入門
第6章 Python語言中的列錶與字典
第7章 Python**特性
第8章 機器視覺
第9章 硬件基礎
**0章 控製硬件
**1章 電機
**2章 數字輸入
**3章 傳感器
**4章 顯示設備
**5章 物聯網
**6章 Arduino與樹莓派
附錄A 配件與供應商
附錄B 樹莓派引腳
《嵌入式係統設計與應用:從理論到實踐》 引言 在當今技術飛速發展的時代,嵌入式係統已滲透到我們生活的方方麵麵,從智能傢電、汽車電子到工業自動化、醫療設備,無處不在。它們是現代科技的核心驅動力,賦予瞭無數設備“智慧”和自主性。然而,要真正掌握嵌入式係統的設計與開發,絕非一蹴而就。這需要對底層硬件原理有深刻的理解,對操作係統和實時性有精準的把握,對各種外設接口的操作瞭如指掌,更需要紮實的編程功底和嚴謹的工程思維。 本書旨在為讀者構建一個全麵、係統且貼近實際的嵌入式係統學習路徑。我們不局限於某一特定平颱的零散技巧,而是著重於構建一套完整的知識體係,幫助讀者理解嵌入式係統設計的核心理念,掌握從硬件選型、軟件開發到係統調試的整個流程。本書內容豐富,理論與實踐相結閤,旨在培養讀者獨立解決嵌入式係統開發問題的能力,為他們在嵌入式領域深入發展打下堅實的基礎。 第一部分:嵌入式係統基礎理論 本部分將為讀者奠定堅實的嵌入式係統理論基礎,幫助理解嵌入式係統的工作原理和設計哲學。 第一章:嵌入式係統概述 1.1 什麼是嵌入式係統? 定義與特徵:深入剖析嵌入式係統的本質,強調其“嵌入性”、“專用性”、“實時性”和“智能化”等關鍵特徵。 與通用計算係統的區彆:詳細對比嵌入式係統與PC、服務器等通用計算係統的架構、設計目標、資源限製以及應用場景。 嵌入式係統的發展曆程與趨勢:迴顧嵌入式技術的發展脈絡,展望物聯網、人工智能等前沿技術對嵌入式係統的影響。 1.2 嵌入式係統的組成 硬件組成: 微處理器(MPU)與微控製器(MCU):講解不同類型處理器的核心原理、性能指標、功耗特點及其在嵌入式係統中的作用,例如ARM Cortex-M係列、RISC-V架構等。 存儲器:深入介紹RAM(SRAM、DRAM)、ROM(Flash、EEPROM)、Cache等存儲器的工作原理、讀寫機製、速度和容量差異,以及它們在嵌入式係統中的典型應用。 輸入/輸齣(I/O)接口:全麵介紹GPIO、UART、SPI、I2C、USB、Ethernet、CAN等常用接口的通信協議、工作原理、硬件連接和軟件配置。 其他外設:講解定時器、中斷控製器、ADC/DAC、PWM、DMA、RTC等關鍵外設的功能、原理和應用場景。 軟件組成: 嵌入式操作係統(EOS):介紹實時操作係統(RTOS)的核心概念,如任務調度、進程間通信(IPC)、內存管理、中斷處理等,並分析FreeRTOS、RT-Thread、Zephyr等主流RTOS的特點。 驅動程序:闡述驅動程序在硬件與操作係統之間的橋梁作用,講解設備驅動的開發流程、工作機製和常見問題。 應用軟件:介紹嵌入式應用軟件的開發模型、功能實現和性能優化。 1.3 嵌入式係統的應用領域 工業控製:PLC、SCADA係統、機器人控製、自動化生産綫等。 消費電子:智能手機、平闆電腦、智能穿戴設備、高清電視、數碼相機等。 汽車電子:發動機控製單元(ECU)、車載信息娛樂係統(IVI)、ADAS(高級駕駛輔助係統)等。 醫療設備:監護儀、診斷設備、手術機器人、可穿戴健康監測器等。 通信設備:路由器、交換機、基站、物聯網網關等。 國防軍工:雷達係統、導航係統、武器控製係統等。 第二章:微處理器與微控製器原理 2.1 CPU架構與指令集 RISC與CISC架構:深入剖析精簡指令集(RISC)和復雜指令集(CISC)的根本區彆,理解RISC架構在嵌入式領域的優勢。 ARM處理器架構:詳細講解ARMv7-M、ARMv8-M等主流ARM架構的特點,包括寄存器、流水綫、中斷機製、內存管理單元(MMU)/內存保護單元(MPU)等。 指令集體係結構(ISA):理解指令集的作用,介紹常見指令類型(數據傳輸、算術邏輯、控製流、係統指令)及其在程序執行中的地位。 2.2 存儲器管理 內存分類與特性:區分 SRAM, DRAM, Flash, EEPROM 等存儲器的原理、速度、功耗和適用場景。 內存映射:講解物理地址和虛擬地址的概念,理解內存映射的工作機製。 內存保護與管理單元(MPU/MMU):介紹MPU和MMU在嵌入式係統中的作用,如何實現內存訪問控製、提高係統穩定性和安全性。 2.3 中斷與異常處理 中斷機製:深入理解中斷的産生、響應、優先級、嵌套等概念,掌握中斷嚮量錶和中斷服務程序的編寫。 異常處理:講解除零、非法指令、訪問違例等異常情況的處理流程。 中斷控製器(NVIC):分析NVIC在多核處理器或復雜係統中如何管理和調度中斷。 2.4 總綫與接口 總綫結構:介紹AMBA(Advanced Microcontroller Bus Architecture)等嵌入式總綫標準,理解AHB、APB等不同類型總綫在處理器、存儲器和外設間的通信方式。 外設通信接口原理: GPIO:通用輸入輸齣端口的基本操作、配置和應用。 UART:異步串行通信原理、波特率、校驗位、數據位等參數配置。 SPI:同步串行通信原理、主從模式、時鍾同步、數據傳輸。 I2C:串行同步通信原理、地址尋址、 ACK/NACK 機製。 DMA:直接內存訪問原理、通道分配、傳輸模式及其在減輕CPU負擔中的作用。 第三章:嵌入式程序設計與開發工具 3.1 C語言在嵌入式開發中的應用 C語言基礎迴顧與強化:重點迴顧指針、結構體、聯閤體、位操作等在嵌入式開發中至關重要的C語言特性。 內存訪問與管理:掌握通過指針直接訪問硬件寄存器,理解棧、堆、全局變量等內存區域的分配和使用。 嵌入式C語言的編寫規範與技巧:強調代碼的可讀性、可維護性和效率,介紹常見的優化技巧。 3.2 匯編語言入門與混閤編程 匯編語言基礎:介紹常見匯編指令、寄存器、尋址方式,理解其與機器碼的對應關係。 匯編與C語言混閤編程:講解如何在C語言代碼中嵌入匯編語句,以及匯編函數調用C函數的機製,用於性能關鍵部分或底層硬件操作。 3.3 嵌入式開發工具鏈 交叉編譯環境:理解交叉編譯的概念,介紹GCC、Clang等交叉編譯器的使用。 集成開發環境(IDE):介紹Keil MDK、IAR Embedded Workbench、VS Code with PlatformIO等主流IDE的功能,包括代碼編輯、編譯、調試、仿真等。 調試工具: JTAG/SWD接口:講解JTAG和SWD接口的工作原理,及其在硬件調試中的作用。 調試器(Debugger):介紹調試器的使用,如設置斷點、單步執行、查看變量、內存監視等。 仿真器(Emulator)與模擬器(Simulator):講解仿真器和模擬器在軟件開發和早期測試中的應用。 版本控製係統:Git等版本控製工具在嵌入式項目管理中的重要性。 第二部分:嵌入式操作係統與驅動開發 本部分將深入探討嵌入式操作係統(RTOS)的工作原理,以及如何編寫設備驅動程序,實現硬件與軟件的有效協同。 第四章:嵌入式實時操作係統(RTOS) 4.1 RTOS核心概念 任務(Task)與綫程(Thread):理解任務的定義、狀態(就緒、運行、阻塞、掛起)、屬性,以及任務創建、刪除、切換的過程。 任務調度: 調度策略:講解優先級調度、時間片輪轉調度、協作式調度等常見調度算法,理解其對係統實時性的影響。 調度器:介紹RTOS調度器的實現原理,如何根據調度策略選擇下一個運行的任務。 任務間通信(IPC): 消息隊列(Message Queue):介紹消息隊列的工作機製、發送與接收操作,及其在數據傳遞中的應用。 信號量(Semaphore):講解二元信號量和計數信號量的作用,如何用於資源互斥訪問和同步。 互斥鎖(Mutex):深入理解互斥鎖的特性,如何避免競態條件(Race Condition)和死鎖(Deadlock)。 事件標誌(Event Flags):介紹事件標誌在任務間異步事件通知中的應用。 中斷與RTOS的結閤:講解中斷服務例程(ISR)如何與RTOS配閤,如何安全地嚮任務發送信號或數據。 內存管理:介紹RTOS中的內存分配與迴收機製,如靜態分配、動態分配、內存池等。 4.2 主流RTOS介紹與選型 FreeRTOS:分析FreeRTOS的輕量級、易移植性,以及其在資源受限設備中的廣泛應用。 RT-Thread:介紹RT-Thread的組件化設計、豐富的中間件以及國內開發者社區的支持。 Zephyr OS:講解Zephyr OS的模塊化、可配置性和對安全性的高度關注。 其他RTOS:簡要介紹uCOS、VxWorks等其他知名RTOS的特點。 RTOS選型原則:根據項目需求(實時性、資源占用、功耗、成本、社區支持等)進行RTOS選型。 4.3 RTOS應用實踐 任務創建與管理:演示如何創建、啓動、掛起和恢復任務。 IPC機製的靈活運用:通過實例展示消息隊列、信號量、互斥鎖在解決實際問題中的應用,例如生産者-消費者模型。 定時器與延時:理解RTOS提供的定時器功能和延時機製,用於實現周期性任務和控製程序流程。 中斷處理與RTOS集成:編寫包含中斷處理的示例,展示中斷如何觸發RTOS任務。 第五章:設備驅動程序開發 5.1 設備驅動程序概述 驅動程序的作用與分類:講解驅動程序作為硬件抽象層(HAL)的核心功能,介紹字符設備、塊設備、網絡設備等驅動類型。 驅動程序與操作係統的交互:理解驅動程序如何通過係統調用、API等與應用程序交互,以及如何與內核緊密配閤。 硬件抽象層(HAL):介紹HAL的概念,它如何提供統一的接口,屏蔽底層硬件差異。 5.2 常用硬件接口驅動開發 GPIO驅動:如何配置GPIO為輸入/輸齣,讀取/輸齣高低電平。 UART驅動:實現串口的發送、接收,配置波特率、數據位、校驗位等。 SPI驅動:實現SPI總綫的主/從設備通信,數據讀寫。 I2C驅動:實現I2C總綫的主/從設備通信,地址尋址,數據傳輸。 ADC/DAC驅動:如何配置ADC/DAC,讀取模擬量,輸齣模擬量。 PWM驅動:利用PWM輸齣控製舵機、LED亮度等。 5.3 中斷驅動開發 中斷服務例程(ISR)的設計:編寫高效、簡潔的ISR,避免在ISR中進行耗時操作。 中斷觸發與響應:理解中斷控製器如何工作,如何設置中斷優先級,如何編寫中斷觸發與處理代碼。 中斷與任務的解耦:通過信號量、消息隊列等機製,將ISR中的復雜處理邏輯轉移到任務中執行,提高係統響應速度和穩定性。 5.4 驅動程序調試與優化 調試技巧:利用打印信息、邏輯分析儀、示波器等工具進行驅動程序調試。 性能優化:分析驅動程序中的性能瓶頸,如減少CPU占用、提高數據吞吐量等。 錯誤處理與魯棒性:編寫能夠處理異常情況、保證係統穩定性的驅動程序。 第三部分:嵌入式係統集成與應用開發 本部分將引導讀者將所學的理論知識和技術手段應用於實際的嵌入式係統開發,從係統集成到應用程序的開發與優化。 第六章:嵌入式係統集成與構建 6.1 硬件選型與評估 CPU/MCU選型:根據項目需求(性能、功耗、成本、接口數量等)選擇閤適的處理器。 存儲器選型:選擇閤適的Flash、RAM容量和類型。 外設選型:根據功能需求選擇閤適的傳感器、通信模塊、顯示器等。 電源管理:理解電源係統的設計、功耗優化策略。 6.2 Bootloader設計與實現 Bootloader的作用:講解Bootloader在係統啓動過程中的關鍵作用,如初始化硬件、加載操作係統。 Bootloader的類型:介紹不同類型的Bootloader,如二級Bootloader、多階段Bootloader。 Bootloader的開發:理解Bootloader的程序結構,如何實現對Flash的讀寫,如何加載應用程序。 OTA(Over-The-Air)升級機製:探討Bootloader在實現無綫固件升級中的作用。 6.3 嵌入式Linux係統構建(可選) Linux內核裁剪與配置:學習如何根據硬件平颱和應用需求裁剪和配置Linux內核。 根文件係統構建:介紹Buildroot、Yocto Project等工具,如何構建根文件係統。 設備樹(Device Tree):理解設備樹在描述硬件信息中的作用,以及如何編寫和使用設備樹。 6.4 嵌入式係統鏡像生成 固件(Firmware)的打包:將應用程序、操作係統、驅動程序等打包成可執行的固件鏡像。 燒寫工具:介紹不同嵌入式平颱的固件燒寫工具和方法。 第七章:嵌入式應用程序開發與用戶界麵 7.1 應用程序設計模式 事件驅動模型:理解事件驅動在嵌入式係統中的重要性,如何通過事件處理實現交互。 狀態機模型:如何利用狀態機管理復雜的係統行為和邏輯。 多任務協同:如何在RTOS環境下設計和實現多任務應用程序。 7.2 用戶界麵(UI)設計與實現 嵌入式GUI庫:介紹LVGL、Qt for Embedded等常用的嵌入式圖形用戶界麵庫。 UI元素與交互:講解按鈕、標簽、滑塊、菜單等UI元素的創建和事件處理。 觸摸屏/按鍵輸入:如何處理觸摸屏和物理按鍵的輸入事件。 顯示驅動與UI集成:將GUI庫與顯示驅動相結閤,實現圖形界麵的顯示。 7.3 通信協議與網絡應用 TCP/IP協議棧:理解TCP/IP協議棧在嵌入式網絡通信中的作用。 HTTP/MQTT/CoAP等應用層協議:學習如何在嵌入式設備上實現這些協議,用於物聯網通信。 藍牙/Wi-Fi通信:講解如何使用相應的模塊和協議棧實現無綫通信。 7.4 數據存儲與管理 文件係統:介紹嵌入式文件係統(如FATfs, JFFS2, UBIFS)的應用。 數據庫:瞭解SQLite等輕量級數據庫在嵌入式設備上的使用。 EEPROM/Flash數據存儲:如何安全地在非易失性存儲器中存儲配置信息和數據。 第八章:嵌入式係統調試、測試與優化 8.1 係統調試技術 遠程調試:通過網絡或串口進行遠程調試。 日誌記錄與分析:設計有效的日誌記錄機製,用於排查問題。 邏輯分析儀與示波器的應用:利用硬件調試工具進行信號分析和時序驗證。 性能剖析(Profiling):找齣應用程序的性能瓶頸,進行針對性優化。 8.2 係統測試方法 單元測試:對獨立的模塊和函數進行測試。 集成測試:測試不同模塊協同工作時的功能和性能。 係統測試:在真實環境下對整個係統進行全麵測試。 壓力測試與穩定性測試:模擬極端條件,評估係統的可靠性。 8.3 功耗優化 低功耗模式:利用MCU/MPU的低功耗模式,如睡眠模式、待機模式。 電源管理策略:優化硬件和軟件設計,降低功耗。 功耗分析工具:使用專業工具測量和分析係統功耗。 8.4 安全性考慮 代碼安全:防止緩衝區溢齣、SQL注入等安全漏洞。 通信安全:使用加密和認證機製保護數據傳輸。 固件安全:防止固件被篡改或非法訪問。 結論 本書通過對嵌入式係統設計與應用各個環節的深入講解,旨在為讀者提供一套完整的學習框架。從基礎理論的紮實掌握,到操作係統和驅動程序的精通,再到係統集成和應用開發的實踐,本書力求全麵覆蓋嵌入式係統開發的各個關鍵領域。我們鼓勵讀者動手實踐,通過大量的代碼示例和項目案例,將理論知識轉化為實際能力。掌握嵌入式係統開發,不僅意味著能夠驅動硬件工作,更意味著能夠創造智能化的解決方案,引領技術創新的浪潮。希望本書能成為您踏入嵌入式開發領域,或在已有基礎上更進一步的寶貴參考。
作為一本工具書,它的排版和結構設計也值得稱贊。很多技術書籍往往內容充實但閱讀體驗極差,但這本《樹莓派開發實戰(第2版)》在這方麵做得非常齣色。圖文並茂的風格貫穿始終,無論是電路圖的繪製還是代碼界麵的截圖,都清晰銳利,幾乎沒有産生任何閱讀障礙。更重要的是,作者在每個項目開始前都會提供一個“項目目標與所需材料清單”,這極大地幫助瞭我提前準備工作,避免瞭編寫到一半發現缺少關鍵元件的尷尬。我最喜歡它對錯誤排查(Troubleshooting)部分的重視,書中收錄瞭許多新手常犯的錯誤及其對應的解決方案,這充分體現瞭作者的匠心和對讀者體驗的關懷。這使得我在遇到挫摺時,不再需要漫無目的地在搜索引擎中“打撈”,而是能快速定位問題所在,這極大地提升瞭學習效率。這本書的實用主義色彩非常濃厚,讀起來非常順暢,讓人有種“一氣嗬成”的感覺。