免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1092 | 回复: 0
打印 上一主题 下一主题

uboot中的bootm实践之路 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-01-16 13:40 |只看该作者 |倒序浏览
自从移植了uboot,当然不是我写的移植代码, 呵呵,成功引导之后,对uboot爱不释手
参看了luofuchong大侠的贴
http://www.hhcn.com/cgi-bin/topic.cgi?forum=3&topic=808&show=0
成功记录如下:
hujun2410=> printenv
bootdelay=8
baudrate=115200
ethaddr=00:00:C0:FF:EE:08
ipaddr=59.69.75.186
serverip=59.69.74.87
netmask=255.0.0.0
bootfile="zImage"
bootargs=console=ttySAC0 root=/dev/nfs nfsroot=59.69.74.87:/public/myroot_nfs ip=5fbootcmd=tftp 30008000 zImage;go 30008000
stdin=serial
stdout=serial
stderr=serial
                                                                                   
Environment size: 366/65532 bytes
第一次:
hujun2410=> tftp 31000000 zImage.img
TFTP from server 59.69.74.87; our IP address is 59.69.75.186
Filename 'zImage.img'.
Load address: 0x31000000
Loading: #################################################################
         #################################################################
         #################################################################
         #################################################################
done
Bytes transferred = 1326664 (143e48 hex)
hujun2410=> bootm  31000000
## Booting image at 31000000 ...
   Image Name:   UnCompressed Linux Kernel-2.6.14
   Created:      2007-01-15  21:02:09 UTC
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    1326600 Bytes =  1.3 MB
   Load Address: 30008000
   Entry Point:  30008000
   Verifying Checksum ... OK
hdr->ih_load=30008000,data=31000040
OK
boot linux
                                                                                   
Starting kernel ...
                                                                                   
Uncompressing Linux................................................................Linux version 2.6.14 (root@hujunlinux) (gcc version 3.4.1) #13 Sun Jan 14 15:42:577CPU: 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
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=59.69.74.87:/public/myrfirq: clearing pending ext status 00000800
NET: Registered protocol family 1
IP-Config: Complete:
      device=eth0, addr=59.69.74.199, mask=255.0.0.0, gw=59.69.74.1,
     host=matrix4, domain=, nis-domain=arm9.net,
     bootserver=59.69.74.87, rootserver=59.69.74.87, rootpath=
Looking up port of RPC 100003/2 on 59.69.74.87
Looking up port of RPC 100005/1 on 59.69.74.87
VFS: Mounted root (nfs filesystem).
Mounted devfs on /dev
Freeing init memory: 112K
                                                                                   
Please press Enter to activate this console.
                                                                                   
                                                                                   
BusyBox v1.2.1 (2007.01.13-23:04+0000) Built-in shell (ash)
Enter 'help' for a list of built-in commands.
                                                                                   
[root@hjembed /]#
hujun2410=> imi 31000000
                                                                                   
## Checking Image at 31000000 ...
   Image Name:   UnCompressed Linux Kernel-2.6.14
   Created:      2007-01-15  21:02:09 UTC
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    1326600 Bytes =  1.3 MB
   Load Address: 30008000
   Entry Point:  30008000
   Verifying Checksum .. OK
   
   
   第二次:
   
[root@hujunlinux tftpboot]# ./mkimage -n "uboot ramdisk filesystem" \
> -A arm  -O linux -T ramdisk  -C gzip  -d today.ramfs.gz  today.uboot.ramfs.gz
Image Name:   uboot ramdisk filesystem
Created:      Tue Jan 16 12:59:49 2007
Image Type:   ARM Linux RAMDisk Image (gzip compressed)
Data Size:    2836874 Bytes = 2770.38 kB = 2.71 MB
Load Address: 0x00000000
Entry Point:  0x00000000
[root@hujunlinux tftpboot]# ./mkimage -l today.uboot.ramfs.gz
Image Name:   uboot ramdisk filesystem
Created:      Tue Jan 16 12:59:49 2007
Image Type:   ARM Linux RAMDisk Image (gzip compressed)
Data Size:    2836874 Bytes = 2770.38 kB = 2.71 MB
Load Address: 0x00000000
Entry Point:  0x00000000
[root@hujunlinux tftpboot]#
   
   
   hujun2410=> tftp 31000000  zImage.img
TFTP from server 59.69.74.87; our IP address is 59.69.75.186
Filename 'zImage.img'.
Load address: 0x31000000
Loading: #################################################################
         #################################################################
         #################################################################
         #################################################################
done
Bytes transferred = 1326664 (143e48 hex)
hujun2410=> tftp 30800000 today.uboot.ramfs.gz
TFTP from server 59.69.74.87; our IP address is 59.69.75.186
Filename 'today.uboot.ramfs.gz'.
Load address: 0x30800000
Loading: #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         ###################################
done
Bytes transferred = 2836938 (2b49ca hex)
hujun2410=> bootm 31000000  30800000
## Booting image at 31000000 ...
   Image Name:   UnCompressed Linux Kernel-2.6.14
   Created:      2007-01-15  21:02:09 UTC
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    1326600 Bytes =  1.3 MB
   Load Address: 30008000
   Entry Point:  30008000
   Verifying Checksum ... OK
hdr->ih_load=30008000,data=31000040
OK
boot linux
## Loading Ramdisk Image at 30800000 ...
   Image Name:   uboot ramdisk filesystem
   Created:      2007-01-16  17:59:49 UTC
   Image Type:   ARM Linux RAMDisk Image (gzip compressed)
   Data Size:    2836874 Bytes =  2.7 MB
   Load Address: 00000000
   Entry Point:  00000000
   Verifying Checksum ... OK
                                                                                   
Starting kernel ...
                                                                                   
Uncompressing Linux................................................................Linux version 2.6.14 (root@hujunlinux) (gcc version 3.4.1) #13 Sun Jan 14 15:42:577CPU: 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
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=59.69.74.87:/public/myrfirq: clearing pending ext status 00000800
irq: clearing subpending status 00000002
PID hash table entries: 512 (order: 9, 8192 bytes)
timer tcon=00500000, tcnt a509, tcfg 00000200,00000000, usec 00001e4c
.....
IP-Config: Complete:
      device=eth0, addr=59.69.74.199, mask=255.0.0.0, gw=59.69.74.1,
     host=matrix4, domain=, nis-domain=arm9.net,
     bootserver=59.69.74.87, rootserver=59.69.74.87, rootpath=
RAMDISK: Compressed image found at block 0
VFS: Mounted root (ext2 filesystem).
Mounted devfs on /dev
                                                                                   
Please press Enter to activate this console.
第三次:
hujun2410=> tftp 31000000 zImage.img
TFTP from server 59.69.74.87; our IP address is 59.69.75.186
Filename 'zImage.img'.
Load address: 0x31000000
Loading: #################################################################
         #################################################################
         #################################################################
         #################################################################
done
Bytes transferred = 1326664 (143e48 hex)
hujun2410=> tftp 33000000 today.uboot.ramfs.gz
TFTP from server 59.69.74.87; our IP address is 59.69.75.186
Filename 'today.uboot.ramfs.gz'.
Load address: 0x33000000
Loading: #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         ###################################
done
Bytes transferred = 2836938 (2b49ca hex)
hujun2410=> bootm 31000000 33000000
## Booting image at 31000000 ...
   Image Name:   UnCompressed Linux Kernel-2.6.14
   Created:      2007-01-15  21:02:09 UTC
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    1326600 Bytes =  1.3 MB
   Load Address: 30008000
   Entry Point:  30008000
   Verifying Checksum ... OK
hdr->ih_load=30008000,data=31000040
OK
boot linux
## Loading Ramdisk Image at 33000000 ...
   Image Name:   uboot ramdisk filesystem
   Created:      2007-01-16  17:59:49 UTC
   Image Type:   ARM Linux RAMDisk Image (gzip compressed)
   Data Size:    2836874 Bytes =  2.7 MB
   Load Address: 00000000
   Entry Point:  00000000
   Verifying Checksum ... OK
                                                                                   
Starting kernel ...
                                                                                   
Uncompressing Linux................................................................Linux version 2.6.14 (root@hujunlinux) (gcc version 3.4.1) #13 Sun Jan 14 15:42:577CPU: 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
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=59.69.74.87:/public/myrfirq: clearing pending ext status 00000800
RAMDISK driver initialized: 16 RAM disks of 8192K size 1024 blocksize
NET: Registered protocol family 1
IP-Config: Complete:
      device=eth0, addr=59.69.74.199, mask=255.0.0.0, gw=59.69.74.1,
     host=matrix4, domain=, nis-domain=arm9.net,
     bootserver=59.69.74.87, rootserver=59.69.74.87, rootpath=
RAMDISK: Compressed image found at block 0
VFS: Mounted root (ext2 filesystem).
Mounted devfs on /dev
                                                                                   
Please press Enter to activate this console.
总结:
1. bootm的作用是可以加载用uboot工具制作的kernel 和ramdisk ,这个工具就是uboot/tools/mkimage
利用他,可以 gz, bzip2, none等压缩方式压缩kernel 和ramdisk.,mkimage 在压缩时在起头部加入了0x40
字节的校验码。 所以在bootm源码中, 先从头部取出64个字节来校验, 如通过校验,再将其后面的内容
搬到内存a处,再从a处读取,启动内核。
这里要说一下,ramdisk,也可以说是我的一个发现, 刚开始用bootm成功启动是很偶然的,碰巧我
设置的参数是用nfs启动,后来试了几次,老是不行,加载ramdisk时,说Bad Magic Number
幸好我勤于记录, 才发现刚才成功了是因为用nfs启动的,猜想出现这个情况很可能与kernel类似,
因为之前我看uboot/readme有点印象。
果然 ,看了一下readme,才发现ramdisk也要用mkimage  才行。
如果你不用ramdisk作为根文件系统, 那就不用这个了。
2.kernel加载的地址是30008000, 是不能改的, 这个在include/configs/smdk2410.h中作了定义,
#define    CFG_LOAD_ADDR        0x30008000    /* default load address    */
你可以修改试试。
将ramdisk映像下载到内存的位置,可以不是0x30800000  ,可以自己指定。
3:uboot 可以自我更新 ,这是我以前所没有发现的,现在想来vivi中应该也可以的,是一个道理嘛
改天试试,先记录如下:
U-Boot 1.1.4 (Jan 16 2007 - 10:48:42)
                                                                                 
U-Boot code: 33F80000 -> 33F9DAF4  BSS: -> 33FA2164
RAM Configuration:
Bank #0: 30000000 64 MB
Nor Flash:  0 kB
Nand Flash:    64 MB
                                                                                 
In:    serial
Out:   serial
Err:   serial
Hit any key to stop autoboot:  0
hujun2410=> tftp 30005000  u-boot.bin.debug
TFTP from server 59.69.74.87; our IP address is 59.69.75.186
Filename 'u-boot.bin.debug'.
Load address: 0x30005000
Loading: ########################
done
Bytes transferred = 121840 (1dbf0 hex)
hujun2410=> nand erase 0  20000
                                                                                 
NAND erase: device 0 offset 0, size 131072 ... OK
hujun2410=> nand write 30005000  0  20000
                                                                                 
NAND write: device 0 offset 0, size 131072 ...  131072 bytes written: OK
hujun2410=> reset
                                                                                 
U-Boot 1.1.4 (Jan 16 2007 - 11:05:02)
                                                                                 
U-Boot code: 33F80000 -> 33F9DBF0  BSS: -> 33FA2260
RAM Configuration:
Bank #0: 30000000 64 MB
                                                                                 
-------------------todaygood debug ----------------
Nor Flash:  0 kB
Nand Flash:    64 MB
                                                                                 
In:    serial
Out:   serial
Err:   serial
Hit any key to stop autoboot:  0
hujun2410=>
这样一来,可比用并口烧写bootloader 快多了。
   
   
   


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/24474/showart_232878.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP