最佳拍檔完全體 -- Linux 和晶片開發強強出擊
劉盼盼 著
相關主題
商品描述
本書橫跨軟體與硬體兩個領域,強調系統性理解與模組化設計的實踐應用,對於驅動開發工程師、BSP 工程師、SoC 架構設計者及核心開發者皆提供可立即落地的技術框架。
★ Linux Kernel 6.6 深度解析
★ SoC 系統級晶片開發實戰
★ 處理程序管理與記憶體調度
★ 中斷控制器與裝置模型剖析
★ 裝置樹原理與驅動開發指南
★ 電源管理與 runtime PM 實作
★ 時鐘控制與 Clock Subsystem 探究
★ 高解析度計時器與時序同步
★ bootloader 啟動流程詳解(U-Boot/SPL/ATF)
★ SMP 負載平衡與行程排程機制
★ IOMUX 與 GPIO Pin 控制模組
★ 系統呼叫流程與核心態交互
★ 記憶體碎片化與夥伴系統管理
★ 心模組與 SoC 模組整合實戰
透過對 Linux 與 SoC 結構的雙向深入,本書不僅能提升底層功力,也能有效幫助從業者突破視野與技術瓶頸!
【章節介紹】
本書共分為十三章,內容涵蓋Linux核心與SoC開發的核心知識。
第一章 介紹記憶體管理,說明分頁機制、memblock初始化與分配器原理。
第二章 講解處理程序管理,包含程序建立、do_fork實作與SMP排程策略。
第三章 說明同步機制,包括自旋鎖、互斥鎖、RCU等常用方法。
第四章 聚焦檔案系統,介紹ext4與VFS運作方式。
第五章 探討系統呼叫,解析從使用者態到核心態的呼叫流程。
第六章 說明SoC啟動過程,包含SPL、ATF、U-Boot及Kernel初始化。
第七章 介紹裝置模型,講解匯流排、裝置與驅動的配對關係。
第八章 解析裝置樹語法與裝置匹配流程。
第九章 說明電源模組,涵蓋power domain與runtime PM設計。
第十章 講解時鐘模組,包含時鐘框架與驅動實作。
第十一章 介紹接腳模組,說明IOMUX控制與pinctrl驅動配置。
第十二章 分析時間模組與計時器架構。
第十三章 聚焦中斷模組,包含GIC硬體原理與IRQ處理邏輯,完整呈現Linux與SoC整合的技術全貌。
作者簡介
劉盼盼
有十多年專案工作經驗,包括手機、汽車、晶片,目前就職於晶片大廠,任Google開發者社區優秀講師,騰訊技術訓練營導師,科技公司合夥人,善於挖掘技術背後的本質。
目錄大綱
第1 章 記憶體管理
1.1 記憶體管理的機制
1.1.1 分段機制
1.1.2 分頁機制
1.2 CPU 存取記憶體的過程
1.2.1 PN/PFN/PT/PTE
1.2.2 MMU 中的TLB 和TTW
1.2.3 一級分頁表映射過程
1.2.4 為什麼使用多級分頁表
1.3 記憶體架構和記憶體模型
1.3.1 Linux 記憶體模型
1.3.2 Linux 記憶體映射
1.4 memblock 實體記憶體的初始化
1.4.1 early boot memory
1.4.2 memblock 的資料結構
1.4.3 memblock 的初始化
1.5 memblock 實體記憶體的映射
1.5.1 paging_init 函式
1.5.2 create_pgd_mapping 函式
1.6 實體記憶體的軟體劃分
1.6.1 劃分的資料結構
1.6.2 劃分的初始化
1.7 分頁幀分配器的實現
1.8 分頁幀分配器的快速分配之水位控制
1.8.1 水位的初始化
1.8.2 水位的判斷
1.9 分頁幀分配器的快速分配之夥伴系統
1.9.1 相關的資料結構
1.9.2 夥伴演算法申請分頁
1.9.3 夥伴演算法釋放分頁
1.10 分頁幀分配器的慢速分配之記憶體回收
1.10.1 資料結構
1.10.2 程式流程
1.11 分頁幀分配器的慢速分配之記憶體碎片規整
1.11.1 什麼是記憶體碎片化
1.11.2 規整碎片化分頁的演算
1.11.3 資料結構
1.11.4 規整的三種方式
第2 章 處理程序管理
2.1 核心對處理程序的描述
2.1.1 透過task_struct 描述處理程序
2.1.2 如何獲取當前處理程序
2.2 使用者態處理程序/ 執行緒的建立
2.2.1 fork 函式
2.2.2 vfork 函式
2.2.3 pthread_create 函式
2.2.4 三者之間的關係
2.3 do_fork 函式的實現
2.3.1 copy_process 函式
2.3.2 wake_up_new_task 函式
2.4 處理程序的排程
2.4.1 處理程序的分類
2.4.2 排程相關的資料結構
2.4.3 排程時刻
2.4.4 排程演算法
2.4.5 CFS 排程器
2.4.6 選擇下一個處理程序
2.4.7 處理程序上下文切換
2.5 多核心系統的負載平衡
2.5.1 多核架構
2.5.2 CPU 拓撲
2.5.3 排程域和排程組
2.5.4 何時做負載平衡
2.5.5 負載平衡的基本過程
第3 章 同步管理
3.1 原子操作
3.2 自旋鎖
3.3 訊號量
3.4 互斥鎖
3.5 RCU
第4 章 檔案系統
4.1 磁碟
4.1.1 磁碟類型
4.1.2 磁碟讀寫資料
4.2 磁碟的分區
4.3 磁碟上資料的分佈
4.4 查看檔案系統的檔案
4.4.1 檔案系統物件結構
4.4.2 查看分區資訊
4.4.3 查看超級區塊
4.4.4 查看區塊群組描述符號
4.5 ext4 檔案系統
4.5.1 磁碟版面配置
4.5.2 ext3 版面配置
4.5.3 ext4 中的inode
4.5.4 ext4 檔案定址
4.6 查詢檔案test 的過程
4.7 虛擬檔案系統
4.7.1 檔案系統類型(file_system_type)
4.7.2 超級區塊(super_block)
4.7.3 目錄項(dentry)
4.7.4 索引節點(inode)
4.7.5 檔案物件(file)
第5 章 系統呼叫
5.1 系統呼叫的定義
5.2 系統呼叫的處理流程
5.2.1 使用者態的處理
5.2.2 核心態的處理
第6 章 SoC 啟動
6.1 Uboot 啟動前的工作
6.1.1 連結指令稿和程式入口
6.1.2 鏡像容器
6.1.3 SPL 的啟動
6.1.4 ATF 的啟動
6.2 Uboot 的初始化過程
6.2.1 Uboot 的啟動
6.2.2 Uboot 驅動的初始化
6.2.3 Uboot 的互動原理
6.3 kernel 的初始化過程
6.3.1 核心執行的第一行程式
6.3.2 head.S 的執行過程
6.3.3 內核子系統啟動的全過程
第7 章 裝置模型
7.1 裝置模型的基石
7.1.1 裝置模型是什麼
7.1.2 裝置模型的實現
7.2 裝置模型的探究
7.2.1 匯流排、裝置和驅動模型
7.2.2 裝置樹的出現
7.2.3 各級裝置的展開
第8 章 裝置樹原理
8.1 裝置樹的基本用法
8.1.1 裝置樹的結構
8.1.2 裝置樹的語法
8.2 裝置樹的解析過程
8.3 裝置樹常用of 操作函式
8.3.1 查詢節點的of 函式
8.3.2 查詢父/ 子節點的of 函式
8.3.3 提取屬性值的of 函
8.3.4 其他常用的of 函式
第9 章 電源模組
9.1 電源子系統的power domain
9.1.1 power domain 的硬體實現
9.1.2 power domain 的軟體實現
9.2 電源子系統的runtime pm
9.2.1 runtime pm 在核心中的作用
9.2.2 runtime pm 的軟體流程
9.2.3 suspend/resume 的過程
第10 章 時鐘模組
10.1 時鐘控制器的硬體實現
10.1.1 Clock Source
10.1.2 Clock Root
10.1.3 Clock Gate
10.2 時鐘控制器的驅動實現
10.3 時鐘子系統的實現
10.3.1 時鐘子系統之Clock Provider
10.3.2 時鐘子系統之Clock Consumer
第11 章 接腳模組
11.1 IOMUX 控制器的工作原理
11.1.1 IOMUX 控制器的硬體實現
11.1.2 接腳的使用
11.2 pinctrl 驅動和client device 使用過程
11.2.1 pinctrl_desc 結構
11.2.2 IOMUX 控制器驅動初始化
11.2.3 client device 使用過程
第12 章 時間模組
12.1 計時器和計時器的初始化
12.1.1 local timer 的初始
12.1.2 system counter 的初始化
12.2 計時器的應用
12.2.1 高解析度計時器
12.2.2 低解析度計時器
12.2.3 sched_timer
第13 章 中斷模組
13.1 中斷控制器(GIC)硬體原理
13.1.1 GIC v3 中斷類別
13.1.2 GIC v3 組
13.1.3 中斷路由
13.1.4 中斷處理狀態機
13.1.5 中斷處理流程
13.2 中斷控制器的驅動實現
13.3 中斷的映射
13.3.1 資料結構
13.3.2 中斷控制器註冊irq_domain
13.3.3 外接裝置硬中斷和虛擬中斷編號的映射關係
13.4 中斷的註冊
13.5 中斷的處理
13.5.1 保護現場
13.5.2 中斷處理
13.5.3 恢復現場