Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1307980
  • 博文数量: 548
  • 博客积分: 7597
  • 博客等级: 少将
  • 技术积分: 4224
  • 用 户 组: 普通用户
  • 注册时间: 2010-12-15 13:21
个人简介

嵌入式软件工程师&&太极拳

文章分类

全部博文(548)

文章存档

2014年(10)

2013年(76)

2012年(175)

2011年(287)

分类: 嵌入式

2012-04-25 13:11:55

at91rm9200的2.4.19内核2.6.20内核及u-boot1.1.6的运行
                                                                 张驿风
                                                          2007年9月7日
     已近3年没有使用at91rm9200了,由于工作的需要,现在必须在at91rm9200ek上把linux2.4.19和linux2.6.20跑起来。
    于是找到u-boot-1.1.4,u-boot-1.1.6 ,linux2.4.19,linux2.6.20,cross-2.95.3.tar.bz2(for arm) eldk4.0(gcc4.0) 一切准备得当后,开始工作。
   一:linux2.4.17
    1.首先解压2.4.19 ,配置为at91rm9200ek,然后使用2.95.3编译得到zImage.
   2. 使用atmel提供的u-boot-1.0 加载zImage 到0x20008000.
   3. go 0x20008000 shell在提示运行内核后就不在有显示输出了,但是发现网口灯有开始闪烁的痕迹。
   4. 配置启动命令行参数如下:
     setenv bootargs root=/dev/nfs rw console=ttyS0,115200  mem=32M  
                                                   nfsroot=192.168.2.202:/home/target920t
                                                  ip=192.168.2.40:192.168.2.202:192.168.2.1:255.255.255.0::eth0:off
     重新加载运行内核,shell依然没有显示输出,但是可以ping到192.168.2.40说明内核已经跑起来了。
   5.重新检查内核代码,发现2。4的命令行空着于是把在u-boot下设置的上面的参数拷贝到内核配置里
    重新编译启动发现shell有输出了。
 二u-boot1.1.6
    1.  linux2.4.19跑起来后,想试着把2.6.20也跑起来。
   2. 配置linux2.6.20目标板是at91rm9200ek
   3. make uImage 编译出uImage
   4. 使用u-boot加载uImage并运行,内核提示cpu 机器号不对,应该是u-boot传递的r1的数据有问题。信 
     息如下:
     Uncompressing Linux.................................................................. done, booting the kernel.
     Error: unrecognized/unsupported machine ID (r1 = 0x00000106).
     Available machine support:  ID (hex)        NAME     000002c1        Atmel AT91RM9200-EK
     Please check your kernel config and/or bootloader.
 
   5.看来只有先做好u-boot1.1.6了,因为老u-boot 9200的机器id传递的有误,配置u-boot1.1.6目标板是
      at91rm9200ek, 修改config.mk里的text_base=0x21000000 ,编译u-boot.1.1.6的到u-boot.bin
     使用atmel提供的u-boot1.0加载u-boot1.1.6到9x21000000 运行没有任何反应。
   6.查找问题发祥configs/at91rm9200ek.h里没有定义:
      #define CONFIG_SKIP_LOWLEVEL_INIT       1
    造成重新初始化系统硬件(boot.bin已经初始化好了).
     加入这个定义重新编译发现u-boot.1.1.6  OK啦。
 
  7. 使用u-boot.1.1.6加载linux.2.6.20的uImage 引导成功。
  
 
   到此为止linux2.4.19,linux2.6.20,u-boot-1.1.6都在at91rm9200ek上成功跑起来。除去上面的步骤还有
  一些具体的操作  方法总结如下:
           1. 跳线9200ek板的bms引线从内部bootrom启动,上电。
           2. 配置超级终端为115200 8,n,1
          3. 看到"C"后使用xmodem方式发送loader.bin
          4. loader.bin发送完毕后接着发送u-boot.bin
          5. u-boot.bin发送完毕后直接运行,这时可以使用loadb 0x20000000  boot.bin并拷贝到0x10000000
              flash地址空间,boot.bin就是从外启动的第一级bootloader,它会初始化芯片和硬件,然后从
              0x10010000 出加载u-boot.gz到0x21f00000出运行。
          6. 拷贝完boot.bin要把u-boot.gz 拷贝到0x10010000 处。
          7. gzip -c u-boot.bin > u-boot.gz  压缩u-boot.bin
 
 
阅读(956) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~