background image

用的是 S3C2410.见附件 start.s 其中关于 nand flash 启动的那一段一直百思不得其解,
按说从 NAND FLASH 启动时,应该是前 4KB 映射到 NGCS0,其中的代码将 NAND 中存放
的程序拷贝到 RAM 中,但该文件提供的程序好象是先从 NAND

 

拷贝 128K 的代码到

ResetEntry 开始的地方,即地址为 0 的地方,然后再从 ResetEntry 处拷到 RAM 中,但此
时 NGCS0 好象只有 4KB

 

的 RAM 区,怎么能存储 128K 的代码,一直没想通.望高手指点,

谢谢! 
搞明白了,是两条指令的差别
LDR r0,=_entry 和 ADR r0,_entry
前者是在编译的时候按照 load address 生成的绝对地址,后者反汇编后是相对当前 PC 寻
址,例如在 ADS 中设置 RO 地址为 0X30000000,那么前者传给 r0

 

的值是 0x30000000,

而后者传给 r0 的值要视当前 PC 而定,一般从 NGCS0 中启动时,传给 r0 的值就是 0。
amsung S3C2410 支持 Nor Flash 和 Nand Flash 启动,在 SBC-2410X 上可以通过
BOOTSEL 跳线设置启动方式:
    |------|
    | 

 

。。 |      boot from nand flash

    |------|

------

。。        boot from nor flash

注: 
(1) BOOTSEL 跳线在"串口"和"usb slave 接口"之间
(2) 两个引脚用"跳线卡"连接,则表示从 nand flash 启动。拔下"跳线卡"表示从 nor 
flash 启动。

 

椐了解 NOR FLASH 是容量小,速度快,稳定性好,适合做程序存储器。
NAND FLASH 总容量大,适合做数据存储器
是不能从 NAND FLASH 启动的,NAND FLASH 是的读写时序是不能直接有 ARM 硬件
产生的,要读写 NAND FLASH 是要通过程序来实现的,很明显能看出来的就是 NAND 
FLASH 只有 8 个数据、地址复用的数据地址接口
2410/2440 可以直接从 NAND FLASH 启动的,因为它把 NAND 前面的 4K 映射到了
RAM 的空间
首先应该先了解 Flash ROM 的种类
NOR FLASH 地址线和数据线分开,来了地址和控制信号,数据就出来。
NAND Flash 地址线和数据线在一起,需要用程序来控制,才能出数据。
通俗的说,就是光给地址不行,要先命令,再给地址,才能读到 NAND 的数据。
而且都是在一个总线完成的。
结论是:ARM 无法从 NAND 直接启动。除非装载完程序,才能使用 NAND Flash.
装载程序只能从 mask rom 或者 Nor flash.
NAND 和 NOR flash

 

技术 设计师在使用闪存时需要慎重选择

——

M-Systems

 

公司 Arie TAL 
NOR 和 NAND 是现在市场上两种主要的非易失闪存技术。Intel 于 1988 年首先开发出
NOR flash 技术,彻底改变了原先由 EPROM 和

EEPROM

一统天下的局面。紧接着,1989 年,东芝公司发表了 NAND flash 结构,强调降低每比
特的成本,更高的性能,并且象磁盘一样可以通过接口轻松升级。但是经过了十多年之后,