日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > > 充電吧
[導讀]Linux-2.6.38.8 移植參考 ? 最近學習Linux有點迷茫,剛學會了字符驅動的編寫但是卻不知道下一步該干些什么,想學習Linux內核裁剪,但是苦于找不到資料,開發(fā)板自帶的是Linux3.0

Linux-2.6.38.8 移植參考

?

最近學習Linux有點迷茫,剛學會了字符驅動的編寫但是卻不知道下一步該干些什么,想學習Linux內核裁剪,但是苦于找不到資料,開發(fā)板自帶的是Linux3.01,雖然我會編譯內核卻完全不知道如何去裁剪,配置都是開發(fā)板自帶的,我想自己學習裁剪一個Linux2.6的內核,因為現在的學習資料大部分都是以2.6的內核為例的,因此為了學習方便,我想移植一個Linux2.6的內核,因此從官網下載了一個Linux2.6.38.8版本的Linux源代碼。


后面會持續(xù)更新...

?

?

1.進入Linux2.6的源代碼根目錄。

?

Linux源碼目錄結構詳解

?

Arch

目錄包括了所有和體系結構相關的核心代碼。它下面的每一個子目錄都代表一種Linux支持的體系結構,例如i386就是Intel?CPU及與之相兼容體系結構的子目錄。PC機一般都基于此目錄。

Copying

目錄下是GPL版權申明。對具有GPL版權的源代碼改動而形成的程序,或使用GPL工具產生的程序,具有使用GPL發(fā)表的義務,如公開源代碼。

Credits

目錄下是光榮榜。對Linux做出過很大貢獻的一些人的信息。

Documentation

目錄下是一些文檔,沒有內核代碼,可惜都是English的,是對每個目錄作用的具體說明。

Drivers

目錄中是系統(tǒng)中所有的設備驅動程序。它又進一步劃分成幾類設備驅動,每一種有對應的子目錄,如聲卡的驅動對應于drivers/sound;?block?下為塊設備驅動程序,比如ide(ide.c)。如果你希望查看所有可能包含文件系統(tǒng)的設備是如何初始化的,你可以看drivers/block/genhd.c中的device_setup()。它不僅初始化硬盤,也初始化,因為安裝nfs文件系統(tǒng)的時候需要網絡其他:?如,?Lib放置核心的庫代碼;?Net,核心與網絡相關的代碼;?Ipc,這個目錄包含核心的進程間通訊的代碼;?Fs,所有的文件系統(tǒng)代碼和各種類型的文件操作代碼,它的每一個子目錄支持一個文件系統(tǒng),例如fat和ext2。

Fs

目錄存放Linux支持的文件系統(tǒng)代碼和各種類型的文件操作代碼。每一個子目錄支持一個文件系統(tǒng),如ext3文件系統(tǒng)對應的就是ext3子目錄。

Include

目錄包括編譯核心所需要的大部分頭文件,例如與平臺無關的頭文件在include/linux子目錄下,與?intel?cpu相關的頭文件在include/asm-i386子目錄下,而include/scsi目錄則是有關scsi設備的頭文件目錄。

Init

目錄包含核心的初始化代碼(不是系統(tǒng)的引導代碼),有main.c和Version.c兩個文件。這是研究核心如何工作的好起點。

Ipc

目錄包含了核心進程間的通信代碼。

Kernel

內核管理的核心代碼,此目錄下的文件實現了大多數linux系統(tǒng)的內核函數,其中最重要的文件當屬sched.c;同時與處理器結構相關代碼都放在arch/*/kernel目錄下。

Lib

目錄包含了核心的庫代碼,不過與處理器結構相關的庫代碼被放在arch/*/lib/目錄下。

Maintainers

目錄存放了維護人員列表,對當前版本的內核各部分都有誰負責。

Makefile

目錄第一個Makefile文件。用來組織內核的各模塊,記錄了個模塊間的相互這間的聯系和依托關系,編譯時使用;仔細閱讀各子目錄下的Makefile文件對弄清各個文件這間的聯系和依托關系很有幫助。

Mm

目錄包含了所有獨立于?cpu?體系結構的內存管理代碼,如頁式存儲管理內存的分配和釋放等。與具體硬件體系結構相關的內存管理代碼位于arch/*/mm目錄下,例如arch/i386/mm/Fault.c?。

Modules

目錄存放了已建好的、可動態(tài)加載的模塊文件目錄,是個空目錄,用于存放編譯時產生的模塊目標文件。

Net

目錄里是核心的網絡部分代碼,其每個子目錄對應于網絡的一個方面。

Reporting-bugs

目錄里是有關報告Bug?的一些內容

Scripts

目錄包含用于配置核心的腳本文件等。

一般在每個目錄下都有一個.depend文件和一個Makefile文件。這兩個文件都是編譯時使用的輔助文件。仔細閱讀這兩個文件對弄清各個文件之間的聯系和依托關系很有幫助。另外有的目錄下還有Readme文件,它是對該目錄下文件的一些說明,同樣有利于對內核源碼的理解。

?

?

?

?

?

修改根目錄makefile文件

exportKBUILD_BUILDHOST := $(SUBARCH)

ARCH???????????????? =arm

CROSS_COMPILE???? ?= $(CONFIG_CROSS_COMPILE:"%"=%)

否則后面不能設置ARM處理器。

?

?

配置Linux內核,最常用的是執(zhí)行“makemenuconfig",如果不能執(zhí)行請安裝ncurses.

menucofig是個圖圖形配置解碼,如下

?

在圖中選項前面如果為<*>表示模塊被編譯進內核;如果為表示編譯成可加載模塊;如果為<>表示不編譯。有--->說明有子項。如果沒有system type --->這一項,請先修改makefile文件.

?

?

?

黃色高亮表示啟用該選項。

選項說明

1.General setup --->???????????????????? //一般設置


???????? ?[*] Prompt for development and/or incompletecode/drivers??

默認情況下是選擇的,這將會在設置界面中顯示還在開發(fā)或者還沒有完成的代碼與驅動.? 你應該選擇它,因為有許多設備可能必需選擇這個選項才能進行配置,實際上它是安全的。

???????? ()? Cross-compiler toolprefix?? ???????

?????????????????? 交叉編譯工具前綴,如果你要使用交叉編譯工具的話輸入相關前綴。我使用的是arm-linux- 前綴。

???????? ()? Local version -append to kernel release???

?????????????????? 自定義版本,也就是uname -r可以看到的版本,可以自行修改,這里我沒有使用

???????? [ ] Automatically append version information to the versionstring???

自動生成版本信息。這個選項會自動探測你的內核并且生成相應的版本,使之不會和原先??????? 的重復。這需要Perl的支持。由于在編譯的命令make-kpkg 中我們會加入- –append-to-version 選項來生成自定義版本,所以這里選N。

???????? Kernel compression mode (Gzip)? --->???

有5個選項,這個選項是說內核鏡像要用的壓縮模式,回車一下,可以看到gzip,bzip2,lzma,xz,lzo,一般可以按默認的gzip,如果要用bzip2,lzma,lzo,要先安裝相關解壓縮工具

???????? [*] Support for paging of anonymous memory(swap)?

?????????????????? 使你的內核支持虛擬內存 , 一定要選。

???????? [*] System V IPC?

進程提供通信機制,這將使系統(tǒng)中各進程間有交換信息與保持同步的能力。有些程序只有??????? 在選Y的情況下才能運行,所以不用考慮,這里一定要選。

???????? [*] POSIX Message Queues

?????????????????? 這是POSIX的消息隊列,它同樣是一種IPC。建議你最好將它選上

???????? [*] BSD Process Accounting ?????

這是允許用戶進程訪問內核,將賬戶信息寫入文件中。這通常被認為是個好主意,建議你??????? 最好將它選上。將進程的統(tǒng)計信息寫入文件的用戶級系統(tǒng)調用,主要包括進程的創(chuàng)建時間/創(chuàng)建者/內存占用等信息。

???????? [*]??BSD Process Accounting version 3 file format????

用的話統(tǒng)計信息將會以新的格式(V3)寫入,這格式包含進程ID和父進程。注意這個格式和以前的 v0/v1/v2 格式不兼容,所以你需要 升級相關工具來使用它。選不選均可。

???????? [*] Export task/processstatistics through netlink (EXPERIMENTAL)?

處于實驗階段的功能。通過通用的網絡輸出工作/進程的相應數據,和BSD不同的是,這些數據在進程運行的時候就可以通過相關命令訪問。和BSD類似,數據將在進程結束時送入用戶空間。如果不清楚,選N。
通過netlink接口向用戶空間導出任務/進程的統(tǒng)計信息,與BSD Process Accounting的不同之處在于這些統(tǒng)計信息在整個任務/進程生存期都是可用的

???????? [*]??Enable per-task delay accounting (EXPERIMENTAL)?

?????????????????? 在統(tǒng)計信息中包含進程等候系統(tǒng)資源(cpu,IO同步,內存交換等)所花費的時間

???????? [*]??Enable extended accounting over taskstats (EXPERIMENTAL)??

?????????????????? 在統(tǒng)計信息中包含擴展進程所花費的時間

???????? [*]????Enable per-task storage I/O accounting (EXPERIMENTAL)??

?????????????????? 在統(tǒng)計信息中包含I/O存儲進程所花的時間。

???????? -*- Auditing support?

審計支持,用于和內核的某些子模塊同時工作,(例如SELinux)需要它,只有同時選擇其子項才能對系統(tǒng)調用進行審計。允許審計的下層能夠被其他內核子系統(tǒng)使用,比如SE-Linux,它需要這個來進行登錄時的聲音和視頻輸出。

???????? [*]??Enable system-call auditing support

支持對系統(tǒng)調用的審計。允許系統(tǒng)獨立地或者通過其他內核的子系統(tǒng),調用審計支持,比??????? 如SE-Linux。要使用這種審計的文件系統(tǒng)來查看特性,請確保 INOTIFY 已經被設置。??????????????

RCU Subsystem? --->? 一個高性能的鎖機制RCU 子系統(tǒng)

RCU(Read-CopyUpdate),顧名思義為讀取-復制更新。對于被RCU保護的共享數據結構,讀者不需要獲得任何鎖就可以訪問它,但寫者在訪問它時首先拷貝一個副本,然后對副本進行修改,最后使用一個回調(callback)機制在適當的時機把指向原來數據的指針重新指向新的被修改的數據。這個時機就是所有引用該數據的CPU都退出對共享數據的操作。

???????? IRQ subsystem? --->?????? //IRQ中斷子系統(tǒng)設置。

?????????????????? [*]Support sparse irq numbering???

??????????????????????????? 支持稀有終端編號,不知道怎么用,默認選中

???????? RCU Subsystem? ---> ???? //RCU子系統(tǒng)設置,非對稱讀寫鎖系統(tǒng)是一種新的kernel鎖機制,適用于讀多寫少環(huán)境

RCU (Read-Copy Update),顧名思義為讀取-復制更新。對于被RCU保 護的共享數據結構,讀者不需要獲得任何鎖就可以訪問它,但寫者在訪問它時首先拷貝一個副本,然后對副本進行修改,最后使用一個回調(callback)機 制在適當的時機把指向原來數據的指針重新指向新的被修改的數據。這個時機就是所有引用該數據的CPU都退出對共享數據的操作。

?????????????????? RCU Implementation(Tree-based hierarchical RCU)?--->?

??????????????????????????? (X)UP-only small-memory-footprint RCU?

???????????????????????????????????? 小內存的RCU。

?????????????????? [ ] Enable tracingfor RCU

???????????????????????????????????? 激活跟蹤,不選擇

???????? < > Kernel.config support????

這個選項允許.config文件(即編譯LINUX時的配置文件)保存在內核當中。它提供正在運行中的或者還在硬盤中的內核的相關配置選項。可以通過內核鏡像文件 kernel image file 用命令script scripts/extract-ikconfig 來提取出來,作為當前內核重編譯或者另一個內核編譯的參考。如果你的內核在運行中,可以通過/proc/config.gz文件來讀取。下一個選項提供這項支持。看起來好像是一個不錯的功能,可以把編譯時的 .config文件保存在內核中,以供今后參考調用。用來重編譯和編譯其他的內核的時候可以用上。你是一個編譯內核的狂人的話,這項要選上

???????? (17) Kernel logbuffer size (16 => 64KB, 17 => 128KB)??

內核日志緩存的大小,12 => 4 KB,13 => 8KB,14 => 16 KB單處理器, 15 => 32 KB多處理器,16=> 64 KB for x86 NUMAQ or IA-64,17 =>128 KB for S/390???? ,保持默認。

???????? -*- Control Groupsupport? --->

?????????????????? cgroup支持,如cpusets那樣來使用cgroup子系統(tǒng)進程(不確定可以不選)????????????????

?

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯系該專欄作者,如若文章內容侵犯您的權益,請及時聯系本站刪除。
換一批
延伸閱讀

LED驅動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關鍵字: 驅動電源

在工業(yè)自動化蓬勃發(fā)展的當下,工業(yè)電機作為核心動力設備,其驅動電源的性能直接關系到整個系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動勢抑制與過流保護是驅動電源設計中至關重要的兩個環(huán)節(jié),集成化方案的設計成為提升電機驅動性能的關鍵。

關鍵字: 工業(yè)電機 驅動電源

LED 驅動電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個照明設備的使用壽命。然而,在實際應用中,LED 驅動電源易損壞的問題卻十分常見,不僅增加了維護成本,還影響了用戶體驗。要解決這一問題,需從設計、生...

關鍵字: 驅動電源 照明系統(tǒng) 散熱

根據LED驅動電源的公式,電感內電流波動大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關鍵字: LED 設計 驅動電源

電動汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產業(yè)的重要發(fā)展方向。電動汽車的核心技術之一是電機驅動控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機驅動系統(tǒng)中的關鍵元件,其性能直接影響到電動汽車的動力性能和...

關鍵字: 電動汽車 新能源 驅動電源

在現代城市建設中,街道及停車場照明作為基礎設施的重要組成部分,其質量和效率直接關系到城市的公共安全、居民生活質量和能源利用效率。隨著科技的進步,高亮度白光發(fā)光二極管(LED)因其獨特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關鍵字: 發(fā)光二極管 驅動電源 LED

LED通用照明設計工程師會遇到許多挑戰(zhàn),如功率密度、功率因數校正(PFC)、空間受限和可靠性等。

關鍵字: LED 驅動電源 功率因數校正

在LED照明技術日益普及的今天,LED驅動電源的電磁干擾(EMI)問題成為了一個不可忽視的挑戰(zhàn)。電磁干擾不僅會影響LED燈具的正常工作,還可能對周圍電子設備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關鍵字: LED照明技術 電磁干擾 驅動電源

開關電源具有效率高的特性,而且開關電源的變壓器體積比串聯穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機重量也有所下降,所以,現在的LED驅動電源

關鍵字: LED 驅動電源 開關電源

LED驅動電源是把電源供應轉換為特定的電壓電流以驅動LED發(fā)光的電壓轉換器,通常情況下:LED驅動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關鍵字: LED 隧道燈 驅動電源
關閉