Building Embedded Linux 2 Outline v v Bootloader

  • Slides: 115
Download presentation
Building Embedded Linux 2

Building Embedded Linux 2

Outline v前言及介紹 v. Bootloader v. Kernel v. Root Filesystem v燒寫資料至flash 3

Outline v前言及介紹 v. Bootloader v. Kernel v. Root Filesystem v燒寫資料至flash 3

此章節使用套件 vvivi bootloader(0. 1. 4) v. Linux kernel(2. 4. 18) v. Busybox(1. 0. 0)

此章節使用套件 vvivi bootloader(0. 1. 4) v. Linux kernel(2. 4. 18) v. Busybox(1. 0. 0) v. JFlash 4

開發流程 v步驟 1 Ø 建立Cross-Toolchain v步驟 2 Ø 使用Cross-Toolchain編譯目標板的Bootloader v步驟 3 Ø 使用Cross-Toolchain編譯目標板的Kernel v步驟

開發流程 v步驟 1 Ø 建立Cross-Toolchain v步驟 2 Ø 使用Cross-Toolchain編譯目標板的Bootloader v步驟 3 Ø 使用Cross-Toolchain編譯目標板的Kernel v步驟 4 Ø 使用Cross-Toolchain建立目標板的Root Filesystem 10

v前言及介紹 v. Bootloader v. Kernel v. Root Filesystem v燒寫資料至flash 14

v前言及介紹 v. Bootloader v. Kernel v. Root Filesystem v燒寫資料至flash 14

Bootloader (vivi) v支援ARM Core處理器的Bootloader眾多,在 此以MIZI公司所開發的VIVI Bootloader為預 設使用的Bootloader,沒有限定一定要何種 Bootloader。 15

Bootloader (vivi) v支援ARM Core處理器的Bootloader眾多,在 此以MIZI公司所開發的VIVI Bootloader為預 設使用的Bootloader,沒有限定一定要何種 Bootloader。 15

Bootloader (vivi) • vivi – 韓國 MIZI公司所開發的bootloader專 門使用在arm系列平台上,並且開放原始碼 採用GPL授權,支援SA-1110, S 3 C 2400, S

Bootloader (vivi) • vivi – 韓國 MIZI公司所開發的bootloader專 門使用在arm系列平台上,並且開放原始碼 採用GPL授權,支援SA-1110, S 3 C 2400, S 3 C 2410, PXA 250 Processors。 出處 : http: //www. mizi. com/ 16

Bootloader (vivi)特色 v. It's easy to add new Processor. v. It's easy to add

Bootloader (vivi)特色 v. It's easy to add new Processor. v. It's easy to add new board. v. It's easy Porting Kernel device driver. v. It supports Various MTD. v. You can add sample source code or can load test code to RAM. 出處 : http: //www. mizi. com/ 17

Bootloader (vivi) v初始化硬體. Ø 設定CPU頻率, 點亮LED, v將kernel, rootfs從Flash複製到RAM, 並執行kernel. vvivi 有能夠將資料寫入Flash的功能 Ø 經由serial port傳輸

Bootloader (vivi) v初始化硬體. Ø 設定CPU頻率, 點亮LED, v將kernel, rootfs從Flash複製到RAM, 並執行kernel. vvivi 有能夠將資料寫入Flash的功能 Ø 經由serial port傳輸 v提供一個能夠對目標板下command的介面 Ø 經由serial port 18

Bootloader (vivi) v能夠經由JTAG cable、Serial cable、 Ethernet cable 傳輸檔案。 19

Bootloader (vivi) v能夠經由JTAG cable、Serial cable、 Ethernet cable 傳輸檔案。 19

Bootloader (vivi) v下載完後,置於$PRJROOT/boot/ v移至vivi位置 Ø# cd $PRJROOT/boot/ v解開vivi Ø# tar jxvf vivi. tar. bz

Bootloader (vivi) v下載完後,置於$PRJROOT/boot/ v移至vivi位置 Ø# cd $PRJROOT/boot/ v解開vivi Ø# tar jxvf vivi. tar. bz 2 v解開後,會出現vivi/目錄夾,則進入。 Ø# cd vivi/ 20

Bootloader (vivi) v. System Type Ø 處理器型號 v. General setup Ø Cache Enable (Dual

Bootloader (vivi) v. System Type Ø 處理器型號 v. General setup Ø Cache Enable (Dual Cache) v. Serial Port Ø Serial Port support v. Memory Technology Devices(MTD) Ø support nand flash device。 22

選擇所需組態 # make menuconfig 23

選擇所需組態 # make menuconfig 23

選擇所需組態 v進入System type Ø 點選ARM system type n 再選取S 3 C 2410 -based 24

選擇所需組態 v進入System type Ø 點選ARM system type n 再選取S 3 C 2410 -based 24

選擇所需組態 v進入System type Ø 點選Implementations n 支援NAND Boot 25

選擇所需組態 v進入System type Ø 點選Implementations n 支援NAND Boot 25

選擇所需組態 v. General setup Ø s 3 c 2410 X有dual cache,I-cache、D-cache 26

選擇所需組態 v. General setup Ø s 3 c 2410 X有dual cache,I-cache、D-cache 26

選擇所需組態 v. Memory Technology Devices(MTD) Ø NAND Flash Device Drivers 27

選擇所需組態 v. Memory Technology Devices(MTD) Ø NAND Flash Device Drivers 27

Bootloader (vivi) v於vivi開機時可將檔案寫入Flash # Load flash Partition. Name x flash = Partition. Name= x

Bootloader (vivi) v於vivi開機時可將檔案寫入Flash # Load flash Partition. Name x flash = Partition. Name= x 所要載入的記憶體 可在vivi開機時設定 有三個區塊可選,kernel、root及vivi = 選擇以xmodem傳輸 32

Bootloader (vivi) v可使用Windows 裡的超級終端機傳送。也可 使用linux中的minicom。 33

Bootloader (vivi) v可使用Windows 裡的超級終端機傳送。也可 使用linux中的minicom。 33

Bootloader (vivi) v於vivi開機時可進入vivi功能列,設 定kernel的命令列(set parameter)。 Ø# param set linux_cmd_line “命令列參數” 34

Bootloader (vivi) v於vivi開機時可進入vivi功能列,設 定kernel的命令列(set parameter)。 Ø# param set linux_cmd_line “命令列參數” 34

v前言及介紹 v. Bootloader v. Linux Kernel v. Root Filesystem v燒寫資料至flash 35

v前言及介紹 v. Bootloader v. Linux Kernel v. Root Filesystem v燒寫資料至flash 35

Linux Kernel架構 v在此簡略介紹Linux kernel源碼的架構。並不 深入講解其原理。 v標準版Kernel一般包含了下列子目錄 : Ø Documentation、arch、drivers、fs、include、init、 ipc、kernel、lib、mm、net及scripts。 36

Linux Kernel架構 v在此簡略介紹Linux kernel源碼的架構。並不 深入講解其原理。 v標準版Kernel一般包含了下列子目錄 : Ø Documentation、arch、drivers、fs、include、init、 ipc、kernel、lib、mm、net及scripts。 36

Linux Kernel組態及編譯 v在kernel解開目錄下,設定kernel組態 Ø# make menuconfig v產生相依性, 編譯出映像檔. Ø# make dep; make bz. Image

Linux Kernel組態及編譯 v在kernel解開目錄下,設定kernel組態 Ø# make menuconfig v產生相依性, 編譯出映像檔. Ø# make dep; make bz. Image v映像檔所產生的位置 Ø /kernel source code/arch/arm/boot/z. Image 44

Linux Kernel組態及編譯 v如不是用開發商已修正過的kernel,編譯時 需加參數。 Ø Ø # make ARCH=arm CROSS_COMPILE=arm-linux- menuconfig # make ARCH=arm

Linux Kernel組態及編譯 v如不是用開發商已修正過的kernel,編譯時 需加參數。 Ø Ø # make ARCH=arm CROSS_COMPILE=arm-linux- menuconfig # make ARCH=arm CROSS_COMPILE=arm-linux- dep v有以上參數後,也會連帶更改compiler, assembler等。 45

Linux Kernel 組態 # make menuconfig 46

Linux Kernel 組態 # make menuconfig 46

Linux kernel 離開組態 47

Linux kernel 離開組態 47

v前言及介紹 v. Bootloader v. Kernel v. Root Filesystem v燒寫資料至flash 51

v前言及介紹 v. Bootloader v. Kernel v. Root Filesystem v燒寫資料至flash 51

標準Linux檔案系統結構 v /dev /root /bin /usr /lib /etc /tmp /proc… 53

標準Linux檔案系統結構 v /dev /root /bin /usr /lib /etc /tmp /proc… 53

Root Filesystem v假設在本地端(Host)所要開發根檔案系統的 目錄設為$PRJROOT/rootfs_SBC-2410 X。 Ø# mkdir $PRJROOT/rootfs_SBC-2410 X v建立根檔案系統所需的目錄。 Ø# Ø# cd $PRJROOT/rootfs_SBC-2410

Root Filesystem v假設在本地端(Host)所要開發根檔案系統的 目錄設為$PRJROOT/rootfs_SBC-2410 X。 Ø# mkdir $PRJROOT/rootfs_SBC-2410 X v建立根檔案系統所需的目錄。 Ø# Ø# cd $PRJROOT/rootfs_SBC-2410 X mkdir bin boot dev etc home lib mnt opt proc root sbin tmp usr var 54

Glibc 介紹 vlibnsl Ø NIS網路服務程式庫函式 vlibpcprofile Ø 程式計數器統計函式 vlibpthread Ø Linux 的Posix 1003. 1

Glibc 介紹 vlibnsl Ø NIS網路服務程式庫函式 vlibpcprofile Ø 程式計數器統計函式 vlibpthread Ø Linux 的Posix 1003. 1 c執行緒常式 vlibthread_db Ø 執行緒除錯函式 59

devfs v如欲選取devfs。如下 62

devfs v如欲選取devfs。如下 62

建構裝置節點檔 v/dev 裡所放置的是裝置檔. 必須先建構. Ø# Ø# cd $PRJROOT/rootfs_SBC-2410 X/dev mknod tty. S 0 c/b

建構裝置節點檔 v/dev 裡所放置的是裝置檔. 必須先建構. Ø# Ø# cd $PRJROOT/rootfs_SBC-2410 X/dev mknod tty. S 0 c/b 4 64 tty. S 0 c/b 64 4 = = = 裝置檔名稱 字元裝置 or 區塊裝置 = major number minjor number *kernel source code/Documentaion/devices. txt 可在此查閱對應表,並 63 可得知其主次編號。但額外寫的driver不一定會照此表。

Busybox定義函式 73

Busybox定義函式 73

Busy. Box v. V 1. 0. 0 安裝步驟 : make menuconfig, make all install.

Busy. Box v. V 1. 0. 0 安裝步驟 : make menuconfig, make all install. v跨平台參數 : TARGET_ARCH CROSS PREFIX 目標版 (cpu 族系) 跨平台參數 安裝路徑 (make TARGET_ARCH=arm CROSS=arm-linux- PREFIX=/目標位置 all install ) 74

Busy. Box # make menuconfig 75

Busy. Box # make menuconfig 75

Busy. Box v. Archival Utilities Ø 例rpm, unzip, gunzip v. Coreutils Ø 例chmod, chown,

Busy. Box v. Archival Utilities Ø 例rpm, unzip, gunzip v. Coreutils Ø 例chmod, chown, cp, env, mknod v. Editors Ø 例Vi v. Linux System Utilities Ø 例mount, fdisk 76

Busy. Box v. Finding Utilities Ø 例find, grep v. Init Utilities Ø 例init, reboot,

Busy. Box v. Finding Utilities Ø 例find, grep v. Init Utilities Ø 例init, reboot, poweroff v. Login/Passwd Management Utilities Ø 例login, passwd v. Linux Module Utilities Ø 例insmod, lsmod 77

Busy. Box v. Networking Utilities Ø 例wget, route, ifconfig, netstat v. Process Utilities Ø

Busy. Box v. Networking Utilities Ø 例wget, route, ifconfig, netstat v. Process Utilities Ø 例Free, kill, ps v. Another Bourne-like Shell Ø 例ash 78

Init Utilities v待會會介紹Busybox init用途及用法。在此, 我們不使用標準System V init。 85

Init Utilities v待會會介紹Busybox init用途及用法。在此, 我們不使用標準System V init。 85

Login/Password Management Utilities v在此是使用Tiny-Login,Busybox-1. 0. 0才合 併的成果。 86

Login/Password Management Utilities v在此是使用Tiny-Login,Busybox-1. 0. 0才合 併的成果。 86

Linux Module Utilities v選取insmod,以利於未來要載入模組。 87

Linux Module Utilities v選取insmod,以利於未來要載入模組。 87

Networking Utitlities v包括基本網路 具,例telnet、ping等。 88

Networking Utitlities v包括基本網路 具,例telnet、ping等。 88

Process Utilities v有關於Process的 具,例kill,可移除程序 89

Process Utilities v有關於Process的 具,例kill,可移除程序 89

Another Bourne-like Shell v在此需要選擇一個預設使用的Shell。 90

Another Bourne-like Shell v在此需要選擇一個預設使用的Shell。 90

Busy. Box init v/bin/init 是系統程序初始化,並讀取 /etc/inittab此支設定檔。 v設定檔內容格式如下 : <id>: <runlevels>: <action>: <process> runlevels action process

Busy. Box init v/bin/init 是系統程序初始化,並讀取 /etc/inittab此支設定檔。 v設定檔內容格式如下 : <id>: <runlevels>: <action>: <process> runlevels action process 此欄位可忽略 Process所要執行的動作 所要執行的Process 93

<action> vsysinit, Ø 系統第一執行的Process vrespawn, Ø 當Process關閉時會自己開啓 vaskfirst, Ø 當Process執行時會先詢問 94

<action> vsysinit, Ø 系統第一執行的Process vrespawn, Ø 當Process關閉時會自己開啓 vaskfirst, Ø 當Process執行時會先詢問 94

<action> vonce, Ø Process只會執行一次 vrestart, Ø 當重開機時所執行的Process vctrlaltdel, Ø 按下ctrl + alt + del

<action> vonce, Ø Process只會執行一次 vrestart, Ø 當重開機時所執行的Process vctrlaltdel, Ø 按下ctrl + alt + del 所執行的Process vshutdown. Ø 當Poweroff時, 所執行的Process 95

Busy. Box 如/etc/inittab不存在則預設內容為下 : : sysinit: /etc/init. d/rc. S : : askfirst: /bin/sh :

Busy. Box 如/etc/inittab不存在則預設內容為下 : : sysinit: /etc/init. d/rc. S : : askfirst: /bin/sh : : ctrlaltdel: /sbin/reboot : : shutdown: /sbin/swapoff -a : : shutdown: /bin/umount -a -r : : restart: /sbin/init tty 2: : askfirst: /bin/sh tty 3: : askfirst: /bin/sh tty 4: : askfirst: /bin/sh 96

CRAMFS v唯讀的格式 v壓縮比約為 50% v. GID只有8位元的寛度, 群組數不可超過255 v至#kernel_source/scripts/cramfs/ Ø# Ø# Ø# make (產生mkcramfs) cp

CRAMFS v唯讀的格式 v壓縮比約為 50% v. GID只有8位元的寛度, 群組數不可超過255 v至#kernel_source/scripts/cramfs/ Ø# Ø# Ø# make (產生mkcramfs) cp mkcramfs /bin mkcrafs rootfs /目標位置/自定檔名 98

v前言及介紹 v. Bootloader v. Kernel v. Root Filesystem v燒寫資料至flash 100

v前言及介紹 v. Bootloader v. Kernel v. Root Filesystem v燒寫資料至flash 100

Writing data to flash memory v燒寫Flash : filesystem也開發完成後,只剩下最後步 驟,就是把bootloader、Linux kernel和root filesystem燒寫至flash。 Ø 當root v燒寫軟體可至samsung網站下載。

Writing data to flash memory v燒寫Flash : filesystem也開發完成後,只剩下最後步 驟,就是把bootloader、Linux kernel和root filesystem燒寫至flash。 Ø 當root v燒寫軟體可至samsung網站下載。 Ø http: //www. samsung. com/Products/Semicondu ctor/System. LSI/Mobile. Solutions/Mobile. ASSP/ Mobile. Computing/S 3 C 2410 X. htm 101

燒寫資料至 NAND FLASH v可以使用SJF (SEC JTAG FLASH ) 將vivi 透 過JTAG 寫入 FLASH. #

燒寫資料至 NAND FLASH v可以使用SJF (SEC JTAG FLASH ) 將vivi 透 過JTAG 寫入 FLASH. # Jflash-s 3 c 2410 vivi /t=5 vivi => 寫入之映像檔 /t=5 => /t 選擇寫入FLASH的型號, 5 : SMDK 2410: K 9 S 1208 64 MB 102

Writing data to flash memory v. JFlash vivi to the flash memory Ø# JFlash-s

Writing data to flash memory v. JFlash vivi to the flash memory Ø# JFlash-s 3 c 2410 vivi /t=5 103

SEC JTAG FLASH 燒寫畫面 104

SEC JTAG FLASH 燒寫畫面 104

Writing data to flash memory v. VIVI Bootloader燒寫完畢 Ø 當Bootloader已經燒寫至Flash後,即可使用 VIVI將資料傳送至Flash。 v. VIVI 開機時

Writing data to flash memory v. VIVI Bootloader燒寫完畢 Ø 當Bootloader已經燒寫至Flash後,即可使用 VIVI將資料傳送至Flash。 v. VIVI 開機時 : Ø 在Booting時,可隨意按任何鍵進入VIVI Command Mode,就可以選擇傳送資料至flash。 105

Writing data to flash memory v. Load kernel to the flash memory Ø# load

Writing data to flash memory v. Load kernel to the flash memory Ø# load flash kernel x 106

Writing data to flash memory v. Load rootfs to the flash memory Ø# load

Writing data to flash memory v. Load rootfs to the flash memory Ø# load flash rootfs x 107

Graphical User Interface v. Embedded Linux有幾種較為廣泛使用的GUI 系統: Ø QT/Embedded Ø Nano-X Ø Mini-GUI Ø

Graphical User Interface v. Embedded Linux有幾種較為廣泛使用的GUI 系統: Ø QT/Embedded Ø Nano-X Ø Mini-GUI Ø Tiny-X 110

Nano-X v. Nano-X是Open Source的專案: Ø 專門為小型裝置和平台製作而成。 Ø 原名為Microwindows ,和Microsoft 的windows 商標相衝突,故在 2005年 1月30日重新命名為 Nano-X

Nano-X v. Nano-X是Open Source的專案: Ø 專門為小型裝置和平台製作而成。 Ø 原名為Microwindows ,和Microsoft 的windows 商標相衝突,故在 2005年 1月30日重新命名為 Nano-X Window System。 Ø 在此系統中有實作二種APIs,一種是Win 32 另一種是Xlib-like API。 出處: http: //www. microwindows. org/ API, 111

QT/Embedded v. QT/Embedded Ø Trolltech公司所開發,是一種跨平台的C++應用 程式。 Ø 可在Windows, Linux, Unix, Mac OS X和 Embedded

QT/Embedded v. QT/Embedded Ø Trolltech公司所開發,是一種跨平台的C++應用 程式。 Ø 可在Windows, Linux, Unix, Mac OS X和 Embedded Linux上執行。 Ø QT有許多版本,其中Embedded版是適合於嵌 入式系統。 113

編譯QT/Embedded v組態 Ø# . /configure -embedded arm -shared -debug -nocups --prefix=安裝目錄夾 v編譯 Ø# make

編譯QT/Embedded v組態 Ø# . /configure -embedded arm -shared -debug -nocups --prefix=安裝目錄夾 v編譯 Ø# make v安裝 Ø# make install v放置於root filesystem裡的 LD_LIBRARY_PATH裡,通常指/lib Ø 把編譯好的library,放置於root 114