S3C2440的Linux启动过程分析(一)——SC2440处理器结构

1.1.     S3C2440处理器结构

S3C2440处理器的结构如下图所示,其核心单元为ARM9TDMI处理器核,主要包括16K的指令Cache和16K的数据Cache,以及分开的指令和数据MMU单元等。CP15为一个协处理器(Co-Processor)。通过AMBA2.0(Advanced Microcontroller Bus Architecture)总线接口与外部设备相连。

图 1  S3C2440处理器框图

IVA指Instruction Virtual Address,指令虚拟地址;DVA指Data Virtual Address,数据虚拟地址。IPA指Instruction Physical Address,指令物理地址;DPA指Data Physical Address,指数据物理地址。

S3C2440处理器的封装大小为14mmx14mm,289-FBGA封装类型。工作频率最高为400MHz。

2.0版AMBA总线标准定义了三组总线,如下表所示:

表 1 AMBA总线标准中的三组总线


总线名称


全称


说明


AHB


the Advanced High-performance Bus

高性能总线


应用于高性能、高时钟频率的系统模块,它构成了高性能的系统骨干总线。


ASB


the Advanced System Bus

系统总线


是第一代AMBA系统总线,同AHB相比,它数据宽度要小一些,它支持的典型数据宽度为8位、16位、32位。


APB


the Advanced Peripheral Bus

外设总线


是本地二级总线(local secondary bus),通过桥和AHB/ASB相连。它主要是为了满足不需要高性能流水线接口或不需要高带宽接口的设备的互连。

S3C2440处理器的外设与AMBA总线的连接如下图所示。

图 2  S3C2440外部设备连接图

MPLL锁相环产生时钟,供给AMBA总线上的各个设备使用。AHB总线上,主要包括LCD控制器、LCD的DMA模块,USB Host控制器,ExtMaster(允许外部设备作为总线的Master),NAND 控制器、NAND Flash启动的装载器,总线控制器、仲裁器和译码器,中断控制器,电源管理模块,摄像头接口模块,内存控制器(包括SRAM、NOR Flash和SDRAM三种)。

APB总线上挂载各种外设,包括3个UART,USB设备,SDI/MMC卡,看门狗定制器,总线控制器、仲裁器和译码器,2个SPI总线,I2C总线,I2S总线,GPIO接口,RTC实时时钟,ADC模数转换器,定时器/PWM发生器,AC97音频编解码器。

1.2.     S3C2440的内存地址空间

S3C2440的地址空间如下所示:

图 3  S3C2440复位后的内存映射

从图中可以看到,S3C2440的内存控制器将可访问的内存划分为8个Bank,每个Bank通过nGCS[0~7]引脚选通,占用空间为128MB,总计可访问1GB的内存空间。前6个Bank可访问SROM(包括ROM和SRAM),后两个Bank可访问ROM、SRAM和SDRAM。

根据OM[1:0]引脚的不同,可选择是否使用Nand Flash作为启动ROM,这时内存在地址空间的映射不同。具体地说,是Bank0和内部4K的启动SRAM(Boot Internal SRAM)的映射不同。Boot Internal SRAM是处理器内部的一块专用的SRAM存储区,大小为4K,专门用于系统的启动。

当OM[1:0]的值为01或者10时,Bank0可访问SROM,内部的4KB启动SRAM位于0x4000_0000处;当OM[1:0]的值为00时,选择Nand Flash为启动RAM,此时Bank0不能访问SROM,内部的4KB启动SRAM位于Bank0的地址0x0000_0000处。

选择Nand Flash为启动ROM时,Nand Flash Boot Loader模块会自动将Nand Flash的前4K数据读取到启动RAM,然后复位从启动RAM处的指令开始执行。

图 4  S3C2440的Bank6和Bank7地址

Bank6和Bank7用于连接SDRAM,其起始地址和结束地址是可配置的,如上图所示。Bank6地址一定是从0x3000_0000开始,根据SDRAM内存大小的不同,Bank6的地址结束,然后Bank7直接从Bank6结束的地方开始,使Bank6和Bank7形成物理上连续的地址空间。具体的配置需要设置BANKSIZE专用寄存器。如下图所示。

BANKSIZE寄存器的地址为0x4800_0028,其bit[2:0]可是只Bank6/7的映射方式,表示Bank的内存空间大小。

S3C2440使用外部SDRAM的频率为133MHz左右。

BANKSIZE寄存器的地址为0x4800_0028,其bit[2:0]可是只Bank6/7的映射方式,表示Bank的内存空间大小。

S3C2440使用外部SDRAM的频率为133MHz左右。

1.3.     TQ2440开发板的Memory连接

前面讲述了S3C2440芯片的内存地址空间的划分,这里我们通过TQ2440开发板上的设计给出一个实际的例子。TQ2440是广州天嵌计算机技术有限公司提供的一款基于S3C2440处理器的开发板,其Memory连接结构如下图所示:

图 6  TQ2440开发板的Memory连接

从图中可以看出,TQ2440仅使用了S3C2440处理器中8个Memory Bank中的2个,即Bank0和Bank6。Bank0连接2MB的Nor Flash,数据宽度为16bit;Bank6连接2个数据宽度为16bit的SDRAM颗粒,每个颗粒内存容量32MB,组成总容量为64MB数据宽度为32bit的DDR主存。通过Nand Flash控制器,连接8bit数据宽度的Nand Flash,容量为256MB。

Nand Flash控制器的相关配置主要通过引脚完成,相关引脚包括:

在TQ2440上,OM[0]可通过拨码开关选择,OM[1]接地。OM[1:0]只能选择为00或01,为00时表示Nand Flash启动,为01时表示nGCS0的Bank为16bit模式。nGCS0连接在Nor Flash上,即从16bit数据总线宽度的Nor Flash启动。

TQ2440上对Nand Flash控制器的配置引脚连接如下,在开发板上使用的Nand Flash型号为K9F2G08U0A,故NR5电阻不焊接。

图 7  TQ2440开发板的Nand Flash控制器配置

从图中可以看出,NCON引脚的值为1,GPG13引脚的值为1,GPG14的引脚值为1,GPG15的引脚值为0。这些值分别与K9F2G08U0A芯片的特征对应——内存容量为256MB(2Gbit),Page Size为2KB,需要5个Address Cyle,数据宽度为8bit。

时间: 2024-11-01 03:30:52

S3C2440的Linux启动过程分析(一)——SC2440处理器结构的相关文章

linux视频学习7(ssh, linux启动过程分析,加解压缩,java网络编程)

回顾数据库mysql的备份和恢复: show databases; user spdb1; show tables; 在mysql/bin目录下 执行备份: ./mysqldump -u root -p spdb1 > /home/spdb1.bak 会提示输入用户root的密码. 删除一个数据库 drop database  spdb1; 恢复数据库: mysql -u root -p  数据库名 < /home/spdb1.bak 恢复数据库前需要新建一个空的数据库,否则报错. 在/mys

Linux 启动过程分析

本文仅简单介绍Linux的启动过程,在此基础上做简要的分析.对于Linux启动过程中内部详细的函数调用不做介绍,只是希望本文能给新手起到一个抛砖引玉的作用,以便深入研究Linux的启动过程.下图基本展示了Linux启动的基本过程,仅为个人学习总结得出,如有大神拍砖,表示欢迎. 一. BIOS自检: 应当理解的一些常识: BIOS的组成是由两大部分组成的:POST(power on system test)代码和运行时的服务: POST的工作目的是对硬件进行检测: 1. 当计算机加电后,首先由BI

X86架构下Linux启动过程分析

1.X86架构下的从开机到Start_kernel启动的整体过程 这个过程简要概述为: 开机-->BIOS-->GRUB/LILO-->Linux Kernel 其执行的流程图和重要函数例如以下图所看到的: 2.载入Linux内核(基于X86)的内存布局图 |          | 0A0000 +--------------------------+ |  Reserved for BIOS    | Do not use. Reserved for BIOS EBDA. 09A000

linux启动过程分析

参考:http://blog.chinaunix.net/uid-26495963-id-3066282.html http://www.comptechdoc.org/os/linux/startupman/linux_surcsysinit.html 摘要:简要介绍linux 通电后启动流程 一.启动流程图 二 简要说明 启动第一步--加载BIOS当你打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的重要,以至于计算机必须在最开始就找到它.这是因为BIOS中包含了CPU的相关

ARM多核处理器启动过程分析

说明: 该流程图按照代码执行时间顺序划分为4部分: 1.     Bootloader在图片上半部,最先启动: 2.     Kernel在图片下半部,由bootloader引导启动: 3.CPU0执行流程在图片左半部,bootloader代码会进行判断,先行启动CPU0: 4.  Secondary CPUs在图片右半部,由CPU唤醒 具体启动流程如下: 1.     在bootloader启动时,会判断执行代码的是否为CPU0,如果不是,则执行wfe等待CPU0发出sev指令唤醒.如果是CP

Linux开机启动过程分析

Linux开机启动过程分析 开机过程指的是从打开计算机电源直到LINUX显示用户登录画面的全过程.分析LINUX开机过程也是深入了解LINUX核心工作原理的一个很好的途径. 启动第一步--加载BIOS 当 你打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的重要,以至于计算机必须在最开始就找到它.这是因为BIOS中包含了CPU的相关 信息.设备启动顺序信息.硬盘信息.内存信息.时钟信息.PnP特性等等.在此之后,计算机心里就有谱了,知道应该去读取哪个硬件设备了.在BIOS将系 统

S5PV210-kernel-内核启动过程分析

1.1.内核启动过程分析前的准备 1.拿到一个内核源码时,先目录下的无用文件删除 2.建立SI工程 3.makefile (1)makefile中不详细的去分析,几个关键的地方,makefile开始部分是kernel的版本号,这个版本号比较重要,因为在模块化驱动安装时会需要用到,要注意会查,会改,版本号在makefile中,改直接改的就行 (2)kernel顶层的makefile中定义的两个变量很重要,一个是ARCH,一个CROSS,ARCH表示我们当前的配置编译路径,如果我们的ARCH =AR

arm-linux kernel启动过程分析(1)-start_kernel之前第一步

前段时间移植uboot仔细研究过uboot启动过程,最近耐不住寂寞,又想对kernel下手. Uboot启动过程分析博文连接如下: http://blog.csdn.net/skyflying2012/article/details/25804209 kernel启动过程一般不需要我们修改,研究这个对于编写driver也没有多大帮助,但对了解整个linux架构,各种机制还是非常有用. 如一句心灵鸡汤所说,只有了解一个人如何成长,才能看清他是什么样的人(语文不好,大体意思如此..) 只有知道ker

XAMPP 的 Linux 版 (x86 兼容处理器版)安装配置使用详细介绍,教你建好一个LAMPP站!

XAMPP 的 Linux 版 (x86 兼容处理器版) 以前被称作 LAMPP,但为了避免误解,将其重名命为 ?XAMPP 的 Linux 版?.所以,如果您在寻找 LAMPP下载.安装.配置.使用方法,您就来对地方了. 安装过程仅 4 个步骤 步骤 1:下载 只需点击下面的链接.下载最新版总是好主意.:)完整的下载列表(老版本)可在 SourceForge 找到. 详细的 XAMPP 各版本更新记录可在 发布说明 中找到. XAMPP Linux 1.8.2 107 MB Apache 2.