Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2951403
  • 博文数量: 199
  • 博客积分: 1400
  • 博客等级: 上尉
  • 技术积分: 4126
  • 用 户 组: 普通用户
  • 注册时间: 2008-07-06 19:06
个人简介

半个PostgreSQL DBA,热衷于数据库相关的技术。我的ppt分享https://pan.baidu.com/s/1eRQsdAa https://github.com/chenhuajun https://chenhuajun.github.io

文章分类

全部博文(199)

文章存档

2020年(5)

2019年(1)

2018年(12)

2017年(23)

2016年(43)

2015年(51)

2014年(27)

2013年(21)

2011年(1)

2010年(4)

2009年(5)

2008年(6)

分类: LINUX

2009-05-31 00:40:56

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)"

阅读(4184) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~