嵌入式核心製作

2021-06-28 22:11:39 字數 3307 閱讀 4440

一.核心簡介:

1.系統架構

(1)linux是由使用者空間和核心空間構成的

(2)使用者空間主要是使用者應用程式以及一些c庫檔案,配置檔案。一般是看得見的。

(3)核心空間主要是系統呼叫介面,狹義上的核心,處理器架構相關的**。

(4)劃分兩個空間的理由:處理器有不同的工作模式,不同的模式許可權不一樣,可以執行的指令不一樣。兩個空間對應不同的工作模式(操作級別),程式執行的兩種不同的狀態。可以起到系統保護作用。比如使用者空間級別較低,核心空間級別高。

(5)通過系統呼叫和硬體中斷可以在兩種空間相互切換。

2.核心架構(狹義上核心,純**)

(1)系統呼叫介面

(2)程序管理(建立程序—fork,exec,停止程序–kill,exit,控制通訊—signal,posix機制,共享cpu–程序排程)

(3)儲存管理(記憶體分配,**,控制多個程序安全的共享記憶體區域)

(4)cpu架構相關**(為的是提高至移植性)

(5)裝置驅動程式

(6)網路協議棧(只是協議,與硬體無關)

(7)虛擬檔案系統(隱藏各種檔案系統的具體操作細節,提供統一的檔案操作介面)

3.源**目錄簡介

(1)arch:存放體系結構相關的**。下設子目錄,分別對應具體的cpu,沒格仔目錄還有boot,mm,以及kernel三個子目錄,分別對應系統引導以及儲存管理,和系統呼叫

(2)documentation:核心文件,包含幫助資訊,修改資訊等

(3)drivers:裝置驅動目錄

(5)fs:存放各種檔案系統的實現**。每個子目錄對應一種檔案系統。公用的源**則用於實現vfs。

(6)net:網路協議的實現目錄。

(7)管理源**:sourceinsight軟體。

2.配置命令:

(1)make config—–》互動式

(2)make menuconfig—-》選單式

(3)執行配置和編譯命令都是在頂層目錄進行的。

3.一般要用到的大項

(1)處理器型別(process type)

–process family

–具體cpu

(2)networking suport

(3)devices drivers

(4)file systems

4.利用已存在的配置檔案(一般在已存在的linux系統的/boot目錄下),來提高配置效率,一般在arch/$cpu/configs子目錄(或者使用預設的配置檔案)。

5.<>—對應三種取值方式

(1)*——-編譯進uimage(核心映像檔案執行在記憶體裡面,一開機就調進記憶體)

(2)空格—-捨棄不用該功能

(3)m——-編譯成模組(.ko)存放在硬碟,等到系統需要的時候再呼叫,節省記憶體。

6.—–只有兩個取值,*和空格。

7.配置結果儲存在.config檔案,預設情況是隱藏的。

(1)後面的y對應選擇時候的*

(2)m對應選擇時候的m

(3)可在menuconfig中選中某一項然後通過help選項可以檢視該項在.config檔案中的對應項。且是雙向對應的,即可以修改.config檔案來改變menuconfig的選單介面的選擇。

8.解壓tar.xz檔案

有兩種解壓方法:

1xz -d.tar.xztar -xv -f.tar

2tar -jxv -f **.tar.xz(大寫的j)

9.配置當前系統準備公升級的核心

(1)備份原來的.config檔案

mv ./.config ./.config——bak

(2)複製當前系統配置檔案

cp /boot/config-2.6.32-279.el6.i686 ./.config

三.核心編譯

1.編譯命令

(1)make zimage —–只能用於小於512k的核心

(2)make bzimage —通用性較強

(3)如果想要在編譯過程中顯示詳細資訊,則需要在後面加上 v=1選項。

(4)編譯好的核心映像檔案在/arch/$cpu/boot目錄下

四.模組編譯

1.編譯模組:make modules

2.將編譯好的核心模組從核心源**目錄複製到當前系統的/lib/modules下的**,為打包做準備。

make modules_install

之後便會自動新建乙個目錄,就是我們要的$version以及**。

五.製作ramdisk

執行命令:#mkinitrd initrd-ve

rsio

n version

而$version可以通過檢視/lib/modules目錄下的檔案得到。

六.安裝新核心:

1.複製編譯出來的核心映像到啟動目錄

cp arch/cp

u/bo

ot/b

zima

ge/b

oot/

vmli

nuz−

version

2.複製核心模組壓縮包到啟動目錄

cp initrd-ve

rsio

n/bo

ot/(

這裡不需

要在in

itrd

− version前面加上路徑,系統會自動搜尋,但是不要在核心源**目錄執行,最好在home執行,則會在當前路徑產生乙個ramdisk檔案。)

3.修改/etc/grub.conf檔案,從titile一直複製到最後,然後修改版本相關資訊以及核心模組打包的檔名。為的是在啟動的時候可以選擇用什麼版本的核心啟動。

4.下次啟動的時候要快速按下回車鍵,進入啟動選擇選單,然後選擇新安裝的版本啟動。進入系統以後用#uname -r檢視當前使用的核心版本。

七。清理核心

1.只清理中間的.o檔案,用make clean即可

2.要把所有中間檔案和配置檔案都清除,就要用make distclean

3.建議在拿到一套新**的時候都做一下make distclean再進行配置和編譯。

八.嵌入式核心製作

1.清除原有配置和中間檔案

make distclean

2.配置核心

make menuconfig(參考已有的配置檔案)arch=arm(因為預設是x86平台)

3.編譯核心

make uimage arch=arm cross_compile=arm-linux-

4.如果提示說缺少工具,就把之前編譯uboot/tools的mkimage複製到當前作業系統的/bin目錄。用來加檔案頭。

嵌入式Linux核心製作

一.linux核心簡介 linux系統架構分為核心空間和使用者空間。它們之間切換條件 1.系統呼叫 2.硬體中斷。核心架構 1.系統呼叫介面 2.程序管理塊 3.記憶體管理 4.體系結構相關 4.虛擬檔案系統 5.網路棧 6.裝置驅動 二.製作linux核心 1.修改配置檔案 make config...

核心模組嵌入式

linux核心模組程式設計特點 1 不能使用c庫和c標準標頭檔案 2 必須使用gnu規範 3.沒有記憶體保護機制 4.不能處理浮點運算 5.注意同步和併發的問題 6.注意可移植性 一,模組函式 1 載入函式 將模組函式用關鍵字static修飾,避免和核心函式重名 init 把標記的函式放在elf檔案...

嵌入式Linux核心,檔案系統的製作

嵌入式linux系統由 linux核心 根檔案系統 兩部分組成 乙個完整的嵌入式linux系統組成 bootloader boot parameters kernel root filesystem 嵌入式linux系統使用的是linux核心,製作方法基本和x86平台的linux核心一致,下面介紹製...