注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

时间记录器

记录我的Linux、Android学习之路

 
 
 

日志

 
 

Mini4020 的两种启动方案 V1.8.0  

2010-07-08 19:51:22|  分类: Mini4020 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
 

从NOR FLASH启动系统

SYS_SETUP[2:0]设置为000,程序烧写在NorFlash中。上电后零地址映射在CSA,即NorFlash上。 按照本启动模式,程序搬运以及执行的过程如下:系统上电后,零地址映射在NOR  FLASH,CPU开始执行启动代码。此段代码完成的工作包括对SDRAM控制器的初始化,从NOR FLASH搬运核心代码至SDRAM,配置地址重映射寄存器至零地址处,最后将PC指向SDRAM(上以部分通常称为BootLoader)。然后开始执行用户程序代码。 

例如在CSA上接一个SST 16位NOR FLASH SST39VF1601,用于放置启动代码;在CSE上接一16位Samsung SDRAM。配置方法如下: 配置 CSACONF 和 CSECONF 寄存器,分别使能 CSA和 CSE。 配置好 CSA中相应的时序信息,配置 CSE 的数据宽度为 16位。 再配置 SDRAM 两个时序配置寄存器,根据本 SDRAM 的具体规格配置。 最后配置 REMAPCONF 寄存器,进行地址重映射,使零地址映射到 SDRAM。完成配置,从 NOR FLASH启动系统。

 从NAND FLASH启动系统

根据板载NandFlash型号,正确设置SYS_SETUP[2:0]。程序烧写在NandFlash中。 当SEP4020设置为NandFlash启动时, 系统上电后,零地址映射在NandFlash控制器FIFO上,即 0x11000200,即CPU从 NandFlash控制器的 FIFO中取指(此时使用的是高地址选通,低位地址的变化不会影响PC从 FIFO中取指)。系统上电后,NandFlash控制器自动向NandFlash发出读命令,读取NandFlash第一页的数据到 FIFO(4 级深度,32Bit 宽度)中。当CPU取指令操作将 FIFO读空时, NandFlash控制器再从NandFlash中获取 4 条指令(16Byte),直至第一页内的指令全部被读取并执行。

因此需要把系统启动代码烧写在 NandFlash中第一页中,在启动代码中要做好以下工作:

1、配置 EMI,包括 CSE 时序,SDRAM 配置寄存器(勿配置REMAP)

2、配置 DMAC,源地址:NandFlash控制器 FIFO,目的地址 0x30001000,及必须的传输控制。

3、配置 NandFlash 控制器。写入起始搬运地址及与实际使用的 NandFlash相符的配置信息(地址级数等)。

4、在 SDRAM 中写入4条指令,并配置需要的寄存器。4条指令分别完成启动 NandFlash 传输、延时等待、跳转到 0x30001000 处。另外为了配合四条指令的执行,需要在R10 中写入 0x11000104(NandFlash控制器命令寄存器地址),在 R11 中写入 0x80000000(启动 NandFlash 传输命令),在R9 中写入 0x100 (延时等待时间),在R8 中写入x30001000,传输完成后跳转地址。

5、填充 NOP 指令。使得数据充满512+16 个字节。

6、通过 MOV  PC, R0 实现程序跳转。跳转到 SDRAM 中去执行第 4 步写入的指令,从而完成将第二页及后面的代码搬运到SDRAM 中。

  评论这张
 
阅读(341)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017