顯示具有 U-Boot 標籤的文章。 顯示所有文章
顯示具有 U-Boot 標籤的文章。 顯示所有文章

2011年8月3日 星期三

Bootloader的結構

嵌入式Linux系統從軟體的角度通常可分成以下四個層次

1. 引導加載程式,包括固化在Firmware中的Boot代碼與Bootloader兩大部份。有些CPU在運行Bootloader之前先運行一段固化程式,比如X86結構的CPU就是先運行BIOS中的firmware,然後才運行硬碟的第一個分區(MBR)中的Bootloader。在大多數的嵌入式系統中並沒有Firmware,Bootloader是開啟後執行的第一個程式。

2. Linux內核,特定於嵌入式板子的訂製內核予內核的啟動參數。內核的啟動參數可以是內核默認的,或是由Bootloader傳遞給它的。

3. 文件系統,包括跟文件系統與建立於Flash內存設備上的文件系統。裏面包含了Linux系統能夠運行所需的應用程式、程式庫,比如可以給用戶提供操作Linux的控制介面的Shell、動態連接與運行時需要的glibc、uClibc ...等。

4. 用戶應用程式,他储存在文件系統中。有時在用戶應用程式與內核之間可能還會包括圖形介面像是Qtopia、MiniGUI...等。

2010年10月21日 星期四

如何編譯U-boot

1.先到SourceForge下載U-boot

2.解壓縮
$ tar jxvf u-boot-1.1.6.tar.bz2


3.看Makefile 有無自己的config
$vim Makefile

1870 sbc2410x_config: unconfig
1871         @$(MKCONFIG) $(@:_config=) arm arm920t sbc2410x NULL s3c24x0
1872
1873 scb9328_config  :       unconfig
1874         @$(MKCONFIG) $(@:_config=) arm arm920t scb9328 NULL imx
1875
1876 smdk2400_config :       unconfig
1877         @$(MKCONFIG) $(@:_config=) arm arm920t smdk2400 NULL s3c24x0
1878
1879 smdk2410_config :       unconfig
1880         @$(MKCONFIG) $(@:_config=) arm arm920t smdk2410 NULL s3c24x0
1881
1882 SX1_config :            unconfig
1883         @$(MKCONFIG) $(@:_config=) arm arm925t sx1

4.建立config.mk
$ make smdk2410_config
Configuring for smdk2410 board...

5.設定CROSS_COMPILE 路徑
$ vim Makfile

127 ifeq ($(ARCH),arm)
128 CROSS_COMPILE = arm-linux-

127 ifeq ($(ARCH),arm)
128 CROSS_COMPILE = YOURPATH/arm-linux-


5.Compile
$make
.
.
.
 /usr/local/arm/4.0.3/bin/arm-linux-objcopy --gap-fill=0xff -O srec u-boot u-boot.srec
/usr/local/arm/4.0.3/bin/arm-linux-objcopy --gap-fill=0xff -O binary u-boot u-boot.bin

完成後目錄下的u-boot.bin就是編譯好的bootloader

2010年7月19日 星期一

編譯內核時出現 "mkimage" command not found - U-Boot images will not be built

  CHK     include/linux/compile.h
  Kernel: arch/arm/boot/Image is ready
  Kernel: arch/arm/boot/zImage is ready
  UIMAGE  arch/arm/boot/uImage
"mkimage" command not found - U-Boot images will not be built
  Image arch/arm/boot/uImage is ready

原因很簡單製作uImage的mkimage找不到
以至於uImage無法生成

解決辦法:到編譯U-Boot的資料夾裡 複製回mkimage就好

東西放在u-boot-1.3.3/tools/ (記得是編譯完U-Boot的資料夾 不然裡面是沒有mkimage)

cp mkimage /usr/local/arm/4.3.2/bin/
cp mkimage comiler資料夾/bin/

ps:網路上也有人說放在/usr/bin裡  也有再加入另外加入$PATH 解決