2410 nand flash启动机制

    通过设置开发板boot sel跳线选择开发板的启动模式,短接跳线(盖上跳帽),为nand flash启动方式,否则是nor flash启动方式。但是代码可以在nor flash上直接运行,不能在nand flash上运行,为了支持nand flash的bootloader,2410x配置了一片内部的sram buffer 叫做steppingstone 。当启动的时候,nand flash的前4K 的数据将会载入到steppingstone中并且boot code将会在steppingstone中执行。一般来讲,bootcode将会拷贝nand flash 中的内容到SDRAM中,使用硬件ECC,检验NANDflash
数据的正确性。在拷贝完成之后,主函数将在SDRAM中执行。
-----------------------------------------------------------------------------------------------------
被拷贝到steppingstone中的代码会拷贝nand flash中的代码到sdram中,这被拷贝的4K代码不是会被执行两遍吗?
nand flash中的前4k代码会被复制到steppingstone中,到底是哪些代码?是uboot的前4k?
steppingstone中代码地址被映射到nCGS0,而后的代码在sdram中执行,地址为0x30000000,地址如何映射的?
-----------------------------------------------------------------------------------------------------
s3c2410手册内容:
  • NANDflash 模式:支持 读、擦出、编程 NANDflash 存储器
  • 自动boot模式:芯片复位后bootcode被传输到steppingstone中,传输后,bootcode将会在steppingstone中执行。
  • 硬件ECC检测模块(硬件检测,软件纠错)
  • steppingstone 4K 的内部SRAM buffer在NANDflash booting后能被用做其它用途。

自动 boot 模式序列

  1. 完成复位
  2. 当自动boot模式使能,nand flash的前4K的数据拷贝到steppingstone 4K的buffer中去
  3. steppingstone被映射到 nGCS0
  4. CPU 开始在steppingstone的4K内部buffer中执行bootcode

注意:在自动boot模式下,ECC不会被检测。所以,先前的4K的NANDflash数据不应该有位错误


nand flash模式配置

  1. 通过设置nfconf寄存器设置nand flash配置
  2. 向nfcmd寄存器写入nand flash命令
  3. 向nfaddr寄存器写入nand flash地址
  4. 通过查看nand flash状态寄存器nfstat,读写数据。R/nB信号应该在读操作前或编程操作后被检测
autoboot和nandflash 配置
  1. OM[1:0]=00:使能nandflash控制器自动boot模式
  2. nandflash存储器每页大小为512字节
  3. ncon:nandflash存储器地址步数选择  0:3步寻址 1:4步寻址

2410在读写操作时生成512字节ECC同位码。每512字节的数据ECC同位码包含3个字节
24位ECC同位码=18位行同位+6位列同位

ECC控制模块执行以下步骤:
1、当微控制器写数据到NAND时,ECC控制模块生成ECC码
2、当微控制器从nand读数据时,ECC控制模块生成ECC码,并且拿他与先前写时生成的ECC码相比较

注意:
  存在问题:nandflash控制器不能被DMA访问。
  解决方案:使用LDM/STM指令代替DMA。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值