Building Embedded Linux1 Outline v Introduction v v
Building Embedded Linux(1)
Outline v. Introduction v開發系統 v. S 3 C 2410 X介紹 v. NAND & NOR FLASH v開發環境 2
Introduction 3
Introduction v. Building Embedded Linux System五步驟 Ø 必須先建立開發系統 Ø 確認目標板 Ø 建構開發環境 Ø Building Embedded Linux Ø 燒寫至儲存裝置 for Target 4
Building Embedded Linux for Target v建立一個基於Linux Kernel所產生的Embedded Linux,並不限定要用哪些 具及套件。 Ø 但基本上會包含 n n n Bootloader Linux Kernel UNIX utilities Native Library GUI Library (Option) 9
Building Embedded Linux System v必須先建立開發系統 v確認目標板 v建構開發環境 v. Building Embedded Linux for Target v燒寫至儲存裝置 11
Building Embedded Linux System v必須先建立開發系統 v確認目標板 v建構開發環境 v. Building Embedded Linux for Target v燒寫至儲存裝置 13
SBC-2410 v. Samsung S 3 C 2410 X ARM 920 T 32 -bit CPU (200 MHz) v 64 Mbytes NAND Flash v 1 Mbytes NOR Flash v 64 MB SDRAM(133 MHz) v. RS-232 C port x 1 v. USB Host x 1 v. USB Slave x 1 v. RJ-45 10 M Base-T Ethernet interface 16
SBC-2410 v. Button x 4 and Reset Button x 1 v. Led x 4 v. SD card connector v. LCD port v. Keyboard Port v. Other RS-232 C port 可額外接出 v. JTAG connector 20 Pin v. Board size 120 mmx 90 mm 17
S 3 C 2410 X v. SAMSUNG所製造的一顆16/32 bit RISC Microprocessor,並採用ARM 920 T Core,價 格低廉、低功率及高效能的特性。 18
FEATURES v. Architecture Ø Enhanced ARM architecture MMU to support Win. CE, EPOC 32 and Linux Ø ARM 920 T CPU core supports the ARM debug architecture. Ø Internal Advanced Microcontroller Bus Architecture (AMBA) (AMBA 2. 0, AHB/APB) 19
FEATURES v. System Manager Ø Little/Big Endian support Ø Address space: 128 M bytes for each bank (total 1 G bytes) Ø Supports external wait signals to expend the bus cycle Ø Supports self-refresh mode in SDRAM for powerdown 20
FEATURES v. NAND Flash Boot Loader Ø Supports Ø 4 KB booting from NAND flash memory internal buffer for booting Ø Supports storage memory for NAND flash memory after booting 21
FEATURES v. Cache Memory Ø 64 -way set-associative cache with I-Cache (16 KB) and D-Cache (16 KB) Ø 8 words length per line with one valid bit and two dirty bits per line Ø Write-through or write-back cache operation to update the main memory 22
NAND-Flash & NOR-Flash v. NOR-Flash和NAND-Flash是現在市場上兩種主要的 快閃記憶體技術 v. Intel於 1988年開發出NOR flash技術。 v隔年,1989年東芝公司發表了NAND flash結構。 23
NAND-Flash & NOR-Flash v由上列幾點可得知NOR-Flash適合較少抹寫 動作的資料存放,又常使用。所以通常NOR -Flash存放Bootloader。而NAND Flash放Root filesystem。 26
Building Embedded Linux System v必須先建立開發系統 v確認目標板 v建構開發環境 v. Building Embedded Linux for Target v燒寫至儲存裝置 27
Cross-Toolchain v在這裡使用的套件有以下 : Ø GNU Compiler Collection (gcc 2. 95. 3) Ø GNU C Library (glibc 2. 1. 3) Ø GNU Binutils (binutils 2. 10. 1) Ø Linux Kernel 2. 4 30
GNU Compiler Collection(gcc) v高度可移殖性,目前有超過三十種硬體平台和作業 系統可使用GCC。 硬體包括x 86, ia 64, alpha, hppa, m 68 k, Power PC, mips, IBM rs 6000, sparc/sparc 64等。 Ø 作業系統包含Microsoft 平台 到UNIX和IBM的 OS/2 Ø 33
GNU Binary Utilities(binutils) v主要包括二支公用程式 assembler, linker其餘的有ar、 ld 、gasp、ar、nm、objcopy、objdump、ranlib、 readelf、size、strings、strip、c++filt及addr 2 line。 36
GNU C Library (glibc) v. Libc 5問世後一兩年,GNU所開發的glibc做 成C函式庫,此時glibc即為系統函式庫。比 起libc 5,glibc符合許多標準及規範。 Ø ISO C Ø POSIX Ø Berkeley Ø SVID Ø XPG Unix 46
Cross-Toolchain v網路取得 (handhelds. org) Ø Ø www. handhelds. org/網站可取得cross-toolchain(ARM) 下載完後,使用下列步驟 : n n n Ø tar jxvf toolchain_name. tar. bz 2 解完後放於/usr/local/arm/ export PATH=$PATH: /usr/local/arm/3. 4. 1/bin/ 設置完後即可使用toolchain。 註: 解完後所放的位置是一定的,但必須依照原本 編譯時所存放的位置。 Toolchain網路位置: http: //www. handhelds. org/download/projects/toolchain/ 48
Building Cross-Toolchain v假設使用者為baw,建立編譯Cross-Toolchain所 需要用到的目錄。 Ø # mkdir -p /home/baw/Embedded_Linux_arm/Embedded_Project/tools/arm-linux Ø # ls /home/baw/Embedded_Linux_arm/Embedded_Project/tools/arm-linux 這樣將會循序地把沒有存在的目錄建立起來。 這樣即可知道是否已經建立起來,若沒有,會告知其目錄不 存在。 52
Building Cross-Toolchain v設置Cross-toolchain各種套件原始碼放置位置 於 $PRJROOT/build-source/ Ø# mkdir $PRJROOT/build-source v下載各需要用到的套件至此目錄。 Ø ftp: //ftp. gnu. org/gnu/ 可下載 Ø 下載binutils、gcc、glibc和glibc-linuxthreads 55
Building Cross-Toolchain v接下來建立各套件所擺放位置,一共要建立 Binutils、glibc、boot-gcc(中介編譯)及gcc Ø #mkdir $PRJROOT/build-source/Binutils $PRJROOT/build-source/Boot-Gcc $PRJROOT/build-source/Glibc $PRJROOT/build-source/Gcc 56
設置核心標頭檔 v更改kernel名稱 Ø# Ø# cd $PRJROOT/kernel/ mv linux-2. 4. 18 v至kernel目錄 Ø# cd $PRJROOT/kernel/linux-2. 4. 18 v進行kernel組態 Ø # make ARCH=arm CROSS_COMPILE=arm-linux- menuconfig n Ø 進入組態畫面,需要選擇處理器及系統類型。 # make ARCH=arm CROSS_COMPILE=arm-linux- dep 58
設置核心標頭檔 v建立核心標頭檔目錄 Ø# mkdir $TARGET_PREFIX/include v開始複製核心標頭檔 Ø Ø Ø # cp –r include/linux/ $TARGET_PREFIX/include # cp –r include/asm-i 386/ $TARGET_PREFIX/include/asm # cp –r include/asm-generic/ $TARGET_PREFIX/include 60
Building binutils v解開原始碼,並解於 作目錄。 Ø# Ø# cd $PRJROOT/build-source tar zxvf binutils-2. 10. 1. tar. gz v進入預設binutils 作目錄,並組態並安裝。 Ø# Ø cd Binutils #. . /binutils-2. 10. 1/configure --target=$TARGET --prefix=$PREFIX Ø# Ø# make install 61
Building binutils 組態畫面 62
Building binutils v當安裝成功後,在安裝目錄夾裡會有下列檔案。 Ø Ø 安裝目錄夾為 $PREFIX/bin 一共有以下檔案: arm-linux-addr 2 line arm-linux-as arm-linux-gasp arm-linux-nm arm-linux-objdump arm-linux-readelf arm-linux-strings arm-linux-ar arm-linux-c++filt arm-linux-ld arm-linux-objcopy arm-linux-ramlib arm-linux-size arm-linux-strip 63
Building C compiler v首先一樣解壓縮gcc套件。 Ø# Ø# cd $PRJROOT/build-tools tar zxvf gcc-2. 95. 1. tar. gz v進入gcc預設 作目錄,並組態。 Ø # cd Boot-Gcc/ Ø #. . /gcc-2. 95. 1/configure --target=$TARGET --prefix=$PREFIX --without-headers --with-newlib --enable-languages=c --without-headers 不使用標頭檔 --with-newlib 不使用glibc --enable-languages-c 只編譯C編譯器 64
Building C compiler v. Configure之後會產生其適當的Makefile,所以再來 建立編譯器 Ø # make all-gcc v編譯完成後,再接著安裝gcc Ø # make install-gcc v可在$PREFIX/bin 裡頭查看是否有C Compiler。 65
Building Glibc v解開Glibc套件: Ø# Ø# cd $PRJROOT/build-source tar zxvf glibc-2. 2. 3. tar. gz v並再解開linuxthread套件: Ø # tar zxvf glibc-linuxthreads-2. 2. 3. tar. gz -C glibc-2. 2. 3/ v移至glibc預訂 作目錄。 Ø# cd Glibc/ 66
Building Glibc v開始建立C函式庫。 Ø # CC=arm-linux-gcc. . /glibc-2. 2. 3/configure -host=$TARGET --prefix=“/usr --enable-add-ons --withheaders=$TARGET_PREFIX/include v編譯glibc Ø # make v安裝glibc Ø # make install_root=$TARGET_PREFIX prefix=“” install 67
Building C/C++ Compiler v進入預設完整編譯器 作目錄,並組態。 Ø# Ø# cd $PRJROOT/build-source/Gcc. . /gcc-2. 95. 1/configure --target=$TARGET -prefix=$PREFIX --enable-languages=c,c++ v組態完後編譯 Ø# make all v編譯完後安裝 Ø #make install 68
Cross-Toolchain v $PRJROOT/tools 目錄的內容 Ø bin Ø arm-linux Ø Include Ø Info Ø Lib Ø Man Ø Share cross-compile 具 目標板的檔案 cross-compile 具標頭檔 Gcc的info文件 讓cross-compile 具使用 的函式庫 cross-compile線上文件 無 70
Cross-Toolchain v $PRJROOT/tools/arm-linux 目錄的內容 Ø bin Ø etc Ø include Ø info Ø libexec Ø sbin 和glibc有關的目標板二元檔 只包括rpc 目標板用以建應用程式的標 頭檔 glibc 的 info 目標板使用的函式庫 pt_chown檔 目標板的/sbin 71
- Slides: 72