《micro2440开发》第七章:micro2440从NAND FLASH启动原理分析

=====================================================================================

接上:《micro2440开发》第一章:S3C2440A地址空间

ARM是不能直接从NAND FLASH启动的,这包括两层意思:

  其一、ARM刚启动时不能直接获得NAND FLASH上存储的程序;因为对NAND FLASH的读(写)操作需要软件时序。

  其二、ARM不能在NAND FLASH上执行程序;因为NAND FLASH是顺序存储设备、不能被随机访问,程序就不能分支或跳转、这样没法设计程序。

  更深层次的分析以上原因:

一、为什么ARM刚启动时不能直接获得NAND FLASH上存储的程序?

  因为NAND FLASH是挂在NAND FLASH控制器(NAND FLASH控制器挂在ARM系统总线)上的,它不像NOR FLASH直接挂在ARM系统总线上(地址线和数据线分开,来了地址和控制信号,数据就出来);NAND FLASH地址线和数据线在一起、需要程序来控制、才能出数据。

  通俗地说:NAND FLASH的读写时序是不能直接由ARM硬件产生的,要读写NAND FLASH是要通过程序来实现;要先命令(说明此时传的是地址)、在给地址,最后给命令(说明此时传的是数据)、才能读到NAND的数据。

  结论:ARM无法从NAND直接启动。除非装载完程序(也就是NAND FLASH控制器的相关操作程序),通过命令控制NAND FLASH地址和数据复用总线后;才能使用NAND FLASH。

二、为什么ARM不能在NAND FLASH上执行程序?

  原因很简单;因为NAND FLASH是顺序存储设备。

=====================================================================================

解决方案有两种:

  其一、板子有NOR FLASH的情况;将bootloader烧录至NOR FLASH,然后从NOR FLASH启动、利用bootloader(bootloader完成了对NAND FLASH控制器的相关软件时序的设置,这时就可以操作NAND FLASH)将boot及kernel烧录至NAND FLASH。

  其二、板子没有NOR FLASH的情况;将bootlader先放置内存SDRAM、然后执行bootloader(这时也完成了NAND FLASH控制器的相关软件时序设置)将boot及kernel烧录至NAND FLASH。

  第一种方法现在用的比较多;第二种方法很少有人使用。

  上述两种方法只是解决了烧录问题;我们来分析从NAND FLASH的启动过程。

  最重要理解的一点是:从NAND FLASH启动的CPU(NAND FLASH控制器)都有一个特殊功能,即在CPU上电后、NAND FLASH控制器会自动地把NAND FLASH上的前4K数据搬移到SRAM中。这个过程不需要程序干涉。

=====================================================================================

  最后需要说明的是:上述SRAM只有4KB,所以NAND FLASH的启动会比NOR FLASH的启动复杂一些。把NAND FLASH中bootloader的前4KB拷贝至SRAM后,这4KB还需完成将剩余部分拷贝至SDRAM并跳转执行。

=====================================================================================

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
micro2440.jflash是一款针对S3C2440A处理器的仿真和调试工具。它是一种可以在开发板上直接进行单片机程序烧写、下载、仿真以及调试的工具。通过使用micro2440.jflash开发人员可以迅速方便地调试和测试自己的嵌入式软件。 micro2440.jflash具有以下特点: 1. 支持多种调试接口:它可以通过串口、JTAG、SWD等多种调试接口连接到目标板上。这样的设计可以满足不同开发环境和需求。 2. 易于使用:micro2440.jflash提供了直观易用的用户界面,使得开发人员能够快速上手并进行各种操作,如程序下载、调试等。同时,它还具备友好的调试功能,可以方便地检查和修改程序运行时的变量和寄存器信息。 3. 高效的仿真和调试能力:micro2440.jflash支持硬件仿真和调试。它可以通过加载目标板上的原生指令集进行仿真,从而帮助开发人员准确定位和分析软件问题。此外,它还支持断点、单步执行、变量监视等功能,帮助开发人员更好地进行程序调试。 4. 稳定可靠:micro2440.jflash经过严格的测试和验证,具有良好的稳定性和可靠性。它适用于各种嵌入式开发场景,可以满足开发人员在各种复杂情况下的调试需求。 总之,micro2440.jflash是一款功能强大、易于使用且稳定可靠的嵌入式仿真和调试工具。它为开发人员提供了高效的开发和调试环境,帮助他们更好地完成嵌入式软件开发工作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值