国产精品久久久久影院,成人午夜福利视频,国产精品久久久久高潮,国产精品 欧美 亚洲 制服,国产精品白浆无码流出

進(jìn)步一點(diǎn)點(diǎn)丨迅為4412開發(fā)板Linux內(nèi)核開發(fā)基礎(chǔ)

發(fā)布者:快樂旋律最新更新時間:2025-04-09 來源: cnblogs關(guān)鍵字:4412開發(fā)板  Linux內(nèi)核  開發(fā)基礎(chǔ) 手機(jī)看文章 掃描二維碼
隨時隨地手機(jī)看文章

1 Linux 體系結(jié)構(gòu)
如下圖所示,Linux 體系結(jié)構(gòu),從大的方面可以分為用戶空間(User Space)和內(nèi)核空間(Kernel Space)。

用戶空間中包含了 C 庫,用戶的應(yīng)用程序。在某些體系結(jié)構(gòu)圖中還包含了 shell,當(dāng)然 shell 腳本也是Linux 體系中不可缺少的一部分。
內(nèi)核空間包括硬件平臺、平臺依賴代碼、內(nèi)核、系統(tǒng)調(diào)用接口。
在任何一個現(xiàn)代操作系統(tǒng)中,都是分層的。為什么需要分層呢?
從程序員的角度分析,將 linux 底層和和應(yīng)用分開,將 linux 底層和應(yīng)用分開,做應(yīng)用的做應(yīng)用,做底層的做底層,各干各的。經(jīng)濟(jì)學(xué)的基本原理是,分工產(chǎn)生效率。
從安全性的角度分析,是為了保護(hù)內(nèi)核。現(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) 未定義指令異常。
如果任何一個上層應(yīng)用都可以調(diào)用都可以調(diào)用寄存器,那樣肯定是無法穩(wěn)定執(zhí)行的。而且因?yàn)槌霈F(xiàn)了這個問題,出現(xiàn)了一個新的學(xué)科“現(xiàn)代操作系統(tǒng)”,如果大家感興趣可以看一下“現(xiàn)代操作系統(tǒng)”相關(guān)文章或者書籍。
以 X86 為例:X86 實(shí)現(xiàn)了 4 個不同級別的權(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)用”和“硬件中斷”來完成用戶空間到內(nèi)核空間的轉(zhuǎn)移。

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

Device Drivers 設(shè)備驅(qū)動,這一部分就是需要學(xué)習(xí)和掌握的。Linux 內(nèi)核中有大量的代碼在設(shè)備驅(qū)動程序部分,用于控制特定的硬件設(shè)備。
Linux 驅(qū)動一般分為網(wǎng)絡(luò)設(shè)備、塊設(shè)備、字符設(shè)備、雜項設(shè)備,需要編寫的只有字符設(shè)備,雜項設(shè)備是不容易歸類的一種驅(qū)動,雜項設(shè)備和字符設(shè)備有很多重合的地方。
網(wǎng)絡(luò)協(xié)議棧,Linux 內(nèi)核中提供了豐富的網(wǎng)絡(luò)協(xié)議實(shí)現(xiàn)。

3 Linux 內(nèi)核源碼目錄結(jié)構(gòu)
Linux 內(nèi)核源碼采用樹形結(jié)構(gòu)。功能相關(guān)的文件放到不同的子目錄下面,使程序更具有可讀行。使用Source Insight 打開源碼,如下圖所示,可以看到源碼是樹形結(jié)構(gòu)。

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

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

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

如下圖所示,有內(nèi)核編程的范例,實(shí)現(xiàn)安全性的代碼,聲卡設(shè)備驅(qū)動等還有內(nèi)核裁減配置工具目錄 tools,這一部分實(shí)現(xiàn)的功能是將.c 編譯成目標(biāo)文件,連接合并成可運(yùn)行的內(nèi)核鏡像文件等。提供給大家的內(nèi)核源碼一百多 M,最后編譯成的 zImage 只有不到 5M,這都是依靠這個工具來實(shí)現(xiàn)的,后面會有針對性的實(shí)驗(yàn)來教大家如何使用編譯工具。

關(guān)鍵字:4412開發(fā)板  Linux內(nèi)核  開發(fā)基礎(chǔ) 引用地址:進(jìn)步一點(diǎn)點(diǎn)丨迅為4412開發(fā)板Linux內(nèi)核開發(fā)基礎(chǔ)

上一篇:每天學(xué)習(xí)一點(diǎn)丨借助U盤或TF卡拷貝程序到迅為IMX6ULL開發(fā)板上(二)
下一篇:迅為-IMX6Q開發(fā)板Buildroot文件系統(tǒng)nfs測試

推薦閱讀最新更新時間:2025-06-14 17:15

4412開發(fā)板一鍵燒寫QT程序到開發(fā)板
之前我們寫好一個程序,都是先交叉編譯完,然后在通過 nfs/tftp 或者其他的方法拷貝到開發(fā)板,然后在手動執(zhí)行,如果我們調(diào)試程序很頻繁,那我們每次都重新拷貝到開發(fā)板,那這樣就太麻煩了,有沒有方便一點(diǎn)的辦法呢,這個就是接下來我們要介紹的一種方法,一鍵燒寫 QT 程序到開發(fā)板,我們只需要在qtcreater 上點(diǎn)擊一下編譯,那么 QT 程序會自動到開發(fā)板上來運(yùn)行,是不是非常的方便? 85.1 在開發(fā)板上移植 ssh 要想實(shí)現(xiàn)一鍵燒寫,那么我們必須就先要在開發(fā)板上移植一個 ssh,本次實(shí)驗(yàn)我們使用的是 busybox 文件系統(tǒng),這個文件系統(tǒng)并不支持 ssh,所以我們要先移植一個上去。接下來,我們一起來移植一下。 移植環(huán)境: 編譯器保持
[單片機(jī)]
<font color='red'>迅</font><font color='red'>為</font><font color='red'>4412</font><font color='red'>開發(fā)板</font>一鍵燒寫QT程序到<font color='red'>開發(fā)板</font>
IMX6ULL開發(fā)板Qt for Android搭建開發(fā)環(huán)境
搭建開發(fā)環(huán)境 1.安裝 JDK,選擇默認(rèn)路徑,一路點(diǎn)擊下一步即可。 安裝完成后進(jìn)入相應(yīng)的路徑查看: 需要注意的問題: (1)建議使用我們提供的版本,如果自己下載可能會出現(xiàn)問題。 (2)建議大家安裝到 C 盤下面,不要有中文路徑。 2.安裝 sdk 和 ndk,直接解壓即可,解壓的路徑不要有中文路徑。我這里是解壓到了 JDK 的安裝路徑, 如果 C 盤空間不夠可以解壓到其他盤,但要記住位置,下面需要用到。 3.配置環(huán)境 打開 QTCreator,打開工具- 選項,選擇如下圖內(nèi)容: 設(shè)置 JDK,SDK.NDK 的路徑,如下圖: 設(shè)置完成以后,我們點(diǎn)擊 apply 和 ok 即可。
[單片機(jī)]
<font color='red'>迅</font><font color='red'>為</font>IMX6ULL<font color='red'>開發(fā)板</font>Qt for Android搭建<font color='red'>開發(fā)</font>環(huán)境
4418開發(fā)板Linux系統(tǒng)TFTP傳輸文件
TFTP(Trivial File Transfer Protocol,簡單文件傳輸協(xié)議),是一個基于 UDP 協(xié)議實(shí)現(xiàn)的用于在客戶機(jī)和服務(wù)器之間進(jìn)行簡單文件傳輸?shù)膮f(xié)議,適合于開銷不大、不復(fù)雜的應(yīng)用場合。TFTP 協(xié)議專門為小文件傳輸 而設(shè)計,只能從服務(wù)器上獲取文件,或者向服務(wù)器寫入文件,不能列出目錄,也不能進(jìn)行認(rèn)證。根據(jù)上面關(guān)于 TFTP 的介紹,實(shí)現(xiàn) TFTP 需要搭建一個 TFTP 的服務(wù)器,iTOP-4418 開發(fā)板當(dāng)做客戶端。 70.1 搭建服務(wù)器 打開虛擬機(jī) Ubuntu 終端,進(jìn)入 root 用戶,輸入“sudo apt-get install xinetd”命令安裝 xinetd,安裝完成如下圖。(如果報錯,注意檢
[單片機(jī)]
<font color='red'>迅</font><font color='red'>為</font>4418<font color='red'>開發(fā)板</font>Linux系統(tǒng)TFTP傳輸文件
iTOP-4412開發(fā)板如何配置可以支持 AVIN 的攝像頭
內(nèi)核目錄下執(zhí)行命令“make menuconfig” ,如下圖: 將會打開內(nèi)核的配置界面,如下圖: 選擇“Device Drivers”選項,進(jìn)入“Device Drivers”配置界面,如下圖: 選擇“Multimedia support”選項,進(jìn)入“Multimedia support”配置界面,如下圖: 選擇“Video capture adapters”選項,進(jìn)入“Video capture adapters”配置界面, 如下圖: 選擇“Encoders,decoders, sensors and othe
[單片機(jī)]
iTOP-<font color='red'>4412</font><font color='red'>開發(fā)板</font>如何配置可以支持 AVIN 的攝像頭
圍繞單處理器開發(fā)智能HEV/EV基礎(chǔ)設(shè)施充電器
引言   隨著路上行駛的電動車比例的增加,對于充電站的需求也隨之出現(xiàn)爆炸式的增長。盡管在一些飯店和購物中心有許多充電站供免費(fèi)使用,但是城市和農(nóng)村地區(qū)對“付費(fèi)充電站”的需求也日益增長。這些充電站可讓電動車實(shí)現(xiàn)更遠(yuǎn)的行駛距離。這就需要更高的技術(shù)來實(shí)現(xiàn)系統(tǒng)內(nèi)通信,包括實(shí)現(xiàn)移動支付的近場通信(NFC)技術(shù),完成支付處理的Wi-Fi、以太網(wǎng)和電力線通信(PLC)技術(shù),并需要運(yùn)用先進(jìn)的電表和輔助控制功能。C2000? C28x數(shù)字信號處理器(DSP)+ARM? Cortex?-M3器件出現(xiàn)以后,現(xiàn)在我們可以把所有這些功能集成到一顆單獨(dú)的低成本處理器中。    集成通信   今天,越來越多的人們開始使用電動車,不管是摩托車、特種交通工具還
[模擬電子]
圍繞單處理器<font color='red'>開發(fā)</font>智能HEV/EV<font color='red'>基礎(chǔ)</font>設(shè)施充電器
基于tiny4412Linux內(nèi)核移植 -- eMMC驅(qū)動移植(六)
平臺簡介 開發(fā)板:tiny4412ADK + S700 + 4GB Flash 要移植的內(nèi)核版本:Linux-4.4.0 (支持device tree) u-boot版本:友善之臂自帶的 U-Boot 2010.12 (為支持uImage啟動,做了少許改動) busybox版本:busybox 1.25 eMMC:KLMxGxFE3x-x00x 交叉編譯工具鏈: arm-none-linux-gnueabi-gcc (gcc version 4.8.3 20140320 (prerelease) (Sourcery CodeBench Lite 2014.05-29)) 概述 eMMC驅(qū)動在內(nèi)核中也已經(jīng)支持好了,代碼在:
[單片機(jī)]
基于tiny<font color='red'>4412</font>的<font color='red'>Linux內(nèi)核</font>移植 -- eMMC驅(qū)動移植(六)
arm驅(qū)動Linux內(nèi)核開發(fā)之阻塞非阻塞IO輪詢操作
《 Linux內(nèi)核開發(fā)之阻塞非阻塞IO----輪詢操作》涉及內(nèi)核驅(qū)動函數(shù)二個,內(nèi)核結(jié)構(gòu)體零個,分析了內(nèi)核驅(qū)動函數(shù)二個;可參考的相關(guān)應(yīng)用程序模板或內(nèi)核驅(qū)動模板二個,可參考的相關(guān)應(yīng)用程序模板或內(nèi)核驅(qū)動一個 一、概念:Poll是非阻塞IO----輪詢操作 非阻塞 I/O 的應(yīng)用程序常常使用 poll, select, 和 epoll 系統(tǒng)調(diào)用. poll, select 和 epoll 本質(zhì)上有相同的功能: 每個允許一個進(jìn)程來決定它是否可讀或者寫一個或多個文件而不阻塞. Tip:select()和poll(),epoll查詢是否可對設(shè)備進(jìn)行無阻塞的訪問,這幾個系統(tǒng)調(diào)用最終又會引發(fā)設(shè)備驅(qū)動中的poll()函數(shù)被執(zhí)行 PS:看到這感覺暈了
[單片機(jī)]
小廣播
設(shè)計資源 培訓(xùn) 開發(fā)板 精華推薦

最新單片機(jī)文章

 
EEWorld訂閱號

 
EEWorld服務(wù)號

 
汽車開發(fā)圈

 
機(jī)器人開發(fā)圈

電子工程世界版權(quán)所有 京ICP證060456號 京ICP備10001474號-1 電信業(yè)務(wù)審批[2006]字第258號函 京公網(wǎng)安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved