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

嵌入式Linux驅動開發4412-實驗01內核開發基礎

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

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

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

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

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

如下圖所示。
在 binary 目錄中,有一些無源碼的驅動以二進制放到該文件夾,例如一些測試版本或者不愿意公布源碼,都可以將二進制文件放到這個目錄中。
在 drivers 目錄中,就是需要重點學習的部分,后面的實驗都是圍繞這一步進行的。
在 include 目錄中,通用的 Linux 頭文件都在該文件下。

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

如下圖所示,有內核編程的范例,實現安全性的代碼,聲卡設備驅動等
還有內核裁減配置工具目錄 tools,這一部分實現的功能是將.c 編譯成目標文件,連接合并成可運行的內核鏡像文件等。提供給大家的內核源碼一百多 M,最后編譯成的 zImage 只有不到 5M,這都是依靠這個工具來實現的,后面會有針對性的實驗來教大家如何使用編譯工具。
更多視頻內容:嗶哩嗶哩搜索北京迅為



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

本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
您需要登錄后才可以發表評論 登錄 | 立即注冊

廠商推薦

  • Microchip視頻專區
  • 利用SAM E54 Xplained Pro評估工具包演示CAN轉USB橋接器以及基于CAN的主機和自舉程序應用程序
  • 使用SAM-IoT Wx v2開發板演示AWS IoT Core應用程序
  • 使用Harmony3加速TCP/IP應用的開發培訓教程
  • 集成高級模擬外設的PIC18F-Q71家族介紹培訓教程
  • 貿澤電子(Mouser)專區

相關視頻

關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日日噜噜夜夜狠狠视频欧美人 | fc2久久 | 果冻传媒精东影业一二三区 | 亚洲网站免费看 | 中国一级毛片在线观看 | 日韩国产成人 | 在线观看日本 | 精品福利视频网 | 一级做a爱片特黄在线观看免费看 | 亚洲欧美在线一区二区 | 日本女人逼 | 手机看片国产在线 | 四虎国产精品永久地址49 | 97青青草| 欧洲精品码一区二区三区免费看 | 最近更新2019中文字幕 | 日韩欧美视频一区 | 欧美视频亚洲视频 | 亚洲自拍激情 | 美日韩视频 | 五月月色开心婷婷久久合 | 视频一区在线播放 | 日本a在线免费观看 | 亚洲精品视频在线看 | 在线啪视频 | 久久国产高清波多野结衣 | 日韩小视频在线播放 | 欧美日本韩国一区二区 | 色噜噜狠狠色综合久 | 男女网站免费 | 久草综合在线观看 | 亚洲spank男男实践网站 | 欧洲女人性行为免费视频 | 欧美日韩一 | 一区二区中文字幕 | 99re6精品| 日本韩国高清 | 日本免费高清视频 | 国产精品久久久久免费视频 | 亚洲精品欧美综合四区 | 非洲黑人毛片 |