ARM仿真器-foxICE 设为首页   |   加入收藏夹   |   网站地图         
  站内搜索:
 
http://www.foxice.net
最新下载_foxICE
ARM7TDMI R3内核
ARM7EJS内核
ARM946E-S内核
ARM966E-S内核
ARM9TDMI内核
ARM940T内核
ARM指令集速查卡
ARM925T内核(TI925T)

更多 >> 

 技术专栏RSS订阅

   首页>技术专栏>Redboot >Redboot 安装历程

Redboot 安装历程

作者:Samfei 1 2

简介 : 本文是本人为工作需要而试验 redboot 的一个过程 , 我只是记录了试验的过程 , 希望能对别人使用 redboot 有些帮助 . 本文没有系统性介绍 redboot, 相关知识请参考其他资料 . 文章中具体修改的内容详细可以看附件 patch.

一 目标
公司购买了 EV40 开发板 :CPU AT 91M 40800, 内存 2M + 2M ( 扩展 ), FLASH 2M + 4M ( 扩展 ), RTl8019AS 芯片 , FLASH 是 AM29LV160TE( 2M )
公司自己开发自用的板子 WX10: CPU AT 91M 40800, 内存 4M , FLASH 8M , RTl8019AS 芯片 , FLASH 是 AM29LV641( 8M ) 及其他应用功能芯片 .
我主要的工作是开发系统的驱动软件 , 因此需要随时修改内核驱动 , 并调试 , 因此装入和启动的速度对工作效率是比较关键的 . 因为用 hitool 烧录方式启动 uclinux 内核方式需要 6~10 分种一次 . 听”嵌入式 linux 群” kingmonkey 说可以使用 redboot, 因此决定试试 .

二 环境建立
redboot 是ecos操作系统的一部分 , 也是ecos操作系统最小配置的版本 . 因此要使用redboot, 必须建立ecos操作系统环境 . 到网站http://sources.redhat.com/ecos/
查找其安装方法 , 按照说明采用了其网络方式安装 , 使用 :
# wget --passive-ftp ftp://ecos.sourceware.org/pub/ecos/ecos-install.tcl
下载安装命令 , 并运行 :
# sh ecos-install.tcl
安装了 ecos 2.0. 我把这个安装在 /rh80/ecos 下 .ECOS_REPOSITORY 就是 /rh80/ecos/ecos-2.0.
运行 :
# cd /rh80/ecos
# . ecosenv.sh
设置环境变量 .
由于 linux 操作系统中已经安装了
http://www.uclinux.org/pub/uClinux/m68k-elf-tools/arm-elf-tools-20030314.sh
因此我安装 ecos 时 , 没有选择安装 arm-elf GNU tools 工具 .

三 编译 redboot
由于 ecos 是个可配置的操作系统 , 因此下载安装的实际就是一个配置的仓库 , 要编译redboot 就按照需要进行配置 . 配置的方式使用配置工具 ecosconfig, 也有图形方式配置工具的 , 我没有用 , 只用字符界面的ecosconfig.
由于 EV40 类似 EB40, 因此我的命令是 :
# mkdir rom
# cd rom
# ecosconfig new eb40 redboot
#ecosconfig import /rh80/ecos/ecos-2.0/packages/hal/arm/at91/eb40/current/misc/redboot_ROMRAM.ecm
#ecosconfig tree
#make
结果编译出现错误 .
因此怀疑编译器不兼容 , 于是重新安装 ecos, 此时选择 arm-elf 工具 . 此时运行 . Ecosenv.sh 时 , 新下载的工具的路径包含在 PATH 中 , 重新进行了 redboot 生成和编译 , 正确生成了 install/bin/redboot.bin 等文件 .
将 redboot.bin 用 hitool 烧写到 EV40 的 flash 中 , 启动 , 没有任何反应 . 重新选择 redboot 的 ROM 版 :
# ecosconfig new eb40 redboot
#ecosconfig import /rh80/ecos/ecos-2.0/packages/hal/arm/at91/eb40/current/misc/redboot_ROM.ecm
#ecosconfig tree
#make
编译 , 烧录 , 运行 , 仍然无反应 .

四 配置硬件参数
由于 EB40 和 EV40 不完全相同 , 因此首先检查硬件参数的配置 , 找到配置的文件是 : ecos/packages/hal/arm/at91/eb40/current/include/hal_platform_ints.h
主要是 AT91_EBI 配置参数表 , EV40 是 :
_InitMemory:
.long 0x01002529 @ 0x01000000, 16MB, 2 cycles added after transfer, 16-bit, 6 wait states
.long 0x 020020a 1 @ 0x02000000, 16MB, 0x02002121 0 cycles added after transfer, 16-bit, 1 wait state
.long 0x03002529 @ unused
.long 0x40000000 @ unused
.long 0x02202021 @ unused ,CS 4
.long 0x02302021 @ unused ,CS 5
.long 0x60000000 @ unused
.long 0x70000000 @ unused
.long 0x00000001 @ REMAP commande
.long 0x00000006 @ 7 memory regions, standard read
.long AT91_EBI @ EBI address
.long 10f // address where to jump

WX10 的配置是 :

_InitMemory:
.long 0x01002529 // 0x01000000, 16MB, 2 cycles after transfer, 16-bit, 6 wait states
.long 0x 020020a 1 // 0x02000000, 16MB, 0 cycles after transfer, 16-bit, 1 wait state
.long 0x03002529 // unused
.long 0x30000000 // unused
.long 0x40000000 // unused
.long 0x50000000 // unused
.long 0x60000000 // unused
.long 0x70000000 // unused
.long 0x00000001 // REMAP command
.long 0x00000000 // 7 memory regions, standard read
.long AT91_EBI // External Bus Interface address
.long 10f // address where to jump
这里我要说明的一点是 EV40 和 WX10 的区别 , EV40 是用到 CS6 的 , 而 WX10 是不用 CS6 的 , EV40 有扩展内存 , 由 CS4 和 CS5 配置 . EV40 网卡地址是 0x40010000, 而 WX10 的网卡地址是 0x03210000.
修改了配置后 , 编译 , 烧录 , 运行 , 仍然无反应 .

向 kingmonkey 讨叫 ,kingmonkey 认为可能是 ecos 版本不是最新的缘故 , 建议用 cvs 下载最新的版本 . 用 ecos-install.tcl 是最新的稳定版 , 但不是最新的 .

五 安装cvs版ecos
安装方法参考网站中 Anonymous CVS:
# cd /rh80/ecos
# cvs -d server:anoncvs@ecos.sourceware.org:/cvs/ecos login
口令任意
# cvs -z3 -d server:anoncvs@ecos.sourceware.org:/cvs/ecos co -P ecos
这样呢就下载的最新的 ecos, 目录是 /rh80/ecos/ecos, 修改 ecosenv.sh 中
ECOS_REPOSITORY=/rh80/ecos/ecos/packages ; export ECOS_REPOSITORY
这样呢 , 就使用最新用 cvs 下载的 ecos 了 . 原来的 ecos-2.0 仍然保留 , 并使用其下面的 ecosconfig 等工具 , 不用重新去下载 ecosconfig 工具了 .

六 重新编译redboot
安装第三节的方法重新编译 redboot, 但仍然无法工作 . 因此只好去看资料和代码 . 并且下载了网站上预编译好的 reboot.bin 来试 , 仍然没有任何反应 .
仔细阅读了 ecos 参考手册 :
http://ecos.sourceware.org/docs-latest/ref/ecos-ref.html
中关于 Installation and Testing 部分中 ARM/ARM7 Atmel AT91 Evaluation Boards (EBXX) 的资料 , 它运行 redboot 的方式是通过 angel 和 arm-elf-gdb 的方式的 , 因此我就想先按照其方式试一下 .
把 angel 烧录到 EV40 板上 , 然后编译出 redboot 的 RAM 板 ( 上面命令中 redboot_ROM.ecm 改成 redboot_RAM.ecm 就是 ). 然后安装手册 , 成功启动了 redboot! 结合前面看了 redboot 的一些代码 , 怀疑缺省的 EV40 配置是只能在 angel 方式下启动的 .

七 修改redboot配置
经过阅读其文件 , 发现编译命令文件 install/lib/target.ld 中 :
__reserved_bootmon = 0x01000000; . = __reserved_bootmon + 0x10000;
将运行开始位置后移了一个 0x10000, 这个可能是造成不能直接 flash 启动的原因 . 经过检查 , 修改了多处跟这个有关的地方 :
1. ecos/packages/hal/arm/at91/eb40/current/include/hal_platform_ints.h 中 0x1010000 à 0x100000
2. ecos/packages/hal/arm/at91/eb40/current/include/pkgconf/mlt_arm_at91_eb40_rom.h 中
#define CYGMEM_SECTION_reserved_bootmon_SIZE (0x10000) 改成
#define CYGMEM_SECTION_reserved_bootmon_SIZE (0x00000)
3. ecos/packages/hal/arm/at91/eb40/current/include/pkgconf/mlt_arm_at91_eb40_rom.ldi 中

CYG_LABEL_DEFN(__reserved_bootmon) = 0x01000000; . = CYG_LABEL_DEFN(__reserved_bootmon) + 0x10000;

1 2

立即下载:
点击下载
相关文档
 
下载说明:
  1. 未经本站明确许可,任何网站不得非法盗链及抄袭本站资源!
 

首页 | 产品介绍 | 技术支持 | 下载中心 | 技术专栏 | 关于我们 | 联系我们
电话:86-755-82798083   82796301   传真:86-755-82799007    Email:sales@foxice.net   sales6@foxice.net
在线咨询:QQ:346466907   MSN:sales6@foxice.net   ini3000@msn.com

© 2006 Foxice.net 版权所有