S3C2440开发板 NOR启动 和 NAND启动

 一、NAND启动和NOR启动:

        需要检测硬件启动方式,启动方式是由硬件OM0管脚决定的,软件无法检测硬件电平状态,但可以根据CPU的启动特性来检测。

1、NAND启动:

  如果配置为NAND FLASH启动(启动模式选择开关拔到nand端,此时OM0管脚拉低)S3C2440的NAND控制器会自动把NAND FLASH中的前4K代码数据搬到内部SRAM中(地址为0x40000000),同时还把这块SRAM地址映射到了0x00000000地址CPU从0x00000000位置开始运行程序。 【从NAND FLASH启动CPU时,CPU会通过内部的硬件将NAND FLASH开始的4KB数据复制到称为“Steppingstone”的4KB的内部RAM中(起始地址为0),然后跳到地址0开始执行】

2、NOR启动:

    如果配置为NOR FLASH启动(启动模式选择开关拔到nor端,此时OM0管脚拉高),0x00000000就是NOR FLASH实际的起始地址,NOR FLASH中的程序就从这里开始运行,不涉及到数据拷贝和地址映射

3、总结:

    NAND启动时,地址0x00000000为内部SRAM映射的地址;

    NOR启动时,地址0x00000000为NOR FLASH的实际起始地址。

    向NOR FLASH中写数据需要特定的命令时序,而向内存中写数据可以直接向内存地址赋值。

 

 二、为什么NOR启动要将sp设置为0x40000000+4096:


1、用NOR启动时,片内的存储控制器的BANK0-BANK7这8个BANK都对应了其他用途,所以设计者在BANK7结束的地址0x40000000的地方作为NOR FLASH的启动地址,而NAND FLASH启动的地址则是0x00000000。

2、 因为对于启动文件.S来说,4K的空间是足够存放,代码段、BSS......和堆栈段了,因为堆栈的SP是从高地址往低地址移动的,所以要将堆栈的起始地址放在堆栈段的高地址;

你也可以不用设置成4096,但要保证堆栈的长度不能和下面其他段重叠,若重叠,就会出BUG,保险值是4096,因为SRAM就是4K设计的。




发布了6 篇原创文章 · 获赞 10 · 访问量 1万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览