国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

嵌入式Linux驅(qū)動(dòng)開發(fā)4412-實(shí)驗(yàn)01內(nèi)核開發(fā)基礎(chǔ)

發(fā)布時(shí)間:2020-12-1 10:53    發(fā)布者:就是塔塔
實(shí)驗(yàn) 01 內(nèi)核開發(fā)基礎(chǔ)-基于迅為4412開發(fā)板
1.1 本章導(dǎo)讀
本實(shí)驗(yàn)將帶您學(xué)習(xí)一遍 Linux 的框架和源碼目錄結(jié)構(gòu)。
從任何地方拿到的 Linux 源碼,都有幾百 M 大小,包含上萬(wàn)個(gè)文件。
這么多的文件!那么問題來(lái)了,應(yīng)該從什么地方入手呢?
哪些內(nèi)容應(yīng)該“深入研究”?
哪些內(nèi)容應(yīng)該“驚鴻一瞥”?
哪些內(nèi)容應(yīng)該“束之高閣”?
本期實(shí)驗(yàn)“內(nèi)核開發(fā)基礎(chǔ)”,帶大家快速梳理一遍,把和學(xué)習(xí)無(wú)關(guān)的內(nèi)容剔除掉。
1.1.1 工具
1.1.1.1 硬件工具
PC 機(jī)一臺(tái)
1.1.1.2 軟件工具
軟件 Source Insight
Linux 源碼“iTop4412_Kernel_3.0_xxx”(在光盤目錄“/Android 源碼”文件夾下,xxx表示日期)
1.1.2 預(yù)備課程
視頻教程“01-燒寫、編譯以及基礎(chǔ)知識(shí)視頻”→“實(shí)驗(yàn) 12-使用 Source Insight 加載和閱讀內(nèi)核源碼”
使用手冊(cè)“3.5 Source Insight 的安裝和使用”
1.1.3 視頻資源
本節(jié)配套視頻為“視頻 01_內(nèi)核開發(fā)基礎(chǔ)”
1.2 學(xué)習(xí)目標(biāo)
本章需要學(xué)習(xí)以下內(nèi)容:
理解 Linux 體系結(jié)構(gòu)
了解 Linux 內(nèi)核結(jié)構(gòu)
了解 Linux 內(nèi)核源碼目錄結(jié)構(gòu)
了解學(xué)習(xí) Linux 的大方向→驅(qū)動(dòng)
1.3 Linux 體系結(jié)構(gòu)
如下圖所示,Linux 體系結(jié)構(gòu),從大的方面可以分為用戶空間(User Space)和內(nèi)核空間(Kernel Space)。

用戶空間中包含了 C 庫(kù),用戶的應(yīng)用程序。在某些體系結(jié)構(gòu)圖中還包含了 shell,當(dāng)然shell 腳本也是 Linux 體系中不可缺少的一部分。
內(nèi)核空間包括硬件平臺(tái)、平臺(tái)依賴代碼、內(nèi)核、系統(tǒng)調(diào)用接口。
在任何一個(gè)現(xiàn)代操作系統(tǒng)中,都是分層的。為什么需要分層呢?
從程序員的角度分析,將 linux 底層和和應(yīng)用分開,將 linux 底層和應(yīng)用分開,做應(yīng)用的做應(yīng)用,做底層的做底層,各干各的。經(jīng)濟(jì)學(xué)的基本原理是,分工產(chǎn)生效率。
從安全性的角度分析,是為了保護(hù)內(nèi)核,F(xiàn)代 CPU 通常都實(shí)現(xiàn)了不同的工作模式。
ARM 為例:ARM 實(shí)現(xiàn)了 7 種工作模式,不同模式下 CPU 可以執(zhí)行的指令或者訪問的寄存器不同: (1)用戶模式 usr (2)系統(tǒng)模式 sys(3)管理模式 svc(4)快速中斷 fiq(5)外部中斷irq(6)數(shù)據(jù)訪問終止 abt(7)未定義指令異常。如果任何一個(gè)上層應(yīng)用都可以調(diào)用都可以調(diào)用寄存器,那樣肯定是無(wú)法穩(wěn)定執(zhí)行的。而且因?yàn)槌霈F(xiàn)了這個(gè)問題,出現(xiàn)了一個(gè)新的學(xué)科“現(xiàn)代操作系統(tǒng)”,如果大家感興趣可以看一下“現(xiàn)代操作系統(tǒng)”相關(guān)文章或者書籍。
以 X86 為例:X86 實(shí)現(xiàn)了 4 個(gè)不同級(jí)別的權(quán)限,Ring0—Ring3 ;Ring0 下可以執(zhí)行特權(quán)指令,可以訪問 IO 設(shè)備;Ring3 則有很多的限制
如果分析一下 Android 的,這方面做的更加“喪心病狂”,Android 所有的 APK 應(yīng)用程序,都是在 Java 虛擬機(jī)上面運(yùn)行,應(yīng)用程序更加遠(yuǎn)離底層。
另外,用戶空間和內(nèi)核空間是程序執(zhí)行的兩種不同狀態(tài),可以通過“系統(tǒng)調(diào)用”和“硬件中斷”來(lái)完成用戶空間到內(nèi)核空間的轉(zhuǎn)移。
1.4 Linux 內(nèi)核結(jié)構(gòu)
這一節(jié),分析一下內(nèi)核結(jié)構(gòu)。
如下圖所示,是 Linux 內(nèi)核結(jié)構(gòu)圖。

SCI 層(System Call Interface),這一層是給應(yīng)用用戶空間提供一套標(biāo)準(zhǔn)的系統(tǒng)調(diào)用函數(shù)來(lái)訪問 Linux。前面分析 Linux 體系結(jié)構(gòu)的時(shí)候,介紹過任何一類現(xiàn)代操作系統(tǒng)都不會(huì)允許上層應(yīng)用直接訪問底層,在 Linux 中,內(nèi)核提供了一套標(biāo)準(zhǔn)接口,上層應(yīng)用就可以通過這一套標(biāo)準(zhǔn)接口來(lái)訪問底層。
PM(Procees Management),這一部分包括具體創(chuàng)建創(chuàng)建進(jìn)程(fork、exec),停止進(jìn)程(kill、exit),并控制他們之間的通信(signal 等)。還包括進(jìn)程調(diào)度,控制活動(dòng)進(jìn)程如何共享 CPU。這一部分是 Linux 已經(jīng)做好的,在寫驅(qū)動(dòng)的時(shí)候,只需要調(diào)用對(duì)應(yīng)的函數(shù)即可實(shí)現(xiàn)這些功能,例如創(chuàng)建進(jìn)程、進(jìn)程通信等等。
MM(Memory Management),內(nèi)存管理的主要作用是控制多個(gè)進(jìn)程安全的共享內(nèi)存區(qū)域。
VFS(Virtual File Systems),虛擬文件系統(tǒng),隱藏各種文件系統(tǒng)的具體細(xì)節(jié),為文件操作提供統(tǒng)一的接口。在 Linux 中“一切皆文件”,這些文件就是通過 VFS 來(lái)實(shí)現(xiàn)的。Linux 提供了一個(gè)大的通用模型,使這個(gè)模型包含了所有文件系統(tǒng)功能的集合。如下圖所示,是一個(gè)虛擬文件系統(tǒng)的結(jié)構(gòu)圖。

Device Drivers 設(shè)備驅(qū)動(dòng),這一部分就是需要學(xué)習(xí)和掌握的。Linux 內(nèi)核中有大量的代碼在設(shè)備驅(qū)動(dòng)程序部分,用于控制特定的硬件設(shè)備。
Linux 驅(qū)動(dòng)一般分為網(wǎng)絡(luò)設(shè)備、塊設(shè)備、字符設(shè)備、雜項(xiàng)設(shè)備,需要編寫的只有字符設(shè)備,雜項(xiàng)設(shè)備是不容易歸類的一種驅(qū)動(dòng),雜項(xiàng)設(shè)備和字符設(shè)備有很多重合的地方。
網(wǎng)絡(luò)協(xié)議棧,Linux 內(nèi)核中提供了豐富的網(wǎng)絡(luò)協(xié)議實(shí)現(xiàn)。
1.5 Linux 內(nèi)核源碼目錄結(jié)構(gòu)
Linux 內(nèi)核源碼采用樹形結(jié)構(gòu)。功能相關(guān)的文件放到不同的子目錄下面,使程序更具有可讀行。
使用 Source Insight 打開源碼,如下圖所示,可以看到源碼是樹形結(jié)構(gòu)。

下面來(lái)介紹每一個(gè)目錄的作用。
arch 目錄是平臺(tái)目錄。處理器原廠提供一套 Linux 內(nèi)核的源碼,那么在這個(gè)目錄下都有一套針對(duì)具體處理器 CPU 的子目錄。每個(gè) CPU 的子目錄,又進(jìn)一步分解為 boot,mm,kernel 等子目錄,分別控制系統(tǒng)引導(dǎo),內(nèi)存管理,系統(tǒng)調(diào)用,動(dòng)態(tài)調(diào)頻,主頻率設(shè)置部分等。
在 arch 目錄中有關(guān)鍵的平臺(tái)文件。任何一款支持 Linux 的處理器,都有一部分內(nèi)核代碼是針對(duì)特定的處理器來(lái)提供的,具體的實(shí)現(xiàn)就是通過平臺(tái)文件。
迅為 iTOP-4412 的平臺(tái)文件,是 arch→arm→mach-exynos→mach-itop4412.c。
arch→arm→boot 目錄,默認(rèn)編譯生成的內(nèi)核鏡像是在這個(gè)目錄下。
在 arch→arm→kernel 目錄中,有針對(duì)具體 CPU 處理器的代碼,有相關(guān)內(nèi)核特性實(shí)現(xiàn)方式,如信號(hào)處理等。這一部分當(dāng)然是芯片廠商做好了,4412 的這部分就是三星已經(jīng)做好的部分。
在 arch→arm→lib 目錄中,有一些和硬件相關(guān)庫(kù)函數(shù),后面學(xué)習(xí)驅(qū)動(dòng)的時(shí)候會(huì)使用到。
在 arch→arm→tools 目錄中,包含了生成鏡像的工具。

如下圖所示。
在 binary 目錄中,有一些無(wú)源碼的驅(qū)動(dòng)以二進(jìn)制放到該文件夾,例如一些測(cè)試版本或者不愿意公布源碼,都可以將二進(jìn)制文件放到這個(gè)目錄中。
在 drivers 目錄中,就是需要重點(diǎn)學(xué)習(xí)的部分,后面的實(shí)驗(yàn)都是圍繞這一步進(jìn)行的。
在 include 目錄中,通用的 Linux 頭文件都在該文件下。

如下圖所示,部分目錄如下。下面的這些目錄,幾乎不需要去動(dòng)其中任何一個(gè)文件。

如下圖所示,有內(nèi)核編程的范例,實(shí)現(xiàn)安全性的代碼,聲卡設(shè)備驅(qū)動(dòng)等
還有內(nèi)核裁減配置工具目錄 tools,這一部分實(shí)現(xiàn)的功能是將.c 編譯成目標(biāo)文件,連接合并成可運(yùn)行的內(nèi)核鏡像文件等。提供給大家的內(nèi)核源碼一百多 M,最后編譯成的 zImage 只有不到 5M,這都是依靠這個(gè)工具來(lái)實(shí)現(xiàn)的,后面會(huì)有針對(duì)性的實(shí)驗(yàn)來(lái)教大家如何使用編譯工具。
更多視頻內(nèi)容:?jiǎn)袅▎袅ㄋ阉鞅本┭笧?br />


本文地址:http://m.qingdxww.cn/thread-749311-1-1.html     【打印本頁(yè)】

本站部分文章為轉(zhuǎn)載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀點(diǎn)和對(duì)其真實(shí)性負(fù)責(zé);文章版權(quán)歸原作者及原出處所有,如涉及作品內(nèi)容、版權(quán)和其它問題,我們將根據(jù)著作權(quán)人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評(píng)論 登錄 | 立即注冊(cè)

廠商推薦

  • Microchip視頻專區(qū)
  • 想要避免發(fā)生災(zāi)難,就用MPLAB SiC電源仿真器!
  • 我們是Microchip
  • 你仿真過嗎?使用免費(fèi)的MPLAB Mindi模擬仿真器降低設(shè)計(jì)風(fēng)險(xiǎn)
  • 深度體驗(yàn)Microchip自動(dòng)輔助駕駛應(yīng)用方案——2025巡展開啟報(bào)名!
  • 貿(mào)澤電子(Mouser)專區(qū)

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權(quán)所有   京ICP備16069177號(hào) | 京公網(wǎng)安備11010502021702
快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产色产综合色产在线观看视频 | 插菊网 | 狠狠色丁香九九婷婷综合五月 | 四虎影视久久 | 一级毛片免费视频观看 | 青青91| 精品国产日韩亚洲一区二区 | 色综合久久综合欧美综合网 | 精品在线观看视频 | 日本中文视频 | 靠逼视频网站 | 欧美tv| 国产欧美日韩在线播放 | 中文字幕日本一区久久 | 欧美日韩高清在线观看 | 成人精品视频在线观看 | 亚洲swag精品自拍一区 | 香蕉高清免费永久在线视频 | 久久se精品动漫一区二区三区 | 久久九九视频 | 日本高清视频成人网www | 999精品视频| 四虎在线免费观看视频 | 久草中文网| 成人久久久久 | 免费看va | 天然素人在线观看 | 一级一片免费看 | 日韩欧美国产中文字幕 | www日本在线观看 | 99色图 | 99久久精品男女性高爱 | 天堂久久久久久中文字幕 | 免费人成网 | 99在线在线视频免费视频观看 | 黄色一级片黄色一级片 | 九七在线 | 日韩三级一区二区 | 视频在线一区 | 伊人网色 | 黄又色的视频 |