TQ2440开发板学习纪实(8)--- 从NAND Flash读取数据,把代码搬运到SDRAM运行

本文详细介绍了在TQ2440开发板上,如何利用S3C2440的NandFlash控制器从NAND Flash读取数据,并将代码搬运到SDRAM中执行。内容涵盖NAND Flash的基础知识,包括其芯片特性、读取数据的方法,以及代码搬运的关键技术,如位置无关代码、绝对地址跳转等。
摘要由CSDN通过智能技术生成

因为依赖于S3C2440的开机自动从Nandflash复制数据到片内SRAM执行,目前我们的可执行程序体积仍然不能大于4KB的限制。而我们的程序目前已经非常接近这个限制大小了,为了能够继续开发,必须突破这个限制。为此需要实现代码搬运功能,把程序从Nandflash搬运到SDRAM中去,并跳转到SDRAM执行。

本文为啥不实现NandFlash写? 因为对于我们的实现目前尚未需求。更重要的是,写操作涉及到擦除,更涉及到NandFlash寿命。为了减少写次数,延长NandFlash寿命,一般会在软件层实现写缓存。这就涉及到大量的代码,会偏离我们实验的主题--代码搬运。等以后确实需要保存数据到NandFlash时,再实现写功能不迟。

1 NAND Flash基础知识

1.1 TQ2440板载Nandflash芯片基本情况

NAND Flash作为一种存储芯片,其读写操作需要特定的时序和规范。实际上也存在相关的工业标准,用来标准化Nandflash的读写等操作。
与RAM和ROM不同,NAND Flash的传送数据、地址、命令时共用同一组针脚,通过不同的时序加以区分。下图是TQ2440开发板上搭载的Nandflash接口图:

这里写图片描述

其接口非常简单,其中

  • IO0-IO7,8个针脚用于传送数据、地址、命令。
  • WP,写保护,直接接地。
  • WE,写使能
  • RE,读使能
  • CE,片选
  • ALE,地址锁存
  • RDY/B,忙闲状态
  • CLE,命令锁存
  • VSS,接地
  • VCC,电源

1.2 Nand flash基本术语

  • 页(Page),NandFlash以页为单位进行读写,常见的页大小为512B,1KB,2KB等。
  • 块(BLOCK),NandFlash在写入数据之前必须先擦除(写入1),而擦除的最小单元就是块,常见的块大小为64页。
  • 擦除。NandFlash写入之前必须先擦除,也就是全部写入1。因为写的时候只能写0,不能写1。
  • 数据带宽,也就是每次传送数据的位数(I/O针脚数),常见的有8,16。
  • 地址周期,传送一个完整的地址,需要发送几次数据。

1.3 S3C2440片内NandFlash控制器

(1)硬件读取
S3C2440片内集成了NandFlash控制器,启动时,通过外部针脚的电平高低的硬件配置来获得页大小,数据宽度,地址周期等要素,从而可以在启动时能够完成读取Nandflash到SRAM。
(2)软件读取
S3C2440的片内NandFlash控制器同样对用户开放,允许用于以软件操纵它来读写NandFlash。

2 利用S3C2440片内NandFlash控制器读取NandFlash数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值