skykiker
2009/5/31
本文简单分析uboot for zaurus(即pdaXrom r198版的uboot)的安装和引导过程。其中涉及到Zaurus的OK刷机模式,关于该模式的说明请参考我的另一篇文章《Zaurus的4种操作模式详解》。
1.安装uboot和Emergency System 前提是你的系统中装的是Sharp原装的bootloader,否则以下方法不适用你。
先下载pdaXrom r198版带的uboot。
解压后有下面5个文件,将它们放到SD/CF卡的根目录,进入OK模式,执行"升级"就可以将uboot和Emergency System安装的Zaurus机器上了。
updater.sh
updater.pro
u-boot.bin
emergenc.img
autoboot.sh
上面有一个updater.pro的文本文件,应该就是升级程序updater.sh的配置文件。
updater.sh:
U-BOOT ,BIN,0x00000000,320
EMERGENC,IMG,0x00060000,5376
从这个配置文件不难看出:升级后uboot被放在NAND开头的320K位置,Emergency System从后面的384k(即0x00060000)开始,占用5376K空间。
uboot安装后,覆盖了zaurus上Sharp原装的bootloader,这2个bootloader是不兼容的,所以做完这一步Zaurus原来的系统就挂了。不过不用担心,可以用uboot安装新的系统上去。
2.安装kernal和rootfs 安装kernal和rootfs的方法如下:
1) 拔掉Zaurus的交流适配器,同时取出电池
2) 将新的kernal和rootfs复制到SD卡或CF卡的根目录
可以从下面的地址获取pdaXrom 1.1.0 r198的安装文件。
http://distro.ibiblio.org/pub/linux/distributions/pdaxrom/download/r198/c1000-c3x00/pdaXrom-1.1.0r198-Kathrin-akita-current.zip
解压后有下面几个文件。
kernel.img
rootfs.img
autoboot.sh
3) 按住键盘上的Ok键后装上电池或者插上电源适配器,注意不要松开Ok键
记住现在是用刚才安装的uboot引导系统,uboot启动时会检查OK键有没有按下去,如果按了则引导Emergency System(在NAND的0x00060000位置),否则引导通常的Linux内核(在NAND的0x005a0000位置)。实现参照uboot的源代码。
include/configs/akita.h:
#define CONFIG_BOOTCOMMAND \
"if testkey 101 ; " \
"then " \
"nand read.logical 0xa1000000 0x00060000 0x00540000; " \
"setenv bootargs console=ttyS0,115200 console=tty1 root=/dev/ram rw fbcon=rotate:1 ramdisk_size=8192; " \
"bootm; " \
"else " \
"nand read 0xa1000000 0x005a0000 0x00160000; " \
"setenv bootargs console=ttyS0,115200 console=tty1 root=/dev/mtdblock5 rootfstype=jffs2 fbcon=rotate:1; " \
"bootm; " \
"fi"
4) 按住Ok键10秒左右后,系统会进入Emergency System,进入这个系统后可以松开Ok键
进入Emergency System后,会自动执行脚本autoboot.sh。autoboot.sh将kernel.img和rootfs.img分别安装到mtd1和mtd5分区。
autoboot.sh:
...
nandlogical /dev/mtd1 WRITE 0x5a0000 0x160000 kernel.img
...
nandwrite /dev/mtd2 rootfs.img
...
5) 系统询问安装问题时,回答y,按下Enter键后,安装开始
6) 安装完成后,系统会自动启动
这个时候,uboot就会跳转到刚写到NAND 0x5a0000处的kernel.img引导pdaXrom系统。只要你不在加电时按OK键。
安装完后NAND的结构可参考uboot的源代码
include/configs/akita.h:
#define MTDPARTS_DEFAULT "mtdparts=laze-0:256k(U-Boot)ro,128k(U-BootEnv),5376k(Emergency),1408k(Kernel),-(JFFS2)"
阅读(4161) | 评论(0) | 转发(0) |