首页 > 编程知识 正文

linux启动分析,S3C2410有几种启动方式

时间:2023-05-06 02:54:44 阅读:63367 作者:2332

2440启动流程分析作者: tydlm

2440启动过程是一个难点,不容易理解,但2440启动过程的理解影响了后面对裸机代码执行过程的分析,明确了2440启动过程的重要性。

在33558www.Sina.com/s3c2440的datasheet 《S3C2440A_UserManual_Rev13.pdf》中搜索map,可以在第5章中搜索下图。

从这张图可以看出

om [ 1:0 ]=01,10,Not using NAND flash for boot ROM

OM[1:0]=00,Using NAND flash for boot ROM

OM[1:0]是什么呢?

从S3C2440的datasheet 《S3C2440A_UserManual_Rev13.pdf》中搜索OM,

下表可在第50页的“s 3c 2440 a信号描述”中找到。

信号输入/

输出

escription som [ 1:0 ] 1om [ 1:0 ] sets 3c 2440 ainthetestmode,which is仅使用结构。

Also,itdeterminesthebuswidthofngcs0. the pull-up/down resistor

determinesthelogiclevelduringresetcycle。

0: NAND-boot 01:16-bit 10:32-bit 11:测试模式

另外,OM[1:0]还决定了nGCS0的总线宽度(如后所述,nGCS0对应于存储体0 )。 只能在生产中将OM[1:0]设置为S3C2440A的测试模式;

在芯片RESET的复位周期期间,OM[1:0]的上拉/下拉电阻决定其逻辑电平

00:Nand启动01:16位10:32位11:测试模式

从后面可以看到:

OM[1:0]=01表示nor flash的数据宽度为16位。

OM[1:0]=10表示nor flash的数据宽度为32位。

因此,可以得出以下结论:

2440启动方法有两种: NOR FLASH启动和NAND FLASH启动。

你如何选择从那个方式启动?

答案通过2440启动方式OM0和OM1引脚选择。

在S3C2440的datasheet 《S3C2440A_UserManual_Rev13.pdf》中,第5章还提供了以下内容:

bank0(ngcs0)数据总线必须配置为16位或32位宽。 由于存储体0是引导ROM存储体(映射到0x0000_0000 ),因此必须根据重置时om的逻辑级别,在首次访问ROM之前确定存储体0的总线宽度。

OM1 (操作模式1 ) OM0 (操作模式0 )引导ROM数据宽度00NAND闪存模式0116位1032位11测试模式

从JZ2440原理图NOR FLASH电路可以看出,使用的NOR FLASH的数据总线宽度为16位。

(NOR FLASH使用了从LDATA0到LDATA15共计16根。 也就是说,NOR FLASH的数据总线宽度为16位)

因此,只能在两种情况下使用: OM1=0、OM0=0或1。

因此,可以得出以下结论。

OM1OM0说明01nor启动00nand启动

根据JZ2440的原理图,启动针配置OM0和OM1的原理图如下。

(下图为启动开发板所选的指拨开关)

在开发板的PCB中,如图所示

补充:

常见的芯片有多种启动方式,但所有这些启动方式都可以通过配置引脚选择。 通过在启动时读取这些配置引脚的电平,可以判断芯片是从该方式启动的。 许多学习板(如研发阶段的测试板和:JZ2440 )通常使用开关和跳线帽等方法将配置管脚的级别设置为高或低。 出厂时,配置引脚一般通过上拉电阻设定电平。

从33558www.Sina.com/NOR FLASH启动时,在前面的图1中,由nGCS0控制的存储体0直接连接到norflash,但存储体0

访问的地址范围为:256M(0X00000000----0X08000000),JZ2440开发板使用的nor flash大小为2M(0X00000000----0X00200000),从而S3C2440芯片的物理地址(0X00000000----0X00200000)就由nor flash来占据。

选择从NOR FLASH启动,上电,S3C2440芯片就会去运行nor flash上地址为0x0处的指令。从后面的实验中,可以清楚的知道,读nor flash可以像读内存那样读,但是要用额外的命令向nor flash写入数据。如果nor flash像内存那样读和那样写,那nor flash完全可以被内存所替代。

 

 

从NAND FLASH启动

在看本节内容之前,建议仔细看S3C2440A的datasheet《S3C2440A_UserManual_Rev13.pdf》的第6章,对S3C2440芯片对nand flash的支持有一个大概的认识。

 

使用nand flash的理由

目前的NOR Flash存储器价格较高,相对而言SDRAM和NAND Flash存储器更经济,这样促使了一些用户在NAND Flash中执行引导代码,在SDRAM中执行主代码。

可以得到一点:NAND Flash存储器更经济。

 

从NAND FLASH原理图来分析数据总线

可以在网上搜索nand  flash的特点,其实我们从原理图或者nand flash的引脚数目,也可以分析出:nand flash无法像访问内存SDRAM那样直接访问。

JZ2440开发板使用的NAND FLASH大小为256M。如果像内存SDRAM那样,一次将地址全部发出,至少需要28根地址线才能完成256M的寻址。由JZ2440开发板使用的NAND FLASH

芯片手册可知,该芯片实际使用了29根地址线。多一根地址线访问范围更大一些。

而nand flash只有8根数据线和其他控制线,那怎么办?

通过查询NAND FLASH芯片手册知道,只能将地址分成多个字节,按照某种规则,分批传递给8根数据线。nand flash内部再按照某种规则,将几个批次的8根数据线上的数据合并成29根地址线的数据。从而,可以得出读写NAND FLASH都需要特定命令规则来控制传送的数据。

 

如何识别nand flash的类型

nand flash的页容量有大页(2k、1k)/jzdlf(512字节、256字节),总线宽度有8位/16位,如何区分开发板使用的哪一类型的NAND FLASH呢?

从S3C2440A的datasheet《S3C2440A_UserManual_Rev13.pdf》的第6章,可以得到NAND FLASH启动时的引脚配置:


引脚说明OM[1:0] = 00使能NAND Flash存储器引导启动NCON

NAND Flash存储器选择(普通/先进)

0:普通NAND Flash(256字或512字节页大小,3或4个地址周期)

1:先进NAND Flash(1K  字或2K  字节页大小,4或5个地址周期)

GPG13

NAND Flash存储器页容量选择

0:页=256字  (NCON=0)或页=1K字  (NCON=1)

1:页=512字节(NCON=0)或页=2K字节(NCON=1)

GPG14

NAND Flash存储器地址周期选择

0:3个地址周期(NCON=0)或4个地址周期(NCON=1)

1:4个地址周期(NCON=0)或5个地址周期(NCON=1)

GPG15

NAND Flash存储器总线宽度选择

0:8位宽度

1:16位宽度


当复位时,芯片的NAND Flash控制器通过读取引脚NCON、GPG13、GPG14、GPG15的电平来得到外接的NAND FLASH的页大小,地址周期,总线宽度等信息。

在JZ2440V2开发板上实际使用的是大页(一页有2K字节),5个地址周期,8位宽度的NAND FLASH。在JZ2440原理图中,关于NAND FLASH的启动引脚配置的原理图如下:

 

其中,R15,R16,R17,R14标记为NC,即这些电阻没有焊接。

从而NCON为高电平,EINT21为高电平,EINT22为高电平,EINT23为低电平。

 

从上图可以知道:

GPG13和 EINT21是同一信号。

GPG14和EINT22是同一信号。

GPG15和EINT23是同一信号。

从而NCON为高电平,GPG13为高电平,GPG14为高电平,GPG15为低电平。

从而S3C2440A芯片从nand flash启动时,让S3C2440A芯片确定外部挂接的是一个大页(一页有2K字节),5个地址周期,8位宽度的NAND FLASH。

 

从nand flash启动流程

现在已经知道S3C2440A外部挂接的哪一类nand flash,那么就要准备去复制nand中的代码,然后去执行该代码。问题又来了,复制大小是多少?复制到哪里去?复制完接着做什么?并且这个复制过程也只能由S3C2440A的硬件来完成。

从S3C2440A的datasheet《S3C2440A_UserManual_Rev13.pdf》的第6章中:

S3C2440A boot code can be executed on an external NAND flash memory. In order to support NAND flash boot loader, the S3C2440A is equipped with an internal SRAM buffer called ‘Steppingstone’. When booting, the first 4 KBytes of the NAND flash memory will be loaded into Steppingstone and the boot code loaded into Steppingstone will be executed.

 S3C2440A引导代码可以在外部NAND Flash存储器上存储。为了支持从NAND Flash启动,S3C2440A配备了一个内置的SRAM缓冲器,叫做“Steppingstone(垫脚石)”。从nand flash启动时,NAND Flash存储器的前4K字节将被加载到Steppingstone中并且执行加载到Steppingstone的引导代码。

复制大小为多少:4K。

复制到哪里去:Steppingstone(垫脚石)。

复制完接着做什么:执行加载到Steppingstone的引导代码。

 

从图1,OM[1:0]=00时,选择从nand flash启动,S3C2440A的前4K(0X00000000----0X00001000)就被BootSRAM(即:Steppingstone(垫脚石))所占据。

 总结:


 


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。