Download presentation
Presentation is loading. Please wait.
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 章所編譯好的九九乘法表程式 至檔案系統之中,並燒錄至平台之中
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.