s3c2440启动过程分析

发布者:Changsheng520最新更新时间:2018-06-04 来源: eefocus关键字:s3c2440  启动过程 手机看文章 扫描二维码
随时随地手机看文章

2440启动过程算是一个难点,不太容易理解,而对于2440启动过程的理解,影响了后面裸机代码执行流程的分析,从而看出2440启动过程的重要性。

 

2440启动方式和启动方式选择

在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页“S3C2440A Signal Descriptions”(芯片信号描述)得到下面的表格。

Signal

Input/

Output

Descriptions
OM[1:0]1

OM[1:0] sets S3C2440A in the TEST mode, which is used only at fabrication.

Also, it determines the bus width of nGCS0. The pull-up/down resistor

determines the logic level during RESET cycle.

00: Nand-boot         01: 16-bit      10: 32-bit     11: Test mode



此外,OM[1:0]还决定了nGCS0的总线宽度(后面可以知道:nGCS0对应bank0)。只能在生产中才能将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位的宽度。因为BANK0是作为引导ROM的bank(映射到0x0000_0000),应当在第一个ROM访问前决定BANK0的总线宽度,其依赖于复位时OM[1:0]的逻辑电平。


OM1(操作模式1)OM0(操作模式0)引导ROM数据宽度
00Nand Flash模式
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)通常采用开关或跳线帽等方式来将配置引脚的电平置为高电平或置为低电平。在出厂时, 配置引脚一般通过上下拉电阻来设置电平。

 

从NOR FLASH启动

从NOR FLASH启动时,由前面的图1,由nGCS0控制的bank0直接连接了nor flash,而bank0能访问的地址范围为: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)/小页(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(垫脚石))所占据。

 总结:


 


关键字:s3c2440  启动过程 引用地址:s3c2440启动过程分析

上一篇:S3C2440体系架构
下一篇:S3C2440 之USB设备篇

推荐阅读最新更新时间:2024-03-16 16:04

s3c2440的网卡接口扩展
网络对于嵌入式系统来说必不可少。可是s3c2440没有集成以太网接口,所以要想使s3c2440具备以太网的功能,就必须扩展网卡接口。在这里,我们外接DM9000,使其可以与以太网相连接。 DM9000可以直接与ISA总线相连,也可以与大多数CPU相连。在这里,我们当然是要让DM9000与s3c2440相连接了。DM9000对外来说只有两个端口 地址口和数据口,地址口用于输入内部寄存器的地址,而数据口则完成对某一寄存器的读写。DM9000的CMD引脚用来区分这两个端口,当CMD引脚为0时,DM9000的数据线上传输的是寄存器地址,当CMD引脚为1时,传输的是读写数据。我们把DM9000的A8和A9接为高电平,把A4~A7接为
[单片机]
从汇编代码,看STM32的启动过程
分享这篇文章,谈一下STM32启动流程。如果读者朋友已经有过汇编相关基础,能更好理解本文内容。汇编语言是比C语言更接近机器底层的编程语言,能让我们更好的理解和操纵硬件底层。 STM32的三种启动模式 下好程序后,重启芯片时,SYSCLK的第4个上升沿,BOOT引脚的值将被锁存,这就是所谓的启动过程。 STM32上电或者复位后,代码区始终从0x00000000开始,其实就是将存储空间的地址映射到0x00000000中。 三种启动模式如下: 从主闪存存储器启动:将主Flash地址0x08000000映射到0x00000000,这样代码启动之后就相当于从0x08000000开始。主闪存存储器是STM32内置的Flash,作为芯
[单片机]
ARM-Linux s3c2440 之中断分析(一)
硬件篇: S3C2440 是arm920T架构,先温习一下s3c2440中的中断控制器原理和相关硬件构架。 中断控制器(InterruptControler): S3c2440A的中断控制器有60个中断源,如DMA中断,UART中断,IIC中断等,60个中断源在寄存器中用相应的位来表示。当有多个中断要求到来时,经过仲裁过程后,中断控制器向CPU请求FIQ或者IRQ中断。仲裁过程根据硬件中的优先级模块来决定,其结果最后写进中断未决(intterrupt pending)寄存器中,通过中断未决寄存器的值可以清楚哪个中断发生了。 S3c2440中断控制器流程图: 挂起 中断模式(InterruptMode): AR
[单片机]
ARM-Linux <font color='red'>s3c2440</font> 之中断分析(一)
移植u-boot-2010.09到S3C2440(一)——硬件初始化与测试
在u-boot的代码选择中,只有201009是最近的可直接编译通过的,不带memset.s的u-boot版本。 屏蔽lowlevel_init的调用之后,将我在u-boot-201112版本中所做的硬件初始化全部挪到本版本中,包括串口驱动的修改,时钟设置,LED的点亮。 这个时候通过开发板自带的u-boot写到SDRAM调试就直接有串口输出与提示符。 注:本系列文档只注释难点部分,其它略过。
[单片机]
S3C2440裸机实验(4) -----IIC
花了两天的时间终于把这个搞定了,其实I2C的原理还是比较简单的,只是几个细节性的东西还是需要特别的注意,主要是需要注意一下几点: 1.rIICCON &= ~0x10; 清中断必须要在rIICDS = slvAddr; 和rIICSTAT = 0xf0; // 主设备,启动 之后 2.延时对于写外部的低速设备来说非常重要,比如while(flag)之后一定要加延时,还有在写数据时发现只能写入基数地址的数据,这也是由于延时导致的 3.开始调试的时候系统总是死在read的函数中,后来发现在数据手册的note中说当读取最后一个数据的时候一定不能返回ACK信号,而我却在程序中使用while(flag)来等待ACK引发中断,这不
[单片机]
基于嵌入式Linux的倒车影音系统设计
  引言   电子信息与数字图像处理技术目前已被广泛地应用在各个领域,车载系统的信息化已成为现代汽车业的重要标志。现在的倒车雷达系统可以为驾驶者提供许多帮助,多数采用超声波测距技术,可以直接显示出车尾与障碍物之间的距离。但由于超声波的散射特性,如果地面有尖锐的突起或存在横在半空的棱角状物体,系统就不能有效地“察觉”。假如能为现有的倒车系统增加一个可视功能,那么驾驶员在倒车时不必回头就可清楚车后的情况。本文设计了一种可视化安全倒车系统,该系统采用嵌入式Linux操作系统内核驱动USB摄像头实现车后状况实时监控,通过判断超声波测距是否达到阈值来启动语音报警功能。   1 系统方案设计   如图1所示,系统由主控模块、超声波收发模
[单片机]
基于嵌入式Linux的倒车影音系统设计
S3C2440串口通讯实现
一、目的 由于项目需求,要实现S3C2440串口与PC机的通讯。通过实验手册上的串口通讯示例了解串口的工作原理,实现简单的串口通讯实验。为进一步利用串口编程实现更加复杂的功能做准备。 实验效果:PC机上按下任意键,通过串口将字符传送至2440,2440又通过串口返回至PC机,并在DNW终端或超级终端显示该字符。 二、实验原理 PC机 ------- S3C2440开发板 S3C2440的UART提供了三个独立的异步串行I/O端口,每个都可以在中断和DMA两种模式下进行,他们支持的最高波特率是115.2Kbps。每个UART通道包含两个64字节的FIFO,分别提供数据接收和发送。 每个UART包含波特率发生
[单片机]
基于Linux NFS的Web数码相框设计
   O 引言   随着数码相机和互联网的普及,越来越多的家庭拥有自己的媒体库。媒体库中既包含有自己拍摄的影像文件,也有从网络上下载的影像资料。然而展示影像资料的手段单一,主要通过PC来实现。因此未来构建以媒体库为中心的家庭多媒体网络,把多媒体资料在各式各样的家庭网络媒体终端上展示出来,将成为一种必然的趋势。媒体终端包括Web数码相框、网络数字电视等。   Web数码相框的提出正是为了设计一种家庭嵌入式网络媒体终端,但目前市场上常见的数码相框的网络可扩展性差,本设计方案的提出正是为了能够弥补这方面的不足,提高网络可扩展性。并在本设计方案的基础上构建网络数字电视等其他多功能终端实体。    1 技术方案   Web数
[嵌入式]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved