S3C2440 启动代码分析

2019-11-14来源: 51hei关键字:S3C2440  启动代码  Nand  Flash

启动代码是系统上电或复位以后运行的第一段代码,它的作用是在用户程序运行之前对系统硬件及软件运行环境进行必要的初始化并在最后使程序跳转到用户程序,它直接面对ARM 处理器内核及硬件控制器进行编程,所执行的操作与具体的目标系统紧密相关。

S3C2440 支持两种方式的启动:Nor Flash 启动和Nand Flash 启动。Nor Flash 和Nand Flash 都是非易失性存储器,Nor Flash 的特点是芯片内执行,程序可以直接在其中运行,而不必将程序读取到RAM 中运行。Nor Flash 虽然具有这个优点,但是它的性价比远低于Nand Flash,因而很多系统采用Nand Flash 启动。Nand Flash 的特点是采用非线性存储模式,程序无法在其中运行,它只能作为程序或数据的存储载体,存储在其中的程序只能先拷贝到RAM 中才能运行。      从Nor Flash 启动时,与nGCS0 相连的Nor Flash 就被映射到nGCS0 片选的空间,其地址被映射为0x00000000;从Nand Flash 启动时,S3C2440 芯片内部自带的一块容量为4K 的被称为“Steppingstone”(“起步阶石”)的BootSRAM 被映射到nGCS0 片选的空间,其地址被映射为0x00000000。当系统上电或复位时,程序会从0 地址处开始执行,因此我们编写的启动代码要确保存储在0 地址处。

当启动方式为Nor Flash 启动时,没有额外需要考虑的问题,因为这种情况下程序在系统启动前就存储在Nor Flash 中,我们只要保证将启动代码保存在Nor Flash 开始的位置即可,系统上电或复位时,0 地址处的启动代码就会被执行。

在启动方式为Nand Flash 启动的情况下,系统启动前所有的程序存储在Nand Flash 中,系统的启动过程稍微有点复杂:系统上电或复位时,0 地址处为S3C2440 内部自带的BootSRAM,启动前里面没有任何存储内容,启动后S3C2440 先通过硬件机制将Nand Flash 前4K 的内容拷贝至其中,然后再运行里面的程序(从0 地址处)。这种情况下我们需要保证将启动代码保存在Nand Flash 开始的位置,并且启动代码的大小要小于4K。如果系统的所有程序在编译链接后的大小小于4K,那在系统的启动代码中无需考虑将程序从Nand Flash 搬运到SDRAM 这个问题,因为所有的程序在启动时即全部由Nand Flash 拷贝至BootSRAM,程序在BootSRAM 中运行即可;如果系统的所有程序在编译连接后的大小大于4K,那在系统的启动代码中需要包含一段将系统的全部程序从Nand Flash 搬运到SDRAM 的代码,因为系统启动时只将Nand Flash 的前4K 拷贝到了BootSRAM 中,还有部分程序保存在Nand Flash 中, Nand Flash 中是无法运行程序的,需要将所有程序拷贝至SDRAM 并在其中运行,所以在系统的启动代码中要包含这段有关程序拷贝的代码,并在所有程序拷贝完成后使程序跳转到SDRAM 中运行。也就是说在启动方式为NandFlash 启动的情况下,因为Nand Flash 的特性,程序需要涉及到两次的搬移,一次是从Nand Flash 搬移到BootSRAM,搬运的程序量大小是4K,目的是使系统能够启动;第二次搬运是从Nand Flash 搬运到系统的SDRAM,如果系统的所有程序量小于4K,这一步可以省略,搬运的程序量大小是系统的所有程序,目的是使程序在SDRAM 中运行。第一次搬运是S3C2440 通过硬件机制自动实现的,我们无需干预,第二次则需要我们程序员来实现。

关键字:S3C2440  启动代码  Nand  Flash 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic479978.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:关于ARM的22个概念
下一篇:ARM920T看门狗定时器、系统时钟

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

串口控制FL2440(S3C2440)的LED
开发板:FL2440芯片:S3C2440功能:程序运行时点亮一个LED,然后利用PC机通过串口发送一个数,开发板读到这个数后点亮另外一个LED。最基本的串口控制。代码:Init.sAREA |DATA|,CODE,READONLY ENTRY ldr r13, =0x1000 IMPORT WuqiMain b WuqiMain END include.h 1 #define rUTRSTAT0   (*(volatile unsigned *)0x50000010)    //UART 0 Tx/Rx status 
发表于 2019-11-27
S3C2440串口通信基本功能的代码(注释+学习)
功能:将通过串口接收到的内容再发送出去,在PC机上看到的现象就是在串口通信软件中输入什么就会实时地显示什么。主文件:serial.c 1 //最常用的寄存器是ULCON、UCON、UBRDIV、UTRSTAT、UTXH、URXH这六个寄存器 2 #define ULCON0         (*(volatile unsigned *)0X50000000)     //UART线控制寄存器 3 #define UCON0          (*(volatile unsigned
发表于 2019-11-27
S3C2440串口代码_函数_初始化_发送Byte_发送string_Printf
通常情况下都会将串口的初始化语句写进一个初始化函数Uart_Init()中: 1 void Uart_Init(int baud) 2 { 3     int i; 4     rUFCON0 = 0x0;   //UART FIFO disable 5     rULCON0 = 0x3;   //关闭红外传输模式而用Normal模式,No parity,1 stop,每帧8bits数据位 6     rUCON0  = 0x805; //先看[11:10]=10
发表于 2019-11-27
s3c2440 NAND与NOR启动方式详解+个人验证
一:地址空间的分配1:s3c2440是32位的,所以可以寻址4GB空间,内存(SDRAM)和端口(特殊寄存器),还有ROM都映射到同一个4G空间里.2:开发板上一般都用SDRAM做内存flash(nor、nand)来当做ROM。其中nand flash没有地址线,一次至少要读一页(512B).其他两个有地址线3:nandflash不用来运行代码,只用来存储代码,NORflash,SDRAM可以直接运行代码)4:s3c2440总共有8个内存banks6个内存bank可以当作ROM或者SRAM来使用留下的2个bank除了当作ROM或者SRAM,还可以用SDRAM(各种内存的读写方式不一样)7个bank的起始地址是固定的还有一个灵活的
发表于 2019-11-25
s3c2440 NAND与NOR启动方式详解+个人验证
S3C2440时钟和电源管理
一、时钟1.系统架构时钟源:为了减少外界环境对开发板电磁干扰,降低制作成本,通常开发板的外部晶振时钟频率都很低,TX2440开发板由12MHz的晶振来提供时钟源,要想让CPU运行在更高的频率就要通过时钟控制逻辑单元PLL(锁相环)来提高主频。S3C2440里有两个PLL:MPLL和UPLL,MPLL用来产生FCLK的高频工作时钟(而HCLK和PCLK通过FCLK分频获取),UPLL用来为USB提供工作频率。FCLK为ARM920T内核提供时钟,详见下图HCLK主要为S3C2440 AHB总线(Advanced High performance Bus)上挂接硬件提供工作频率,AHB总线主要挂接有内存,NAND,LCD控制器等硬件
发表于 2019-11-23
S3C2440时钟和电源管理
对STM8S单片机GPIO.C的理解
一、STM8S单片机GPIO.C的组成实际上,STM8S 系列单片机需要使用的stm8s_gpio.c由以下几个部分组成:void GPIO_DeInit(GPIO_TypeDef* GPIOx)void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_Pin_TypeDef GPIO_Pin, GPIO_Mode_TypeDef GPIO_Mode)void GPIO_Write(GPIO_TypeDef* GPIOx, uint8_t PortVal)void GPIO_WriteHigh(GPIO_TypeDef* GPIOx, GPIO_Pin_TypeDef PortPins)void
发表于 2019-11-21
小广播
404 Not Found

404 Not Found


openresty
何立民专栏 单片机及嵌入式宝典

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

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2019 EEWORLD.com.cn, Inc. All rights reserved