特價 -20%

最佳拍檔完全體- Linux和晶片開發強強出擊 DM2572

原始價格:NT$890。目前價格:NT$712。

出版商 深智數位股份有限公司
出版日期 2025年09月19日
語言 繁體中文
頁數 416
ISBN 9786267757321

已售完

貨號: DM2572 Category:

描述

內容簡介

本書橫跨軟體與硬體兩個領域,強調系統性理解與模組化設計的實踐應用,對於驅動開發工程師、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等常用方法。

第四章 聚焦檔案系統,介紹ext4VFS運作方式。

第五章 探討系統呼叫,解析從使用者態核心態的呼叫流程。

第六章 說明SoC啟動過程,包含SPLATFU-BootKernel初始化

第七章 介紹裝置模型,講解匯流排、裝置驅動的配對關係。

第八章 解析裝置樹語法裝置匹配流程

第九章 說明電源模組,涵蓋power domainruntime PM設計。

第十章 講解時鐘模組,包含時鐘框架驅動實作

第十一章 介紹接腳模組,說明IOMUX控制pinctrl驅動配置

第十二章 分析時間模組與計時器架構

第十三章 聚焦中斷模組,包含GIC硬體原理IRQ處理邏輯,完整呈現LinuxSoC整合的技術全貌。

 

作者簡介

劉盼盼

有十多年專案工作經驗,包括手機、汽車、晶片,目前就職於晶片大廠,任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 恢復現場

 

作業系統與SoC(System on a Chip,系統級晶片)之間存在著緊密的聯繫。

SoC 是一種高度整合的晶片,它將多個功能模組(如CPU、GPU、NPU、記憶體等)整合在一個晶片上,以實現更高效的性能和更低的功耗。作業系統則負責管理這些硬體資源,確保它們得到合理的分配和使用。如果把晶片比作一個人的心臟的話,作業系統無疑是一個人的靈魂。

 

勢是未來發展的大勢。人工智慧、機器人、晶片自主、智慧駕駛等新一代

資訊技術是當代智慧科技的主要表現。在這個百年未有之大變局的歷史機遇

中,電腦底層教育的作用不言而喻,它是現代智慧科技發展的核心支柱。電腦底層的技術包含晶片設計、作業系統、編譯器、數學函式庫等內容。目前,中美競爭的加劇使高端晶片和作業系統設計成為眾所皆知的「鎖喉」技術,國家開始重視底層技術,越來越多的企業投入晶片和作業系統的研發,比如華為的海思晶片和萬物互聯導向的鴻蒙作業系統。但對開發者而言,一直以來,晶片和作業系統是兩個不同的領域。晶片從業者更多的是硬體工程師,作業系統從業者更多的是軟體工程師,在這之間還有嵌入式工程師,他們彼此合作,又各自安好。可是作業系統和晶片開發彼此是緊密相連、相互依存的,晶片提供資料處理等核心能力,作業系統調配晶片架構來驅動硬體工作。晶片的性能影響作業系統執行的流暢度,作業系統合理地調配資源也能挖掘晶片的潛在性能。

 

道是事物背後的規律。回顧歷史,每一次智慧終端機的發展,都會帶來翻

天覆地的變化。從PC 時代的個人電腦,開啟了數位化辦公與學習的先河;到網際網路時代的WWW,將全球資訊緊密相連,徹底改變了資訊傳播的方式;再到行動網際網路時代的智慧型手機,讓資訊獲取與服務享受變得無處不在,極大提升了生活與工作的便捷性;直至現在的人工智慧時代,以智慧語音幫手、自動駕駛汽車等為代表的產品,正逐步重塑生產方式、服務模式乃至社會結構,引領世界邁向一個更加智慧化、自動化的未來。我們正在進入萬物智慧互聯的新世界,萬物智慧互聯的世界對傳統的晶片和作業系統提出了新的需求。順應時代發展,晶片和作業系統都出現了相應的革命,比如OpenAI 的ChatGPT、恩智浦新研究的跨界處理器、Google 新研究的TPU 和Fuchsia、華為新研究的鴻蒙等,它們都是為萬物智慧互聯新時代而生的新架構。

 

術是操作層面的方法。那麼,如何學習底層技術?作業系統包括的模組很

多,包含記憶體管理、處理程序管理、檔案系統、同步機制等內容,晶片開發最基本的內容包括電源模組、時鐘模組、時間模組、中斷模組、接腳模組等,不同模組之間又是彼此連結的。想要精通這些模組,沒有好的學習方法,基本無從下手。雖然「Talk is cheap. Show me the code.」,但除非你本身就是做作業系統或晶片開發相關工作的,否則我不推薦你把相關原始程式通讀一遍,因為首先你在工作時間已經夠辛苦,工作之餘並沒有大量的時間去通讀,其次即使你啃完了程式,手頭的工作和底層關係也不大,沒有工作的實踐,過段時間還是會忘掉。

 

打通作業系統和晶片開發的過程,實際上是一個跨學科、跨領域的合作過

程,需要作業系統開發人員和晶片設計工程師的緊密合作。儘管他們的工作背景和專長不同,但他們的目標是一致的,那就是提供高效、穩定、功能豐富的硬體和軟體解決方案。市場上有很多晶片開發和作業系統的書籍,但似乎都是針對純硬體或純軟體的內容,鮮有將二者相容的,以至於作業系統和晶片開發從業者很難再次提升自己的內功。本書重點在於打通作業系統和晶片開發,讓硬體工作者有機會走進軟體的大門,讓軟體工作者有機會理解底層的本質。總之,如果你有志於修煉底層內功,那麼本書將是你最好的選擇。

 

額外資訊

出版商

深智數位股份有限公司

出版日期

2025年09月19日

語言

繁體中文

頁數

416

ISBN

9786267757321