首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

闪存在嵌入式Linux系统中的应用 02

闪存在嵌入式Linux系统中的应用 02

2.1 启动设计
  在该系统中,结合微控制器提供的功能和各种闪存的特点,可以综合使用不同类型的闪存,选择不同的启动方式。AT91SAM9261内部集成了启动ROM,其中固化了支持启动和操作闪存的程序。流程图如图1所示。当AT91SAM9261的启动模式选择(BMS)引脚在复位期间为高电平时,会运行内部固化的启动程序;否则运行外部NORFLASH中的程序。从流程图中可以看出,启动程序支持从串行闪存中启动。这是通过启动程序将串行闪存中的代码加载到内部SRAM中实现的。由于内部SRAM容量有限(依芯片型号不同,有16 KB和160 KB两种),像U-BOOt(编译后有170KB左右,与配置有关)这样的功能,若较全面地启动加载程序(Bootloader)是不能直接从串行闪存中启动的,而只能选择两级启动程序,先从串行闪存中加载一段尽可能小的一级启动程序(通常只有4~5 KB).用于初始化关键的硬件(如SDRAM控制器。由于时序、数据线宽等参数是可变的,不可能在AT91SAM9261内部固化的启动程序中提供通用的SDRAM控制器初始化代码),然后再由一级启动程序把功能较全面的二级启动程序载入到容量足够大的SDRAM中运行,以启动系统。从NORFLASH启动时会跳过AT91SAM9261内部固化的启动程序,系统复位后执行的第一条指行就是NORFLASH中的。此时,启动程序可以只有1级,当然,为了使软件和串行闪存启动方式有较好的兼容性,也仍然可以采用两级启动程序,这样只需简单修改第一级启动程序即可适用于两种不同的硬件启动配置,为硬件设计留下更多的选择空间。由于AT91SAM9261本身的原因,从NORFLASH启动是实现宽温工作的惟一选择(AT91SAM9G10无此问题)。图2显示了不同的启动配置。

  在这个AT91SAM9261系统中,分别采用了2 MB的DATAFLASH或2 MB的NORFLASH作为启动存储器,由BMS引脚选择具体使用何种启动方式。闪存中的地址划分如图3所示,其中的bootstrap是第一级启动程序;U-Boot是第二级启动程序。
返回列表