Presentation is loading. Please wait.

Presentation is loading. Please wait.

嵌入式系統概論 - 以 S3C2440 核心為架構 第 15 章 嵌入式 Linux 核心 與根檔案系統.

Similar presentations


Presentation on theme: "嵌入式系統概論 - 以 S3C2440 核心為架構 第 15 章 嵌入式 Linux 核心 與根檔案系統."— Presentation transcript:

1 嵌入式系統概論 - 以 S3C2440 核心為架構 第 15 章 嵌入式 Linux 核心 與根檔案系統

2 嵌入式系統概論 - 以 S3C2440 核心為架構 copyright @ 許永和 大綱  15.1 Linux 核心移植準備  15.2 Linux 核心剪裁編譯  15.3 檔案系統建立與燒錄

3 嵌入式系統概論 - 以 S3C2440 核心為架構 copyright @ 許永和 15.1 Linux 核心移植準備  15.1 Linux 核心移植準備  15.2 Linux 核心剪裁編譯  15.3 檔案系統建立與燒錄

4 嵌入式系統概論 - 以 S3C2440 核心為架構 copyright @ 許永和 15.1 Linux 核心移植簡介  Linux 移植是將 Linux 作業系統針對具體的目 標平台做必要改寫,再將其安裝到該目標平 台使其正確的運行執行。  在嵌入式開發領域中,其基本內容是: 1. 取得某一版本的 Linux 核心原始程式碼,根據具 體目標平台針對原始程式碼進行必要的改寫(主 要是修改體系結構相關部分),及新增設備驅動。 2. 對該系統進行目標平台的交叉編譯,產生一個核 心映像檔,最後通過介面通訊方式將映象檔燒寫 (安裝)到目標平台中。

5 嵌入式系統概論 - 以 S3C2440 核心為架構 copyright @ 許永和 15.1 Linux 核心建立流程  形成適合 ARM 平台的 Linux 基本流程 1. 下載 Linux 核心及 ARM 平台相關套件 2. 建立交叉編譯環境 3. 修改核心內部的 makefile ,符合所建立的交叉編 譯環境 4. 進行編譯  提供 Linux 核心及 ARM 平台相關套件下載載 點  ftp://ftp.arm.linux.org.uk  其中提供 ARM Linux 的核心及其關於 ARM 平台 的套件。

6 嵌入式系統概論 - 以 S3C2440 核心為架構 copyright @ 許永和 15.1 GNU GCC 工具鏈說明  目前 Linux 作業系統主要以 GNU GCC 來執行交 叉編譯的動作。  GCC 進行程式碼編譯時,為保證編譯過程與實 體電腦硬體平台的無關性,它使用 RTL ( Register Transfer Language )暫存器傳遞 語言對目標平台的指令進行描述。  由 GCC 輸出的是組合語言根源程式,必須經過 一些工具鏈協助,才可編譯成機器程式。  這些工具鏈包含 GNUBinutils 、 GNU GLibc 。  Binutils :主要包含包含鏈結器 ld 和組譯器 as 。  GLibc :其提供一個 C 函式庫,使系統完成基本系 統呼叫及其它的一些函數呼叫 。

7 嵌入式系統概論 - 以 S3C2440 核心為架構 copyright @ 許永和 15.1 GCC 產生過程  一般 GCC 交叉編譯器的產生過程 1. 取得 Binutils 、 GCC 、 Glibc 的原始程式碼。 2. 設置並編譯 Binutils ,得到我們下一步要用到的 組譯器和連接器。 3. 設置並編譯 GCC 原始程式碼,產生 GCC 編譯器。 4. 設置 Glibc 編譯產生 Glibc 的 C 函數庫。 5. 再次設置並編譯 GCC 原始程式碼,產生其他語 言的編譯器如: C ++等。  這部分工作必須對硬體平台的體系結構非常 熟悉,執行才會正確,因此大多從網上直接 下載相關工具包。

8 嵌入式系統概論 - 以 S3C2440 核心為架構 copyright @ 許永和 15.1 ARM 系列核心資料夾  在 arch 目錄中有許多子目錄,是利用晶片命 名的,表示是針對該晶片體系結構的程式碼。  arm 系列晶片編譯核心,需修改 ARM 目錄下 相關檔案。 ARM 晶片系列 核心資料夾

9 嵌入式系統概論 - 以 S3C2440 核心為架構 copyright @ 許永和 15.1 ARM 初始化程式  在 arm/boot/bootp 下有一個 init.S 的檔案, init.S 就是引導 Linux 核心在 ARM 平台上啟 動的初始化程式碼。 初始化 程式碼

10 嵌入式系統概論 - 以 S3C2440 核心為架構 copyright @ 許永和 15.1 初始化工作內容  Init.S 主要完成以下功能: 1. 定義資料段、程式碼段、 bbs (未初始化資料段) 起始位址變數並對 bbs 段進行初始化。 2. 設置暫存器以初始化系統硬體。 3. 關閉中斷。 4. 初始化 LCD 顯示。 5. 將資料段資料複製到記憶體中。 6. 跳轉到核心起始函數 start_kernel 繼續執行。 7. 對主暫存器的修改。

11 嵌入式系統概論 - 以 S3C2440 核心為架構 copyright @ 許永和 15.2 Linux 核心剪裁編譯  15.1 Linux 核心移植準備  15.2 Linux 核心剪裁編譯  15.3 檔案系統建立與燒錄

12 嵌入式系統概論 - 以 S3C2440 核心為架構 copyright @ 許永和 15.2 Linux 核心剪裁編譯簡介  Linux 核心的裁剪與編譯看似簡單過程,只需 對其設置功能表做所需功能選擇。  針對所有核心設置功能表都是透過 Config.in 經由不同描述解釋器產生.config 設定檔。  針對核心設置功能表本身結構龐大,內容複 雜,具體如何選擇,必須熟悉與瞭解該功能表 的各項具體含義。

13 嵌入式系統概論 - 以 S3C2440 核心為架構 copyright @ 許永和 15.2 Linux 核心編譯功能表 Linux 核心的編譯功能表有好幾個版本執行:  make config:  透過進入命令行,經由一行一行顯示做設置,較 不便設定。  make menuconfig:  透過 menu 功能表,可選擇你要的核心功能。  make xconfig:  經由 X windows 所顯示的功能選單,使用便利。  針對上列三種方式, make menuconfig 方式 最為便利且穩定性最高的。

14 嵌入式系統概論 - 以 S3C2440 核心為架構 copyright @ 許永和 15.2 Linux 核心編譯功能表儲存及載入  以上大部分選項為 2.6 版核心的基本選項,但 會因為開發平台的不同,內部選項內容也會不 同,需要同學根據自己所需功能去設定。  設定完所需的設定,要將其設定檔建立起來。 在選項中有儲存與載入的功能:  Load an Alternate Configuration File 載入已建立的.config 檔。  Save Configuration to an Alternate File 儲存所設定內容至一個.config 檔

15 嵌入式系統概論 - 以 S3C2440 核心為架構 copyright @ 許永和 15.2 Linux 核心編譯功能表儲存及載入選項 載入與儲存 設定選項

16 嵌入式系統概論 - 以 S3C2440 核心為架構 copyright @ 許永和 15.2 Linux 核心編譯動作  建立完設定檔,必須經過編譯形成燒錄映像 檔,才可經由 Bootloader 燒錄至 Flash 所規劃 好的核心映射區。  編譯前必須先確認 Makefile 的編譯器路徑是 否設定為交叉編譯工具的編譯器路徑。  如之前設定,其路徑應為 : /usr/local/arm/3.4.1/bin/arm-linux-

17 嵌入式系統概論 - 以 S3C2440 核心為架構 copyright @ 許永和 15.2 Linux 核心編譯動作  確認無誤後,便可執行 make zImage 命令, 產生名為 zImage 的映像檔在核心資料夾中的 所屬晶片資料夾的 /arch/boot 的目錄底下。  如平台晶片為 ARM 系列,其目錄路徑為核心資料 夾 /arm /arch/boot

18 嵌入式系統概論 - 以 S3C2440 核心為架構 copyright @ 許永和 15.2 編譯核心 Makefile 檔  編譯核心 Makefile 檔所設定的編譯路徑 交叉編譯工具路徑

19 嵌入式系統概論 - 以 S3C2440 核心為架構 copyright @ 許永和 15.2 Linux 核心執行編譯  執行編譯,形成 zImage 燒錄檔 執行編譯動作

20 嵌入式系統概論 - 以 S3C2440 核心為架構 copyright @ 許永和 15.2 形成 Linux 核心映像檔路徑  產生燒錄檔的路徑位置 產生映像檔路徑 所產生映像檔

21 嵌入式系統概論 - 以 S3C2440 核心為架構 copyright @ 許永和 15.3 檔案系統建立與燒錄  15.1 Linux 核心移植準備  15.2 Linux 核心剪裁編譯  15.3 檔案系統建立與燒錄

22 嵌入式系統概論 - 以 S3C2440 核心為架構 copyright @ 許永和 15.3 檔案系統指標比較表 檔案系統 可寫 性 永久 儲存性 停電 穩定性 壓縮 性 在 Ram 中 的空間 RomfsNoN/A No CramfsNoN/A YesNo JFFSYes No JFFS2Yes No Ext2 over NFTL Yes No Ext3 over NFTL Yes No Ext2 over RAM YesNo 幾種常用的檔案系統

23 嵌入式系統概論 - 以 S3C2440 核心為架構 copyright @ 許永和 15.3 檔案系統內容  根檔案系統是 Linux 系統的根本所在,啟動時 必須載入進來以支援系統的執行。  一般包括以下目錄內容:  /dev (設備檔目錄)  /proc ( proc 檔案系統目錄)  /etc (系統設置檔的目錄)  /sbin (系統程式的目錄)  /bin (基本應用程式的目錄)  /lib (共用函數庫的目錄)  /mnt (裝載其他磁片節點的目錄)  /usr (附加應用程式的目錄)。

24 嵌入式系統概論 - 以 S3C2440 核心為架構 copyright @ 許永和 15.3 開啟根檔案系統 (1)  根檔案系統提供給核心第一個行程的程式, 同時也提供了基本的工具。  一套 Linux 系統要正常啟動,根檔案系統要包 括下列檔案夾:  /bin , /etc , /proc , /tmp , /var , /dev , /mnt 。  要包括下列基本的設備檔:  /dev/console , /dev/null , /dev/ram0 , /dev/tty , /dev/tty0 。  要包括下列設置檔:  /etc/rc.d/inittab , /etc/rc.d/rc.sysinit,/etc/fstab.

25 嵌入式系統概論 - 以 S3C2440 核心為架構 copyright @ 許永和 15.3 開啟根檔案系統 (2)  對於系統程式和基本的應用程式,由兩種方 式去獲得:  交叉編譯所有需要的命令原始程式碼, 利用 BusyBox 工具來完成。  將現有 ARM 專用 ramdisk 內部檔案拷貝至自己的 ramdisk 裏。

26 嵌入式系統概論 - 以 S3C2440 核心為架構 copyright @ 許永和 15.3 BusyBox 工具  嵌入式系統命令工具建立通常使用 BusyBox 工具。  他是一個工具集,包括很多常用的工具軟體,這 些軟體全都編譯成一個可執行檔,透過符號連接 的方式開啟各個工具的名稱。  其優勢為佔用空間小且可很方便的制定所需命令。  利用 BusyBox 建立命令工具流程  下載 BusyBox 原始檔案  進入設定功能表,選擇自己所需功能  進行 make 動作,編譯出所需的命令工具。

27 嵌入式系統概論 - 以 S3C2440 核心為架構 copyright @ 許永和 15.3 檔案系統建立流程  透過現有的 ramdisk 內部檔案拷貝至自己的 ramdisk 裏。必須經由特定的映像檔產生工具。  根據開發平台上的檔案系統採用 cramfs 檔案 系統,因此必須透過 mkcramfs 產生工具,將 以新增好所需應用程式的檔案系統,產生為 cramfs 映像檔。

28 嵌入式系統概論 - 以 S3C2440 核心為架構 copyright @ 許永和 15.3 檔案系統建立流程  產生所需的 cramfs 工作流程  將原本檔案系統的 cramfs 掛載在暫存資料夾  將暫存資料夾的檔案打包成 tar 檔,在目的資料夾 在將其 tar 檔解開  新增所需的應用程式  利用 mkcramfs 建立出新的 cramfs 檔

29 嵌入式系統概論 - 以 S3C2440 核心為架構 copyright @ 許永和 問題與討論  請讀者試著自行編譯 Linux 核心,並燒錄於平台之中  請讀者自行加入第 13 章所編譯好的九九乘法表程式 至檔案系統之中,並燒錄至平台之中


Download ppt "嵌入式系統概論 - 以 S3C2440 核心為架構 第 15 章 嵌入式 Linux 核心 與根檔案系統."

Similar presentations


Ads by Google