当前位置:首页 >> 信息与通信 >>

At91rm9200启动过程

系统上电,检测 BMS,选择系统的启动方式,如果 BMS 为高电平,则系统从片内 ROM 启动. AT91RM9200 的 ROM 上电后被映射到了 0x0 和 0x100000 处,在这两个地址处都可以访问到 ROM.由于 9200 的 ROM 中固化了一个 BOOTLOAER 程序. 所以 PC 从 0X0 处开始执行这个 BOOTLOAER(准确的说 应该是一级 BOOTLOADER).这个 BOOTLOER 依次完成以下步骤: 1,PLL SETUP,设置 PLLB 产生 48M 时钟频率提供给 USB DEVICE.同时 DEBUG USART 也被初始化 为 48M 的时钟频率; 2,相应模式下的堆栈设置; 3,检测主时钟源(Main oscillator) ; 4,中断控制器(AIC)的设置; 5,C 变量的初始化; 6,跳到主函数.

完成以上步骤后,我们可以认为 BOOT 过程结束,接下来的就是 LOADER 的过程,或者也可以认为 是装载二级 BOOTLOER. AT91RM9200 按照 DATAFLASH, EEPROM, 连接在外部总线上的 8 位并行 FLASH 的顺序依次来找合法的 BOOT 程序.所谓合法的指的是在这些存储设备的开始地址处连续的存放的 32 个 字节,也就是 8 条指令必须是跳转指令或者装载 PC 的指令,其实这样规定就是把这 8 条指令当作是异常 向量表来处理.必须注意的是第 6 条指令要包含将要装载的映像的大小.关于如何计算和写这条指令可以 参考用户手册.一旦合法的映像找到之后,则 BOOT 程序会把找到的映像搬到 SRAM 中去,所以映像的 大小是非常有限的, 不能超过 16K-3K 的大小. BOOT 程序完成了把合法的映像搬到 SRAM 的任务以后, 当 接下来就进行存储器的 REMAP, 经过 REMAP 之后, SRAM 从映设前的 0X200000 地址处被映设到了 0X0 地址并且程序从 0X0 处开始执行.而 ROM 这时只能在 0X100000 这个地址处看到了.至此 9200 就算完成 了一种形式的启动过程.如果 BOOT 程序在以上所列的几种存储设备中找到合法的映像,则自动初始化 DEBUG USART 口和 USB DEVICE 口以准备从外部载入映像. DEBUG 口的初始化包括设置参数 115200 对 8 N 1 以及运行 XMODEM 协议. USB DEVICE 进行初始化以及运行 DFU 协议. 对 现在用户可以从外部 (假 定为 PC 平台)载入你的映像了.在 PC 平台下,以 WIN2000 为例,你可以用超级终端来完成这个功能, 但是还是要注意你的映像的大小不能超过 13K.一旦正确从外部装载了映像,接下来的过程就是和前面一 样重映设然后执行映像了.我们上面讲了 BMS 为高电平,AT91RM9200 选择从片内的 ROM 启动的一个 过程.如果 BMS 为低电平,则 AT91RM9200 会从片外的 FLASH 启动,这时片外的 FLASH 的起始地址就 是 0X0 了, 接下来的过程和片内启动的过程是一样的, 只不过这时就需要自己写启动代码了, 至于怎么写, 大致的内容和 ROM 的 BOOT 差不多,不同的硬件设计可能有不一样的地方,但基本的都是一样的.由于 片外 FLASH 可以设计的大,所以这里编写的 BOOTLOADER 可以一步到位,也就是说不用像片内启动可

能需要 BOOT 好几级了, 目前 AT91RM9200 上使用较多的 bootloer 是 u-boot, 这是一个开放源代码的软件, 用户可以自由下载并根据自己的应用配置. 总的说来,笔者以为 AT91RM9200 的启动过程比较简单,ATMEL 的服务也不错,不但提供了片内启 动的功能,还提供了 UBOOT 可供下载.笔者写了一个 BOOTLODER 从片外的 FLASHA 启动,效果还可 以.

uboot 结构与使用 uboot 是一个庞大的公开源码的软件.他支持一些系列的 arm 体系,包含常见的外设的驱动,是一个功能 强大的板极支持包.其代码可以 http://sourceforge.net/projects/u-boot 下载

在 9200 上,为了启动 uboot,还有两个 boot 软件包,分别是 loader 和 boot.分别完成从 sram 和 flash 中的 一级 boot.其源码可以从 atmel 的官方网站下载 下载. 下载 我们知道,当 9200 系统上电后,如果 bms 为高电平,则系统从片内 rom 启动,这时 rom 中固化的 boot 程序初始化了 debug 口并向其发送'c',这时我们打开超级终端会看到 ccccc....这说明系统已经启动,同时 xmodem 协 议 已 经 启 动 , 用 户 可 以 通 过 超 级 终 端 下 载 用 户 的 bootloader . 作 为 第 一 步 , 我 们 下 载 loader.bin.loader.bin 将被下载 下载到片内的 sram 中. 这个 loder 完成的功能主要是初始化时钟, sdram 和 xmodem 下载 协议,为下载 下载和启动 uboot 做准备.当下载 loader.bin 后,超级终端会继续打印:ccccc.....这时我们就 下载了 下载 下载 可以下在 uboot 了.uboot 将被下载 sdram 中的一个地址后并把 pc 指针调到此处开始执行 uboot.接着我 下载到 下载 们就可以在终端上看到 uboot 的 shell 启动了,提示符 uboot>,用户可以 uboot>help 看到命令列表和大概 的功能.uboot 的命令包含了对内存,flash,网络,系统启动等一些命令. 如果系统上电时 bms 为低电平,则系统从片外的 flash 启动.为了从片外的 flash 启动 uboot,我们必须把 boot.bin 放到 0x0 地址出,使得从 flash 启动后首先执行 boot.bin,而要少些 boot.bin,就要先完成上面我们 讲的那些步骤,首先开始从片内 rom 启动 uboot.然后再利用 uboot 的功能完成把 boot.bin 和 uboot.gz 烧写 到 flash 中的目的,假如我们已经启动了 uboot,可以这样操作: uboot>protect off all uboot>erase all uboot>loadb 20000000 uboot>cp.b 20000000 10000000 5fff uboot>loadb 21000000 uboot>cp.b 210000000 10010000 ffff 然后系统复位,就可以看到系统先启动 boot,然后解压缩 uboot.gz,然后启动 uboot.注意,这里 uboot 必 须压缩成.gz 文件,否则会出错. 怎么编译这三个源码包呢,首先要建立一个 arm 的交叉编译环境,关于如何建立,此处不予说明.建立好

了以后,分别解压源码包,然后修改 Makefile 中的编译器项目,正确填写你的编译器的所在路径. 对 loader 和 boot,直接 make.对 uboot,第一步:make_at91rm9200dk,第二步:make.这样就会在当前目录 下分别生成*.bin 文件,对于 uboot.bin,我们还要压缩成.gz 文件. 也许有的人对 loader 和 boot 搞不清楚为什么要两个,有什么区别吗?首先有区别,boot 主要完成从 flash 中启动 uboot 的功能,他要对 uboot 的压缩文件进行解压,除此之外,他和 loader 并无大的区别,你可以 把 boot 理解为在 loader 的基础上加入了解压缩.gz 的功能而已.所以这两个并无多大的本质不同,只是他 们的使命不同而已. 特别说名的是这三个软件包都是开放源码的,所以用户可以根据自己的系统的情况修改和配置以及裁减, 打造属于自己系统的 bootloder.


相关文章:
AT91RM9200处理器引导程序及其启动方式.pdf
AT91RM9200处理器引导程序及其启动方式_电子/电路_工程科技_专业资料。第4 2卷...0的应用程序入口处 (。引导程序流向和下载/上传完成后的 映射过程 ) 映射示...
AT91RM9200+说明书_图文.pdf
AT91RM9200+说明书 - FFT-RM9200 说明书 西安傅立叶电子科
AT91RM9200处理器引导程序及其启动方式_论文.pdf
AT91RM9200处理器引导程序及其启动方式_信息与通信_工程科技_专业资料 暂无评价|0人阅读|0次下载AT91RM9200处理器引导程序及其启动方式_信息与通信_工程科技_专业...
AT91RM9200简明手册.pdf
AT91RM9200简明手册 - 中嵌科技有限公司 http://www.emsyschina.com 基于 ARM920T 的嵌入式微控制器AT91RM9200 总体特性: 内嵌...
U-Boot在AT91RM9200上的移植及启动分析_论文.pdf
U-Boot在AT91RM9200上的移植及启动分析 - 采用U-Boot1.1.2构建嵌入式系统的引导加栽程序。在对UBoot的启动工作机理和源码主要函数功能进行了简略分析后,针对...
基于ATMEL AT91RM9200的嵌入式Linux移植笔记.doc
以上三个文件时 at91rm9200 启动所需要的三个 bin,他们的实现代码并不难。 如果是你是采用 at91rm9200 的评估版,应该能得到其源码。 loader.bin 执行流程,这个...
AT91RM9200处理器引导程序及其启动方式.pdf
AT91RM9200处理器引导程序及其启动方式 - 介绍了AT91RM9200处理器[1]引导程序的整体流向,总结了AT91RM9200处理器从外部存储器引导和从内部存储器引导2种启动方式,...
基于AT91RM9200的ARM Linux的移植方法.txt
基于AT91RM9200的ARM Linux的移植方法 1.引言目前,在嵌入式系统里基于ARM微核的...(启动代码)的移植,Kernel(内核)的裁减和移植过程中,把代码分成了两部分,一部分...
AT91RM9200+AIC总结_图文.doc
AT91RM9200+AIC总结 - AT91RM9200 AIC 总结 当 A
基于AT91RM9200的嵌入式ARM开发平台.txt
片内启动时,AT91RM9200的ROM上电之后被映射到了0x0和0x100000处,在这两个地址处都可以访问ROM。AT91RM9200的ROM固化了一个Bootloarder程序,这个Bootloader主要...
AT91RM9200(DKEK) VxWorks BSP.pdf
范例项目位于 Vxworks 安装目录下的 target/proj/at91rm9200. 启动 Tornado 后,...程序流程 _sysInit In sysAlib.s Remap internal memory to 0 Disable ...
VxWorks移植到AT91RM9200的BSP定制过程 电子技术文集.doc
VxWorks移植到AT91RM9200的BSP定制过程 电子技术文集 - 欢迎
U-boot在AT91RM9200上的全线移植分析原始版.doc
下面分别分析一下这两个阶段的启动流程: 第一阶段:基本的硬件初始化,为第二阶段程序运行建立环境(cpu/ at91rm9200/start.s 文件的代码部分): ××× OUTPUT_FO...
基于AT91RM9200与LINUX2.6.26内核的嵌入式平台开发全过程.doc
At91rm9200启动过程 3页 免费 uboot代码详细分析 88页 免费如
ARM9启动机制分析.pdf
由于 ARM 芯片的制造商不同 ,其映射机制是不同的 ,现在以 ATEML 公司的 AT91RM9200 芯片为例 分析 ARM9 的启动过程AT91RM9200 通过启动模式选择器可以选择...
基于AT91RM9200和ucos-Ⅱ的一种嵌入式最小系统实现.doc
基于AT91RM9200和ucos-Ⅱ的一种嵌入式最小系统实现 - uc/os基于 AT91RM9200 和 uc/os-Ⅱ的 一种嵌入式最小系统实现 陈泽锋 1 ,张磊 2 ,张剑峰 ...
U-Boot在AT91RM9200上的移植及启动分析.doc
U-Boot在AT91RM9200上的移植及启动分析 - 龙源期刊网 http://www.qikan.com.cn U-Boot在AT91RM9200上的 移植及启动分析 作者:周庆松 史小...
VxWorks在AT91RM9200上的BSP设计_图文.pdf
VxWorks在AT91RM9200上的BSP设计 - 维普资讯 http://
基于AT91RM9200和嵌入式Linux的I2C总线驱动程序_图文.pdf
基于AT91RM9200和嵌入式Linux的I2C总线驱动程序 - 有关AT91RM9200的一些应用文档,具有很好的参考价值
基于AT91RM9200的手持设备的低功耗设计.pdf
基于AT91RM9200的手持设备的低功耗设计 - 本文以基于AT91RM9200的手持设备为例,分析了手持设备的低功耗设计的原理,同时给出了AT91RM9200手持设备上基于Linux操作系统...
更多相关标签: