AT91SAM9261 bootloader设计分析

更新时间:2023-10-17 02:14:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

AT91SAM9261 bootloader设计分析

我们选用AT91SAM9261S的datasheet 提供了图5-1 Boot Program Algorithm Flow Diagram。

图5-1 Boot Program Algorithm Flow Diagram

l 如何选择存储器容量大小?

通常,在嵌入式领域里的Boot Loader中的 Eboot 二进制文件为100KB以上,WINCE 操作系统镜像文件大小约为27MB左右,还有我们的应用软件可执行文件10MB左右的空间。这三部分的内容设备掉电是不能丢失的,所以我们只能选用非易失存储设备。选用大容量的NOR Flash 价格非常昂贵。所以在嵌入式系统设计中,常用的方法就是选用小容量的Nor 或 Data Flash 来存贮Boot Loader;大容量的Nand Flash 存储操作系统镜像和应用软件代码。我们选用了AT45DB32C 4MB SPI 接口的Data Flash 和 K9F1208U0B 64MB Nand Flash。

我们分析图5-1,设备开始上电,AT91SAM9261S可以选择DataFlash 或NandFlash启动,但是ATMEL官方解释AT91SAM9261S 从NandFlash 启动这个功能还在完善,现在提供的芯片不能提供NandFlash启动。所以我们只能选择

DataFlash启动。第一次存储器 DataFlash 里面都没有二进程执行代码,AT91SAM9261S 处理器就会执行SAM-BA Boot 启动,利用ATMEL 官方提供的SAM-BA 软件烧写Boot Loader ,包含firstboot.nb0 和Eboot.nb0。 l Boot Loader 是如何引导启动Windows CE?

Boot Loader 中Eboot大小有100KB以上,我们选用的DataFlash 容量上可以满足,但是DataFlash 不能XIP就地执行代码,只能把Eboot存储在DataFlash中,但是不能在DataFlash中执行Eboot程序 ;我们可能就想到如何把Eboot 拷贝到系统上的SDRAM存贮器,SDRAM能执行Eboot程序,但是SDRAM存储器上电运行代码前必须要初始化SDRAM ,不能依赖还没有执行的Eboot来初始化SDRAM。为了解决这个问题,AT91SAM9261S 处理器提供了16KB大小的SRAM ,SRAM 特性可以XIP代码。我们打开PB(微软提供的Platform Builder ,主要用来定制Windows CE 操作系统)安装目录下源代码。图5-2 PB目录部分截图。

图5-2 PB目录部分截图

PB目录部分截图告诉了我们BootLoader 分为二部分,正好是我们通过SAM-BA软件烧写Boot Loader 的二部分。Firstboot为 第一级BootLoader ,编写这部分代码,必须控制编译后二进制文件大小在16KB以内,由图5-1可以知道,AT91SAM9261S处理器会自动把DataFlash 前16KB这部分代码自动拷贝到内部16KB的SRAM 中自动执行。Firstboot初始化SDRAM,把DataFlash中Eboot这部分代码拷贝到SDRAM中,并调转到SDRAM首地址,开始自动执行Eboot。第二级启动称为Eboot ,源代码在图5-2Eboot文件夹里面。通过Firstboot引导启动了Eboot ,Eboot就实现烧写Windows CE镜像和引导Windows CE自动启动等功能。

在嵌入式系统开发中BootLoader常常时嵌入式系统开发中可能遇到的第一个技术难点。应用程序运行环境能否正确构建,内核能否启动成功,都取决于Boot Loader能否正确工作。一个功能完善的嵌入式系统Boot Loader还要求能提供系统更新的能力,以及为了实现这一操作所需要的一个简单的命令控制台,下面我们就具体分析Boo tLoader的工作流程与原理。

本文来源:https://www.bwwdw.com/article/9f2f.html

Top