Raspberry Pi 樹莓派:12 道開胃菜打造 Linux 核心肌群(iT邦幫忙鐵人賽係列書)

Raspberry Pi 樹莓派:12 道開胃菜打造 Linux 核心肌群(iT邦幫忙鐵人賽係列書) pdf epub mobi txt 电子书 下载 2025

林有容
圖書標籤:
  • Raspberry Pi
  • 樹莓派
  • Linux
  • 核心
  • 操作係統
  • 嵌入式係統
  • iT邦幫忙
  • 鐵人賽
  • 開源
  • 硬件
  • 編程
想要找书就要到 灣灣書站
立刻按 ctrl+D收藏本页
你会得到大惊喜!!

圖書描述

  「Ok,你買瞭幾本 Linux 驅動程式的書,然後呢?」

  在學習一個新技術時,往往會期待先從一些簡單的例子齣發,再逐漸延伸。
  不過,如果這個新技術跟 Linux 核心相關,「一些簡單的例子」可能沒那麼簡單。

  如果直接從核心改起,從一些作業係統課常見的名詞齣發:行程管理、同步機製、記憶體等,往往會因為更動帶來的影響遍佈整個作業係統,而不知該如何下手。而如果從裝置驅動程式開始,個人電腦的硬體往往缺乏彈性,嵌入式係統則需要另外準備軟、硬體實驗環境、交叉編譯工具鏈等等,也很有可能需要另外使用 QEMU 之類的模擬器除錯。

  要開始寫程式,纔能驗證所學。但似乎很難找到簡單實驗環境與例子,那該怎麼辦呢?

  別擔心!這本書就是來迴答這個問題!

  本書內容改編自第12屆iT邦幫忙鐵人賽IoT組冠軍係列文章──《Modern Maker : 從那些 Maker 的大小事看 Linux 核心》。本書旨在替理解 Linux 內部提供一個略為不同的切入點,使用創客手邊的 Raspberry Pi 與 Arduino,搭配最普遍使用的 Ubuntu,作為實驗 Linux 核心功能的環境。除此之外,本書援引近五年來的諸多研討會作為第一手材料。手上拿著這本書的你,不用買更多材料,今天迴傢就可以立刻實驗!

  本書內容
  Chapter 1:Ftrace 與 eBPF ,介紹 Linux 中的兩個動態追蹤機製:由「即時」分支來的 ftrace ,與近幾年討論度極高的 eBPF。這些工具使得讀者僅使用命令列,就能觀察 Linux 內部的運作。這樣做也容易有「外溢」的效果:如果你在追蹤結果中一直看到某些東西重複齣現,自然會好奇這是什麼。於是你就有瞭一個學新東西的好情境。

 Chapter 2:裝置樹與 Linux 裝置框架,介紹裝置樹與 Linux 裝置模型。一方麵是更貼近 Maker 的經驗:Maker 們可能常 常在一些感測器、ADC、觸控螢幕的硬體供應商提供說明中,看到疊加裝置樹的指示。介紹裝置樹對於 Maker 來說,可以更深入理解這件事的目的,是非常有幫助的知識。另一方麵,核心模組也可以因為結閤裝置模型,許多函式可以使用自動資源管理的版本,也有助於讓程式更精簡。

  Chapter 3:GPIO ,介紹如何在核心中使用 GPIO 。有瞭 GPIO 之後,就能在 Chapter 4:IRQ 中使用 GPIO 觸發各種 IRQ,搭配 Chapter 1 的動態追蹤工具,讓讀者可以親自實驗中斷上半部與下半部機製的執行機製、執行前後文、發生時機等等。本書涵蓋的下半部機製包含瞭 workqueue、softirq、tasklet 與 threaded IRQ。在理解 IRQ 之後,相信讀者在閱讀核心文件時,碰到如「該函式無法在不能休眠的情境使用」之類的敘述時,就不會容易感到睏惑。

  Chatper 5:I2C ,在介紹核心與使用者空間的 I2C 相關功能之後,Chatper 6:與使用者交換資料中,介紹瞭字元驅動程式,並且把前述的 I2C 的傳輸包裝成字元驅動程式。 最後則是介紹瞭專為感測器設計的 IIO 子係統。多數的 ADC、加速規、距離感測器等,有不少可以在 IIO 子係統中找到驅動程式。

  本書使用的硬體
  這本書使用 Raspberry 4B 與 Arduino Uno。當然,還需要幾條杜邦線。除此之外,為瞭不讓使用 3.3V 邏輯電壓的 Raspberry Pi 4B 被使用 5V 邏輯電壓的 Arduino Uno 破壞,部分實驗需要使用到邏輯準位轉換器(logic level shifter)。以及在最後的 IIO 實驗中,還需要一個 TCRT5000 紅外線距離感測器,但實際上也可以 Arduino Uno 替代。除此之外,你不需要更多硬體瞭。

  Ok,準備好瞭,我們就直接開始吧!

 
深入探索嵌入式世界的基石:現代微控製器應用與係統設計 本書聚焦於嵌入式係統開發的核心領域,旨在為讀者提供一個全麵而深入的視角,涵蓋從底層硬件交互到上層應用構建的完整技術棧。 本書的編寫基於當前業界對高性能、低功耗嵌入式解決方案的迫切需求,內容側重於通用微控製器架構(如基於Cortex-M係列的芯片)的深度應用、實時操作係統(RTOS)的實踐部署,以及物聯網(IoT)應用中的關鍵技術。 本書的結構設計為循序漸進的模塊化學習路徑,確保即便是對嵌入式領域有一定基礎的工程師也能找到深入探討的方嚮,同時對初學者而言,也能構建堅實的理論基礎。 --- 第一部分:微控製器硬件基礎與高效編程範式 本部分將從微控製器的物理特性和指令集架構入手,奠定讀者對硬件層麵的深刻理解。我們不局限於特定品牌的單一芯片係列,而是著眼於主流架構(如ARM Cortex-M3/M4/M7)的共性原理。 章節 1:現代嵌入式處理器架構解析 詳細剖析馮·諾依曼與哈佛架構的差異在現代MCU設計中的體現。深入探討流水綫、分支預測對代碼執行效率的影響。重點分析寄存器組、總綫結構(如AHB/APB)如何影響數據傳輸的瓶頸與優化策略。我們將用匯編層麵的視角審視C語言代碼是如何映射到實際硬件操作的。 章節 2:高效能C/C++編程實踐 嵌入式編程的效率直接關聯到資源消耗。本章將深入探討“裸金屬”(Bare-Metal)編程技巧,包括但不限於:位操作的極緻優化、內存對齊對緩存命中的影響、`volatile`關鍵字在並發訪問中的精確語義,以及函數調用約定(Calling Convention)對棧幀大小的控製。我們將引入C++在嵌入式環境下的優勢與陷阱,如對象生命周期管理和RAII(資源獲取即初始化)在資源受限環境下的應用。 章節 3:精確的硬件抽象層(HAL)設計 構建可移植、可維護的硬件抽象層是大型嵌入式項目的關鍵。本章將指導讀者如何設計一個清晰的HAL,用以隔離應用程序代碼與特定外設的寄存器細節。我們將通過實例演示如何利用宏和枚舉來標準化寄存器訪問,並討論位域(Bit-fields)在寄存器映射中的精確使用方法與潛在的編譯器依賴問題。重點分析如何通過設計接口而非實現細節來定義驅動程序的契約。 --- 第二部分:實時性、並發與操作係統原理 實時性是現代控製係統和通信係統的生命綫。本部分將完全聚焦於操作係統的引入、調度算法的實現以及如何管理並發資源。 章節 4:實時操作係統(RTOS)內核機製 本章將深入分析一個微內核RTOS的核心組件。討論任務(Task)的狀態轉換模型、上下文切換(Context Switching)的開銷分析與優化。重點講解優先級反轉問題及其解決方案(如優先級繼承協議或優先級天花闆協議)。我們將通過分析FreeRTOS或類似的輕量級RTOS的源代碼片段,來理解其調度器的工作原理。 章節 5:同步與互斥機製的深度應用 理解信號量(Semaphore)、互斥鎖(Mutex)和事件標誌(Event Flags)的底層差異及其適用場景。本章將通過實際的生産者-消費者模型實例,展示如何利用這些機製來安全地共享數據和資源。特彆地,我們將探討中斷服務程序(ISR)與任務之間安全通信的最佳實踐,避免死鎖(Deadlock)和競態條件(Race Condition)。 章節 6:確定性定時與中斷管理 實時係統的核心在於可預測性。本章詳述定時器中斷、係統滴答(System Tick)的配置與校準。深入分析中斷延遲(Interrupt Latency)和中斷抖動(Jitter)的來源,並指導讀者如何通過中斷嵌套優化和禁用/使能中斷的時機控製來最小化這些不確定因素。我們將探討如何實現高精度延遲和周期性任務的精確觸發。 --- 第三部分:關鍵外設的高級控製與數據流管理 本部分將把理論應用於實際的硬件交互,重點關注數據吞吐量要求高、需要復雜狀態管理的通信接口和數據采集模塊。 章節 7:高級串行通信:UART、SPI 與 I2C 的性能調優 超越基礎的讀寫操作,本章關注如何配置這些接口以實現最高效率。針對SPI,我們將探討時鍾極性(CPOL)和相位(CPHA)對數據同步的影響,並設計DMA(直接內存訪問)模式下的高速數據傳輸方案。對於I2C,我們將分析多主站(Multi-master)通信的仲裁機製,以及如何處理總綫鎖定的恢復。 章節 8:DMA 驅動的高速數據采集與傳輸 DMA是解放CPU、實現並行處理的關鍵技術。本章將係統性地講解DMA控製器的配置,包括循環模式(Circular Mode)的應用,以及DMA傳輸完成/半完成中斷的處理邏輯。我們將設計一個應用案例,例如連續采集ADC數據並將其打包通過高速接口(如SDIO或高速UART)傳輸,全程不占用CPU主頻資源。 章節 9:模數轉換(ADC)的精度與采樣率控製 嵌入式係統中數據采集的準確性至關重要。本章將深入探討ADC的內部結構,如采樣保持電路、參考電壓的穩定性。重點分析過采樣(Oversampling)技術如何通過軟件手段提高信噪比(SNR),以及如何根據奈奎斯特-香農采樣定理來閤理設置采樣率,避免混疊現象的發生。 --- 第四部分:係統可靠性、診斷與固件更新 構建一個麵嚮生産環境的係統,必須考慮長期運行的可靠性和可維護性。 章節 10:錯誤檢測、復位與看門狗機製 係統崩潰是不可避免的,關鍵在於如何快速恢復。本章詳細介紹片上外設(如電源監控、欠壓檢測)的配置。重點講解看門狗(Watchdog Timer)的多種模式(窗口看門狗、獨立看門狗)及其在軟件陷入死循環時的“救生”作用。同時,探討如何利用復位源標誌位來診斷係統崩潰的根本原因。 章節 11:固件空中升級(OTA)的基礎架構 在物聯網設備部署後,固件升級是必需的功能。本章設計一個雙區(Dual Bank)閃存更新方案。我們將討論引導加載程序(Bootloader)的角色,如何安全地校驗新固件的完整性(校驗和或CRC),以及在更新過程中確保係統不被“變磚”的原子性操作設計。 章節 12:低功耗模式與電源管理策略 針對電池供電設備,本章將係統講解MCU的各種睡眠模式(如深度睡眠、休眠、待機),及其對應的喚醒源配置。分析時鍾門控(Clock Gating)和電源域隔離對降低靜態功耗的貢獻。最後,設計一個事件驅動(Event-Driven)的低功耗架構,確保設備僅在需要處理外部事件時纔消耗最大能量。 --- 本書通過大量的代碼示例、架構圖示和性能基準測試,力求將抽象的理論轉化為可實踐的工程技能。它不僅是學習如何“點亮”一個微控製器的指南,更是理解如何構建一個健壯、高效、可維護的現代嵌入式係統的深度參考手冊。

著者信息

作者簡介

林有容


  臺灣大學機械工程學係畢業,常用的暱稱是 0xff07。

  除瞭玩貓之外,也是個筆記控。平常喜歡把學過的東西整理在 HackMD上,內容從在學時的必修課,到研討會的影片整理都有。
  
  如果想看看我最近在弄什麼,歡迎來我的 HackMD 個人頁麵看看。 hackmd.io/@0xff07。或者也可以由 0xff07@gmail.com 找到我。
 

圖書目錄

前言

CHAPTER 1 - Ftrace 與 eBPF
前言
實驗一:使用 Ftrace 追蹤核心內部
實驗二:使用 bpftrace 追蹤

CHAPTER 2 - 裝置樹與 Linux 裝置框架
前言
實驗三:核心的規格書小抄— 裝置樹
實驗四:Linux Driver Model (LDM)

CHAPTER 3 - GPIO
前言
實驗五:在裝置樹中描述 GPIO
實驗六:在核心模組中使用 GPIO

CHAPTER 4 - IRQ
實驗七:Hard IRQ 與 Soft IRQ
實驗八:以 GPIO 觸發 IRQ
實驗九:Threaded IRQ

CHAPTER 5 - I2C
實驗十:I2C — 由 User 到 Kernel

CHAPTER 6 - 與使用者交換資料
實驗十一:以字元驅動程式包裝 I2C 傳輸
實驗十二:IIO 子係統簡介
附錄 - 環境與開發工具安裝
附錄一:在樹莓派安裝 Ubuntu 20.04
附錄二:使用 cscope 與 ctags 搜尋原始程式碼


 

圖書序言

  • ISBN:9789864349173
  • 規格:平裝 / 384頁 / 17 x 23 x 1.92 cm / 普通級 / 全彩印刷 / 初版
  • 齣版地:颱灣

圖書試讀

用户评价

相关图书

本站所有內容均為互聯網搜尋引擎提供的公開搜索信息,本站不存儲任何數據與內容,任何內容與數據均與本站無關,如有需要請聯繫相關搜索引擎包括但不限於百度google,bing,sogou

© 2025 twbook.tinynews.org All Rights Reserved. 灣灣書站 版權所有