S3c2451开发板的启动过程详解

本文详细阐述了嵌入式系统的启动过程,包括NOR Flash与NAND Flash的区别及其在启动过程中的作用,解释了为什么系统可以从NOR Flash直接启动而不能从NAND Flash直接启动。同时介绍了SRAM、SDRAM等存储器的功能与用途。

开发板 启动过程

1、概念基础

SRAM,STATIC RANDOM ACCESS MEMORY  就是静态随即存储器
SROM static read only memory 静态只读存储器
ROM ,只读存储器
RAM,随即存储器
DRAM,英文全称Dynamic Random Access Memory,即动态随机存取存储器
SDRAM,同步动态随机存储器 同步就是需要同步时钟
NOR Flash NAND Flash 是现在市场上两种主要的非易失闪存技术。

 

注:开发板 SRAM          64KB

(手册p34) (64KB for internal SRAM Buffer(8KB internal buffer for booting))

   SDRAM         256MB

   NANDFLASH     256MB

SRAM是英文Static RAM的缩写,它是一种具有静止存取功能的内存,不需要刷新电路即能保存它内部存储的数据。这样他不需要初始化就能够直接使用。这与我们在外部扩展的大容量的SDRAM是不一样的,外部大容量的SDRAM是需要初始化后才能使用的,这点大家务必要搞清楚。这点在我做过移植的处理器:s3c2410(arm920t),s3c2440(arm920t),at91rm9200(arm920t),at91sam9260(arm926t)上都是这样的。在s3c2440这颗CPU上这个SRAM大小为4KB,datasheet里把它叫做Stepping Stone,江湖人称起步石

 

1.1 NOR FLASH与NAND Flash 区别

1)接口区别:
NOR FLASH地址线和数据线分开,来了地址和控制信号,数据就出来。
NAND Flash地址线和数据线在一起,需要用程序来控制,才能出数据。
通俗的说,就是光给地址不行,要先命令,再给地址,才能读到NAND的数据。而且都是在一个总线完成的。
结论是:ARM无法从NAND直接启动。除非装载完程序,才能使用NAND Flash.

 

2)性能区别

NOR的传输效率很高,在14MB的小容量时具有很高的成本效益,但是很低的写入和擦除速度大大影响了它的性能。 NAND结构能提供极高的单元密度,可以达到高存储密度,并且写入和擦除的速度也很快。应用NAND的困难在于flash的管理和需要特殊的系统接口。
● NOR的读速度比NAND稍快一些。
● NAND的写入速度比NOR快很多。
● NAND4ms擦除速度远比NOR5s快。
大多数写入操作需要先进行擦除操作。
● NAND的擦除单元更小,相应的擦除电路更少。

 

NandflashNorflash是不同的Norflash像内存一样是直接挂在系统总线上的,这样有足够多的地址线使得CPU能够寻址到每一个存储单元上去,这也意味着CPU能够直接通过总线访问Norflash上存储的内容,同时他还支持XIP(即片上执行,不用将代码搬到内存中,直接在Norflash上就能运行)。 而Nandflash它并不是直接挂载系统总线上,而是通过Nandflash控制器(这个一般集成在CPU内部)来完成读写操作的。如果我们把Norflash的那种寻址方式叫直接寻址的话(不是汇编里的那个直接寻址,这里指CPU能够直接通过地址线访问存储器的存储单元),那么这里的Nandflash就是间接寻址(这里需要Nandflash控制器来寻址)。所以我们在使用Nandflash之前,一定要初始化Nandflash控制器

 

理解上面的这点后,就不难理解,为什么系统能够从Norflash直接启动,而不能直接从Nandflash启动。

这是因为,ARMCPU复位时,CPU默认会到0x0000 0000地址处去取指令,而如果我们是从Norflash启动的话(一般Norflash会挂到Bank0,nGCS0)s3c2440 CPU就会把Norflash的空间挂接到0x0000 0000这段内存空间上。这时CPU就能够直接从Norflash上取指令运行,启动了。而如果是Nandflash, 因为Nandflash他不能直接挂到系统总线上,并且他的读写,擦除操作必须依赖Nandflash控制器,这也就意味着Nandflash的存储空间永远不能映射到0x0000 0000这个地址上去。

1.2 能够运行程序的存储器

1IROMNOR FLASH(0x0000 0000)

2SRAM             (0x3000 0000)

3SDRAM            (0x4000 0000)

 

1开发板上一般都用SDRAM做内存,flashnornand)来当做ROM。其中nand flash没有地址线,一次至少要读一页(512B).其他两个有地址线

2nandflash不用来运行代码,只用来存储代码,NORflashSDRAM可以直接运行代码.

 

2、启动介质

讲到启动系统,那么需要哪些存储介质才行呢?首先得有启动介质,也就是掉电后代码不会丢失并且上电后就能运行(不需要初始化,否则怎么运行呢),我们知道内存是不行的,内存掉电后数据就清空了。norflash就能掉电后数据不丢失,并且可以总线式访问(挂在总线上就可以使用,不需要初始化)。所以norflash可以作为启动介质,但这家伙一般比较小,因为贵嘛,所以代码一般运行在内存,容量大,便宜。现在一般开发板内容都用DDR2. 理论上 有NORFLASHDDR2就可以了,但三星还另外加了一块SRAM。为什么要加SRAM呢?因为NORFLASH只能读,不能写,那么就不能进行数据交换,而DDR2此时还不能用,那么只能用SRAM来保存全局数据和设置栈空间。所以210的存储结构为IROM(类似于NORFLASH+SRAM+DDR2的结构)

注:IROMNORFLASH功能作用相似,但结构不同,我们开发板不用NORFLASH,都用IROM

3NORFLASH启动过程

 

 

刚上电时,首先执行iROM内的固化程序(不能人工改变),按照IROM内的命令,cpu会自动从NAND flash读取前8KB的数据放置在片内SRAM0x4000 0000),同时把这段片内SRAM映射到nGCS0片选的空间(即0x00000000cpu是从0x00000000开始执行,也就是NAND flash里的前8KB内容。因为NAND FLASH连地址线都没有,不能直接把NAND映射到0x00000000,只好使用片内SRAM做一个载体。通过这个载体把nandflash中大代码复制到RAM(一般是SDRAM)中去执行。

注:上电时移植的8K就是superboot8K,主要作用将主程序拷贝到RAM (一般是SDRAM)中运行,同时还有初始化内存(SDRAM),关闭看门狗,初始化时钟等作用。

 

 

通过下载器,可以看出我们是直接下载到SDRAM0x3000 0000)中,当然我们前面讲过SDRAM必须要先初始化,才能应用,其实就是给SDRAM分配(0x3000 0000)地址。这些初始化操作是在移植的8K中完成的。因此我们可以直接运行SDRAM的我们自己写的程序。

 

从下载器中,可以看出我们也是可以选择下载到NAND FLASH中,那时便需要再将NAND FLASH复制到SDRAM中。

如果执行的代码<8KB,程序直接在SRAM中运行。

如果执行的代码>8KB,要把代码完整的搬到SDRAM中运行。

 

注意:我们会发现,刚开始点亮led灯时,我们没有写时钟程序,为什么灯还是能点亮,这是因为在移植8KSRAM时,就打开时钟了,我们自己编写的时钟程序,只是覆盖了superboot的时钟程序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值