mkimage工具讲解
生活随笔
收集整理的這篇文章主要介紹了
mkimage工具讲解
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
mkimage使用詳解
uboot源代碼的tools/目錄下有mkimage工具,這個工具可以用來制作不壓縮或者壓縮的多種可啟動映象文件。?
mkimage在制作映象文件的時候,是在原來的可執(zhí)行映象文件的前面加上一個0x40字節(jié)的頭,記錄參數(shù)所指定的信息,這樣uboot才能識別這個映象是針對哪個CPU體系結(jié)構(gòu)的,哪個OS的,哪種類型,加載內(nèi)存中的哪個位置, 入口點在內(nèi)存的那個位置以及映象名是什么
root@Glym:/tftpboot# ./mkimage
Usage: ./mkimage -l image
-l ==> list image header information
./mkimage -A arch -O os -T type -C comp -a addr -e ep -n name -d data_file[:data_file...] image
-A ==> set architecture to 'arch'
-O ==> set operating system to 'os'
-T ==> set image type to 'type'
-C ==> set compression type 'comp'
-a ==> set load address to 'addr' (hex)
-e ==> set entry point to 'ep' (hex)
-n ==> set image name to 'name'
-d ==> use image data from 'datafile'
-x ==> set XIP (execute in place)
參數(shù)說明:
-A 指定CPU的體系結(jié)構(gòu):
取值 表示的體系結(jié)構(gòu)
alpha Alpha?
arm A RM?
x86 Intel x86
ia64 IA64
mips MIPS
mips64 MIPS 64 Bit
ppc PowerPC
s390 IBM S390
sh SuperH
sparc SPARC
sparc64 SPARC 64 Bit
m68k MC68000
-O 指定操作系統(tǒng)類型,可以取以下值:
openbsd、netbsd、freebsd、4_4bsd、linux、svr4、esix、solaris、irix、sco、dell、ncr、lynxos、vxworks、psos、qnx、u-boot、rtems、artos
-T 指定映象類型,可以取以下值:
standalone、kernel、ramdisk、multi、firmware、script、filesystem
-C 指定映象壓縮方式,可以取以下值:
none 不壓縮
gzip 用gzip的壓縮方式
bzip2 用bzip2的壓縮方式
-a 指定映象在內(nèi)存中的加載地址,映象下載到內(nèi)存中時,要按照用mkimage制作映象時,這個參數(shù)所指定的地址值來下載
-e 指定映象運(yùn)行的入口點地址,這個地址就是-a參數(shù)指定的值加上0x40(因為前面有個mkimage添加的0x40個字節(jié)的頭)
-n 指定映象名
-d 指定制作映象的源文件
1)如果我們沒用mkimage對內(nèi)核進(jìn)行處理的話,那直接把內(nèi)核下載到0x30008000再運(yùn)行就行,內(nèi)核會自解壓運(yùn)行(不過內(nèi)核運(yùn)行需要一個tag來傳遞參數(shù),而這個tag建議是由bootloader提供的,在u-boot下默認(rèn)是由bootm命令建立的)。
2)如果使用mkimage生成內(nèi)核鏡像文件的話,會在內(nèi)核的前頭加上了64byte的信息,供建立tag之用。bootm命令會首先判斷bootm xxxx 這個指定的地址xxxx是否與-a指定的加載地址相同。
(1)如果不同的話會從這個地址開始提取出這個64byte的頭部,對其進(jìn)行分析,然后把去掉頭部的內(nèi)核復(fù)制到-a指定的load地址中去運(yùn)行之
(2)如果相同的話那就讓其原封不同的放在那,但-e指定的入口地址會推后64byte,以跳過這64byte的頭部。
U-BOOT下使用bootm引導(dǎo)內(nèi)核方法
一、在開始之前先說明一下bootm相關(guān)的東西。
1、 首先說明一下,S3C2410架構(gòu)下的bootm只對sdram中的內(nèi)核鏡像文件進(jìn)行操作(好像AT91架構(gòu)提供了一段從flash復(fù)制內(nèi)核鏡像的代碼, 不過針對s3c2410架構(gòu)就沒有這段代碼,雖然可以在u-boot下添加這段代碼,不過好像這個用處不大),所以請確保你的內(nèi)核鏡像下載到sdram 中,或者在bootcmd下把flash中的內(nèi)核鏡像復(fù)制到sdram中。?
2、-a參數(shù)后是內(nèi)核的運(yùn)行地址,-e參數(shù)后是入口地址。
3、
1)如果我們沒用mkimage對內(nèi)核進(jìn)行處理的話,那直接把內(nèi)核下載到0x30008000再運(yùn)行就行,內(nèi)核會自解壓運(yùn)行(不過內(nèi)核運(yùn)行需要一個tag來傳遞參數(shù),而這個tag建議是由bootloader提供的,在u-boot下默認(rèn)是由bootm命令建立的)。
2)如果使用mkimage生成內(nèi)核鏡像文件的話,會在內(nèi)核的前頭加上了64byte的信息,供建立tag之用。bootm命令會首先判斷bootm xxxx 這個指定的地址xxxx是否與-a指定的加載地址相同。
(1)如果不同的話會從這個地址開始提取出這個64byte的頭部,對其進(jìn)行分析,然后把去掉頭部的內(nèi)核復(fù)制到-a指定的load地址中去運(yùn)行之
(2)如果相同的話那就讓其原封不同的放在那,但-e指定的入口地址會推后64byte,以跳過這64byte的頭部。
二、好,接著介紹使用mkimage生成鏡像文件并下載運(yùn)行的方法。
方法一、
1、首先,用u-boot/tools/mkimage這個工具為你的內(nèi)核加上u-boot引導(dǎo)所需要的文件頭,具體做法如下:
[root@localhost tftpboot]#mkimage -n 'linux-2.6.14' -A arm -O linux -T kernel -C none -a 0x30008000 -e 0x30008000 -d zImage zImage.img
Image Name:? ?linux-2.6.14
Created:? ?? ?Fri Jan 12 17:14:50 2007
Image Type:? ?ARM Linux Kernel Image (uncompressed)
Data Size:? ? 1262504 Bytes = 1232.91 kB = 1.20 MB
Load Address: 0x30008000
Entry Point:??0x30008000?
這里解釋一下參數(shù)的意義:?
? ?? ???-A ==> set architecture to 'arch'
? ?? ???-O ==> set operating system to 'os'
? ?? ???-T ==> set image type to 'type'
? ?? ???-C ==> set compression type 'comp'
? ?? ???-a ==> set load address to 'addr' (hex)
? ?? ???-e ==> set entry point to 'ep' (hex)
? ?? ???-n ==> set image name to 'name'
? ?? ???-d ==> use image data from 'datafile'
? ?? ???-x ==> set XIP (execute in place)
??
2 、下載內(nèi)核?
U-Boot 1.1.3 (Jan 12 2007 - 16:16:36)?
U-Boot code: 33F80000 -> 33F9BAC0??BSS: -> 33F9FBAC
RAM Configuration:
Bank #0: 30000000 64 MB
Nor Flash: 512 kB
Nand Flash:??64 MB
In:? ? serial
Out:? ?serial
Err:? ?serial
Hit any key to stop autoboot:??0
sbc2410=>tftp 0x31000000 zImage.img? ?? ?? ?
TFTP from server 192.168.1.115; our IP address is 192.168.1.128
Filename 'zImage.img'.
Load address: 0x31000000
Loading: #################################################################
? ?? ???#################################################################
? ?? ???#################################################################
? ?? ???####################################################
done
Bytes transferred = 1263324 (1346dc hex)?
3.運(yùn)行??
sbc2410=>bootm 0x31000000
## Booting image at 31000000 ...
??Image Name:? ?linun-2.6.14?
??Image Type:? ?ARM Linux Kernel Image (uncompressed)
??Data Size:? ? 1263260 Bytes =??1.2 MB
??Load Address: 30008000
??Entry Point:??30008000
??Verifying Checksum ... OK
OK?
Starting kernel ...?
Uncompressing Linux.............................................................Linux version 2.6.14 (root@luofuchong) (gcc version 3.4.1) #21 Fri Oct 20 17:206CPU: ARM920Tid(wb) [41129200] revision 0 (ARMv4T)
Machine: SMDK2410
Memory policy: ECC disabled, Data cache writeback
CPU S3C2410A (id 0x32410002)
S3C2410: core 202.800 MHz, memory 101.400 MHz, peripheral 50.700 MHz
S3C2410 Clocks, (c) 2004 Simtec Electronics
CLOCK: Slow mode (1.500 MHz), fast, MPLL on, UPLL on
USB Control, (c) 2006 sbc2410
CPU0: D VIVT write-back cache
CPU0: I cache: 16384 bytes, associativity 64, 32 byte lines, 8 sets
CPU0: D cache: 16384 bytes, associativity 64, 32 byte lines, 8 sets
Built 1 zonelists
Kernel command line: console=ttySAC0 root=/dev/nfs nfsroot=192.168.1.115:/frien"irq: clearing subpending status 00000002
PID hash table entries: 512 (order: 9, 8192 bytes)
timer tcon=00500000, tcnt a509, tcfg 00000200,00000000, usec 00001e4c
Console: colour dummy device 80x30
Dentry cache hash table entries: 16384 (order: 4, 65536 bytes)
Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)
Memory: 64MB = 64MB total
Memory: 62208KB available (1924K code, 529K data, 108K init)
Mount-cache hash table entries: 512
CPU: Testing write buffer coherency: ok
softlockup thread 0 started up.
NET: Registered protocol family 16
S3C2410: Initialising architecture
SCSI subsystem initialized
usbcore: registered new driver usbfs
usbcore: registered new driver hub
S3C2410 DMA Driver, (c) 2003-2004 Simtec Electronics
DMA channel 0 at c4800000, irq 33
DMA channel 1 at c4800040, irq 34
DMA channel 2 at c4800080, irq 35
DMA channel 3 at c48000c0, irq 36
NetWinder Floating Point Emulator V0.97 (double precision)
devfs: 2004-01-31 Richard Gooch (rgooch@atnf.csiro.au)
devfs: devfs_debug: 0x0
devfs: boot_options: 0x1
yaffs Oct 18 2006 12:39:51 Installing.
Console: switching to colour frame buffer device 30x40
fb0: s3c2410fb frame buffer device
fb1: Virtual frame buffer device, using 1024K of video memory
led driver initialized
s3c2410 buttons successfully loaded
s3c2410_serial0 at MMIO 0x50000000 (irq = 70) is a S3C2410
s3c2410_serial1 at MMIO 0x50004000 (irq = 73) is a S3C2410
s3c2410_serial2 at MMIO 0x50008000 (irq = 76) is a S3C2410
io scheduler noop registered
io scheduler anticipatory registered
io scheduler deadline registered
io scheduler cfq registered
RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize
usbcore: registered new driver ub
Cirrus Logic CS8900A driver for Linux (Modified for SMDK2410)
eth0: CS8900A rev E at 0xe0000300 irq=53, no eeprom , addr: 08: 0:3E:26:0A:5B
S3C24XX NAND Driver, (c) 2004 Simtec Electronics
s3c2410-nand: mapped registers at c4980000
s3c2410-nand: timing: Tacls 10ns, Twrph0 30ns, Twrph1 10ns
NAND device: Manufacturer ID: 0xec, Chip ID: 0x76 (Samsung NAND 64MiB 3,3V 8-bi)Scanning device for bad blocks
Bad eraseblock 1884 at 0x01d70000
Creating 4 MTD partitions on "NAND 64MiB 3,3V 8-bit":
0x00000000-0x00020000 : "vivi"
0x00020000-0x00030000 : "param"
0x00030000-0x00200000 : "kernel"
0x00200000-0x04000000 : "root"
usbmon: debugfs is not available
s3c2410-ohci s3c2410-ohci: S3C24XX OHCI
s3c2410-ohci s3c2410-ohci: new USB bus registered, assigned bus number 1
s3c2410-ohci s3c2410-ohci: irq 42, io mem 0x49000000
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 2 ports detected
Initializing USB Mass Storage driver...
usbcore: registered new driver usb-storage
USB Mass Storage support registered.
usbcore: registered new driver usbmouse
drivers/usb/input/usbmouse.c: v1.6:USB HID Boot Protocol mouse driver
mice: PS/2 mouse device common for all mice
s3c2410 TouchScreen successfully loaded
UDA1341 audio driver initialized
NET: Registered protocol family 2
IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
TCP established hash table entries: 4096 (order: 2, 16384 bytes)
TCP bind hash table entries: 4096 (order: 2, 16384 bytes)
TCP: Hash tables configured (established 4096 bind 4096)
TCP reno registered
TCP bic registered
NET: Registered protocol family 1
IP-Config: Complete:
? ???device=eth0, addr=192.168.1.128, mask=255.255.255.0, gw=192.168.1.1,
? ? host=luofuchong, domain=, nis-domain=(none),
? ? bootserver=192.168.1.1, rootserver=192.168.1.115, rootpath=
Looking up port of RPC 100003/2 on 192.168.1.115
Looking up port of RPC 100005/1 on 192.168.1.115
VFS: Mounted root (nfs filesystem).
Mounted devfs on /dev
Freeing init memory: 108K
init started:??BusyBox v1.1.3 (2006.09.20-14:52+0000) multi-call binary
Starting pid 696, console /dev/tts/0: '/etc/init.d/rcS'?
Please press Enter to activate this console.
方法二、
1、首先,用u-boot/tools/mkimage這個工具為你的內(nèi)核加上u-boot引導(dǎo)所需要的文件頭,具體做法如下:
[root@localhost tftpboot]#mkimage -n 'linux-2.6.14' -A arm -O linux -T kernel -C none -a 0x30008000 -e 0x30008040 -d zImage zImage.img
Image Name:? ?linux-2.6.14
Created:? ?? ?Fri Jan 12 17:14:50 2007
Image Type:? ?ARM Linux Kernel Image (uncompressed)
Data Size:? ? 1262504 Bytes = 1232.91 kB = 1.20 MB
Load Address: 0x30008000
Entry Point:??0x30008040
2 、下載內(nèi)核?
U-Boot 1.1.3 (Jan 12 2007 - 16:16:36)?
U-Boot code: 33F80000 -> 33F9BAC0??BSS: -> 33F9FBAC
RAM Configuration:
Bank #0: 30000000 64 MB
Nor Flash: 512 kB
Nand Flash:??64 MB
In:? ? serial
Out:? ?serial
Err:? ?serial
Hit any key to stop autoboot:??0
sbc2410=>tftp 0x30008000 zImage.img? ?? ?? ?
TFTP from server 192.168.1.115; our IP address is 192.168.1.128
Filename 'zImage.img'.
Load address: 0x30008000
Loading: #################################################################
? ?? ???#################################################################
? ?? ???#################################################################
? ?? ???####################################################
done
Bytes transferred = 1263324 (1346dc hex)?
3.運(yùn)行??
sbc2410=>bootm 0x30008000
## Booting image at 30008000 ...
? ?Image Name:? ?linux-2.6.14
? ?Image Type:? ?ARM Linux Kernel Image (uncompressed)
? ?Data Size:? ? 1261056 Bytes =??1.2 MB
? ?Load Address: 30008000
? ?Entry Point:??30008040
? ?Verifying Checksum ... OK
? ?XIP Kernel Image ... OK?
內(nèi)核啟動信息省。。。。
舉例、生成boot.scr:
再舉例: 將sys_load.sh放到u-boot中的tool目錄下執(zhí)行下述命令生成鏡像;
mkimage -A ARM -O linux -T script -C none -a 0 -e 0 -n "load script" -d sys_load1.sh sys_load.img
與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖
uboot源代碼的tools/目錄下有mkimage工具,這個工具可以用來制作不壓縮或者壓縮的多種可啟動映象文件。?
mkimage在制作映象文件的時候,是在原來的可執(zhí)行映象文件的前面加上一個0x40字節(jié)的頭,記錄參數(shù)所指定的信息,這樣uboot才能識別這個映象是針對哪個CPU體系結(jié)構(gòu)的,哪個OS的,哪種類型,加載內(nèi)存中的哪個位置, 入口點在內(nèi)存的那個位置以及映象名是什么
root@Glym:/tftpboot# ./mkimage
Usage: ./mkimage -l image
-l ==> list image header information
./mkimage -A arch -O os -T type -C comp -a addr -e ep -n name -d data_file[:data_file...] image
-A ==> set architecture to 'arch'
-O ==> set operating system to 'os'
-T ==> set image type to 'type'
-C ==> set compression type 'comp'
-a ==> set load address to 'addr' (hex)
-e ==> set entry point to 'ep' (hex)
-n ==> set image name to 'name'
-d ==> use image data from 'datafile'
-x ==> set XIP (execute in place)
參數(shù)說明:
-A 指定CPU的體系結(jié)構(gòu):
取值 表示的體系結(jié)構(gòu)
alpha Alpha?
arm A RM?
x86 Intel x86
ia64 IA64
mips MIPS
mips64 MIPS 64 Bit
ppc PowerPC
s390 IBM S390
sh SuperH
sparc SPARC
sparc64 SPARC 64 Bit
m68k MC68000
-O 指定操作系統(tǒng)類型,可以取以下值:
openbsd、netbsd、freebsd、4_4bsd、linux、svr4、esix、solaris、irix、sco、dell、ncr、lynxos、vxworks、psos、qnx、u-boot、rtems、artos
-T 指定映象類型,可以取以下值:
standalone、kernel、ramdisk、multi、firmware、script、filesystem
-C 指定映象壓縮方式,可以取以下值:
none 不壓縮
gzip 用gzip的壓縮方式
bzip2 用bzip2的壓縮方式
-a 指定映象在內(nèi)存中的加載地址,映象下載到內(nèi)存中時,要按照用mkimage制作映象時,這個參數(shù)所指定的地址值來下載
-e 指定映象運(yùn)行的入口點地址,這個地址就是-a參數(shù)指定的值加上0x40(因為前面有個mkimage添加的0x40個字節(jié)的頭)
-n 指定映象名
-d 指定制作映象的源文件
1)如果我們沒用mkimage對內(nèi)核進(jìn)行處理的話,那直接把內(nèi)核下載到0x30008000再運(yùn)行就行,內(nèi)核會自解壓運(yùn)行(不過內(nèi)核運(yùn)行需要一個tag來傳遞參數(shù),而這個tag建議是由bootloader提供的,在u-boot下默認(rèn)是由bootm命令建立的)。
2)如果使用mkimage生成內(nèi)核鏡像文件的話,會在內(nèi)核的前頭加上了64byte的信息,供建立tag之用。bootm命令會首先判斷bootm xxxx 這個指定的地址xxxx是否與-a指定的加載地址相同。
(1)如果不同的話會從這個地址開始提取出這個64byte的頭部,對其進(jìn)行分析,然后把去掉頭部的內(nèi)核復(fù)制到-a指定的load地址中去運(yùn)行之
(2)如果相同的話那就讓其原封不同的放在那,但-e指定的入口地址會推后64byte,以跳過這64byte的頭部。
U-BOOT下使用bootm引導(dǎo)內(nèi)核方法
一、在開始之前先說明一下bootm相關(guān)的東西。
1、 首先說明一下,S3C2410架構(gòu)下的bootm只對sdram中的內(nèi)核鏡像文件進(jìn)行操作(好像AT91架構(gòu)提供了一段從flash復(fù)制內(nèi)核鏡像的代碼, 不過針對s3c2410架構(gòu)就沒有這段代碼,雖然可以在u-boot下添加這段代碼,不過好像這個用處不大),所以請確保你的內(nèi)核鏡像下載到sdram 中,或者在bootcmd下把flash中的內(nèi)核鏡像復(fù)制到sdram中。?
2、-a參數(shù)后是內(nèi)核的運(yùn)行地址,-e參數(shù)后是入口地址。
3、
1)如果我們沒用mkimage對內(nèi)核進(jìn)行處理的話,那直接把內(nèi)核下載到0x30008000再運(yùn)行就行,內(nèi)核會自解壓運(yùn)行(不過內(nèi)核運(yùn)行需要一個tag來傳遞參數(shù),而這個tag建議是由bootloader提供的,在u-boot下默認(rèn)是由bootm命令建立的)。
2)如果使用mkimage生成內(nèi)核鏡像文件的話,會在內(nèi)核的前頭加上了64byte的信息,供建立tag之用。bootm命令會首先判斷bootm xxxx 這個指定的地址xxxx是否與-a指定的加載地址相同。
(1)如果不同的話會從這個地址開始提取出這個64byte的頭部,對其進(jìn)行分析,然后把去掉頭部的內(nèi)核復(fù)制到-a指定的load地址中去運(yùn)行之
(2)如果相同的話那就讓其原封不同的放在那,但-e指定的入口地址會推后64byte,以跳過這64byte的頭部。
二、好,接著介紹使用mkimage生成鏡像文件并下載運(yùn)行的方法。
方法一、
1、首先,用u-boot/tools/mkimage這個工具為你的內(nèi)核加上u-boot引導(dǎo)所需要的文件頭,具體做法如下:
[root@localhost tftpboot]#mkimage -n 'linux-2.6.14' -A arm -O linux -T kernel -C none -a 0x30008000 -e 0x30008000 -d zImage zImage.img
Image Name:? ?linux-2.6.14
Created:? ?? ?Fri Jan 12 17:14:50 2007
Image Type:? ?ARM Linux Kernel Image (uncompressed)
Data Size:? ? 1262504 Bytes = 1232.91 kB = 1.20 MB
Load Address: 0x30008000
Entry Point:??0x30008000?
這里解釋一下參數(shù)的意義:?
? ?? ???-A ==> set architecture to 'arch'
? ?? ???-O ==> set operating system to 'os'
? ?? ???-T ==> set image type to 'type'
? ?? ???-C ==> set compression type 'comp'
? ?? ???-a ==> set load address to 'addr' (hex)
? ?? ???-e ==> set entry point to 'ep' (hex)
? ?? ???-n ==> set image name to 'name'
? ?? ???-d ==> use image data from 'datafile'
? ?? ???-x ==> set XIP (execute in place)
??
2 、下載內(nèi)核?
U-Boot 1.1.3 (Jan 12 2007 - 16:16:36)?
U-Boot code: 33F80000 -> 33F9BAC0??BSS: -> 33F9FBAC
RAM Configuration:
Bank #0: 30000000 64 MB
Nor Flash: 512 kB
Nand Flash:??64 MB
In:? ? serial
Out:? ?serial
Err:? ?serial
Hit any key to stop autoboot:??0
sbc2410=>tftp 0x31000000 zImage.img? ?? ?? ?
TFTP from server 192.168.1.115; our IP address is 192.168.1.128
Filename 'zImage.img'.
Load address: 0x31000000
Loading: #################################################################
? ?? ???#################################################################
? ?? ???#################################################################
? ?? ???####################################################
done
Bytes transferred = 1263324 (1346dc hex)?
3.運(yùn)行??
sbc2410=>bootm 0x31000000
## Booting image at 31000000 ...
??Image Name:? ?linun-2.6.14?
??Image Type:? ?ARM Linux Kernel Image (uncompressed)
??Data Size:? ? 1263260 Bytes =??1.2 MB
??Load Address: 30008000
??Entry Point:??30008000
??Verifying Checksum ... OK
OK?
Starting kernel ...?
Uncompressing Linux.............................................................Linux version 2.6.14 (root@luofuchong) (gcc version 3.4.1) #21 Fri Oct 20 17:206CPU: ARM920Tid(wb) [41129200] revision 0 (ARMv4T)
Machine: SMDK2410
Memory policy: ECC disabled, Data cache writeback
CPU S3C2410A (id 0x32410002)
S3C2410: core 202.800 MHz, memory 101.400 MHz, peripheral 50.700 MHz
S3C2410 Clocks, (c) 2004 Simtec Electronics
CLOCK: Slow mode (1.500 MHz), fast, MPLL on, UPLL on
USB Control, (c) 2006 sbc2410
CPU0: D VIVT write-back cache
CPU0: I cache: 16384 bytes, associativity 64, 32 byte lines, 8 sets
CPU0: D cache: 16384 bytes, associativity 64, 32 byte lines, 8 sets
Built 1 zonelists
Kernel command line: console=ttySAC0 root=/dev/nfs nfsroot=192.168.1.115:/frien"irq: clearing subpending status 00000002
PID hash table entries: 512 (order: 9, 8192 bytes)
timer tcon=00500000, tcnt a509, tcfg 00000200,00000000, usec 00001e4c
Console: colour dummy device 80x30
Dentry cache hash table entries: 16384 (order: 4, 65536 bytes)
Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)
Memory: 64MB = 64MB total
Memory: 62208KB available (1924K code, 529K data, 108K init)
Mount-cache hash table entries: 512
CPU: Testing write buffer coherency: ok
softlockup thread 0 started up.
NET: Registered protocol family 16
S3C2410: Initialising architecture
SCSI subsystem initialized
usbcore: registered new driver usbfs
usbcore: registered new driver hub
S3C2410 DMA Driver, (c) 2003-2004 Simtec Electronics
DMA channel 0 at c4800000, irq 33
DMA channel 1 at c4800040, irq 34
DMA channel 2 at c4800080, irq 35
DMA channel 3 at c48000c0, irq 36
NetWinder Floating Point Emulator V0.97 (double precision)
devfs: 2004-01-31 Richard Gooch (rgooch@atnf.csiro.au)
devfs: devfs_debug: 0x0
devfs: boot_options: 0x1
yaffs Oct 18 2006 12:39:51 Installing.
Console: switching to colour frame buffer device 30x40
fb0: s3c2410fb frame buffer device
fb1: Virtual frame buffer device, using 1024K of video memory
led driver initialized
s3c2410 buttons successfully loaded
s3c2410_serial0 at MMIO 0x50000000 (irq = 70) is a S3C2410
s3c2410_serial1 at MMIO 0x50004000 (irq = 73) is a S3C2410
s3c2410_serial2 at MMIO 0x50008000 (irq = 76) is a S3C2410
io scheduler noop registered
io scheduler anticipatory registered
io scheduler deadline registered
io scheduler cfq registered
RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize
usbcore: registered new driver ub
Cirrus Logic CS8900A driver for Linux (Modified for SMDK2410)
eth0: CS8900A rev E at 0xe0000300 irq=53, no eeprom , addr: 08: 0:3E:26:0A:5B
S3C24XX NAND Driver, (c) 2004 Simtec Electronics
s3c2410-nand: mapped registers at c4980000
s3c2410-nand: timing: Tacls 10ns, Twrph0 30ns, Twrph1 10ns
NAND device: Manufacturer ID: 0xec, Chip ID: 0x76 (Samsung NAND 64MiB 3,3V 8-bi)Scanning device for bad blocks
Bad eraseblock 1884 at 0x01d70000
Creating 4 MTD partitions on "NAND 64MiB 3,3V 8-bit":
0x00000000-0x00020000 : "vivi"
0x00020000-0x00030000 : "param"
0x00030000-0x00200000 : "kernel"
0x00200000-0x04000000 : "root"
usbmon: debugfs is not available
s3c2410-ohci s3c2410-ohci: S3C24XX OHCI
s3c2410-ohci s3c2410-ohci: new USB bus registered, assigned bus number 1
s3c2410-ohci s3c2410-ohci: irq 42, io mem 0x49000000
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 2 ports detected
Initializing USB Mass Storage driver...
usbcore: registered new driver usb-storage
USB Mass Storage support registered.
usbcore: registered new driver usbmouse
drivers/usb/input/usbmouse.c: v1.6:USB HID Boot Protocol mouse driver
mice: PS/2 mouse device common for all mice
s3c2410 TouchScreen successfully loaded
UDA1341 audio driver initialized
NET: Registered protocol family 2
IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
TCP established hash table entries: 4096 (order: 2, 16384 bytes)
TCP bind hash table entries: 4096 (order: 2, 16384 bytes)
TCP: Hash tables configured (established 4096 bind 4096)
TCP reno registered
TCP bic registered
NET: Registered protocol family 1
IP-Config: Complete:
? ???device=eth0, addr=192.168.1.128, mask=255.255.255.0, gw=192.168.1.1,
? ? host=luofuchong, domain=, nis-domain=(none),
? ? bootserver=192.168.1.1, rootserver=192.168.1.115, rootpath=
Looking up port of RPC 100003/2 on 192.168.1.115
Looking up port of RPC 100005/1 on 192.168.1.115
VFS: Mounted root (nfs filesystem).
Mounted devfs on /dev
Freeing init memory: 108K
init started:??BusyBox v1.1.3 (2006.09.20-14:52+0000) multi-call binary
Starting pid 696, console /dev/tts/0: '/etc/init.d/rcS'?
Please press Enter to activate this console.
方法二、
1、首先,用u-boot/tools/mkimage這個工具為你的內(nèi)核加上u-boot引導(dǎo)所需要的文件頭,具體做法如下:
[root@localhost tftpboot]#mkimage -n 'linux-2.6.14' -A arm -O linux -T kernel -C none -a 0x30008000 -e 0x30008040 -d zImage zImage.img
Image Name:? ?linux-2.6.14
Created:? ?? ?Fri Jan 12 17:14:50 2007
Image Type:? ?ARM Linux Kernel Image (uncompressed)
Data Size:? ? 1262504 Bytes = 1232.91 kB = 1.20 MB
Load Address: 0x30008000
Entry Point:??0x30008040
2 、下載內(nèi)核?
U-Boot 1.1.3 (Jan 12 2007 - 16:16:36)?
U-Boot code: 33F80000 -> 33F9BAC0??BSS: -> 33F9FBAC
RAM Configuration:
Bank #0: 30000000 64 MB
Nor Flash: 512 kB
Nand Flash:??64 MB
In:? ? serial
Out:? ?serial
Err:? ?serial
Hit any key to stop autoboot:??0
sbc2410=>tftp 0x30008000 zImage.img? ?? ?? ?
TFTP from server 192.168.1.115; our IP address is 192.168.1.128
Filename 'zImage.img'.
Load address: 0x30008000
Loading: #################################################################
? ?? ???#################################################################
? ?? ???#################################################################
? ?? ???####################################################
done
Bytes transferred = 1263324 (1346dc hex)?
3.運(yùn)行??
sbc2410=>bootm 0x30008000
## Booting image at 30008000 ...
? ?Image Name:? ?linux-2.6.14
? ?Image Type:? ?ARM Linux Kernel Image (uncompressed)
? ?Data Size:? ? 1261056 Bytes =??1.2 MB
? ?Load Address: 30008000
? ?Entry Point:??30008040
? ?Verifying Checksum ... OK
? ?XIP Kernel Image ... OK?
內(nèi)核啟動信息省。。。。
舉例、生成boot.scr:
mkimage在 .\DVRRDK_03.00.00.00\ti_tools\linux_lsp\linux-psp-dvr-04.04.00.01\src\u-boot-04.04.00.01\tools?下
./mkimage -A arm -O linux -T script -C none -a 0 -e 0 -n "Beagleboard boot script" -d ~/work/boot.cmd boot.scr
?
/boot.cmd 文件如下
setenv bootargs 'console=ttyO2,115200n8 root=/dev/mmcblk0p2 rw mem=256M notifyk.vpssm3_sva=0xBFD00000 vram=20M ip=dhcp'
fatload mmc 1 0x80009000 uImage
bootm 0x80009000
再舉例: 將sys_load.sh放到u-boot中的tool目錄下執(zhí)行下述命令生成鏡像;
mkimage -A ARM -O linux -T script -C none -a 0 -e 0 -n "load script" -d sys_load1.sh sys_load.img
與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖
總結(jié)
以上是生活随笔為你收集整理的mkimage工具讲解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Bootloader加载过程分析
- 下一篇: 数据转移-从MySQL到Hive