S3C2410快速启动的实现

发布者:dst2015最新更新时间:2006-05-16 来源: 今日电子关键字:存储器  堆栈  中断 手机看文章 扫描二维码
随时随地手机看文章

  嵌入式系统对功能、可靠性、成本、体积、功耗等均有严格要求,以ARM体系结构为基础的各种RISC微处理器具有灵活的特性和强大的性能,在嵌入式系统中得到了广泛的应用。---S3C2410是三星公司基于ARM920T设计的一款处理器,在开发基于S3C2410的系统的过程中,如何让系统快速稳定地启动是一个重要问题。嵌入式系统的资源有限,程序通常都是固化在ROM中运行。但在实际应用中,为提高系统的实时性,加快代码的执行速度,系统启动后程序往往要被搬移到RAM中,因为RAM的存取速度要比ROM快得多,这样大大提升系统的性能。启动程序要完成的任务包括:硬件初始化,系统存储系统的配置,复制二级中断向量表。

  启动程序过程

  系统硬件初始化

  系统上电或复位后,程序从位于地址0x0的Reset Exception Vector处开始执行,因此需要在这里放置Bootloader的第一条指令:b ResetHandler,跳转到标号为ResetHandler处进行第一阶段的硬件初始化,主要内容为:关看门狗定时器,关中断,初始化PLL和时钟,初始化存储器系统。执行完以上程序后,系统进行堆栈和存储器的初始化。系统堆栈初始化取决于用户使用了哪些中断,以及系统需要处理哪些错误类型。一般情况下,管理者堆栈必须设置,如果使用了IRQ中断,则IRQ堆栈也必须设置。如果系统使用了外设,则需要设置相关的寄存器,以确定其刷新频率、总线宽度等信息。

  代码段复制到RAM中运行

  因为嵌入式系统的代码通常都是固化在ROM或者Flash中,上电后开始运行。由于ROM和Flash的读取速度相对较慢,这样无疑会降低代码的执行速度和系统的运行效率。为此,需要把系统的代码复制到RAM中运行。使用SDT链接器ARMLink产生的定位信息,把RO的有效代码和数据段到RAM中。ARMLink将编译后的程序链接成ELF文件。映像文件内部共有三种输出段:RO段、RW段和ZI段。这三种输出段分别包含了只读代码及包含在代码段中的少量数据、可读写的数据、初始化为0的数据,ARMLink同时还产生了这三种输出段的起始和终止定位信息:Image$$RO$$Base、Image$$RO$$Limit、Image$$RW$$Base、Image$$Limit、Image$$Linit和Image$$ZI$$Limit。可以在程序中使用这些定位信息。将ROM中的代码和数据搬移到RAM中,具体程序如下。

  BNE %B0 /*如果没有复制完,跳转到0标示符处的汇编语句,继续复制,参见ARM指令帮助手册

  建立二级中断向量表

  在ARM系统中,中断向量表位于0X0开始的地址处,意味着无论运行什么样的上层软件,一旦发生中断,程序就得到Flash存储器中的中断向量表里去,降低系统的运行效率。因此在RAM中建立自己的二级中断向量表,当中断发生后,程序直接从RAM中取中断向量进入中断子程序。尤其是在中断频繁发生的系统里,这种方法可以大大提高系统的运行效率,具体的实现代码如下


  其中HANDLER是一个宏,用于查找中断处理程序的入口地址。这些地址存放在由HandleXXX指向的表项中,该表定位在RAM高端,基地址为_ISR_STARTADDRESS


  MMU的应用

  MMU是存储器管理单元的缩写,是用来管理虚拟内存系统的器件。MMU通常是CPU的一部分,本身有少量存储空间存放从虚拟地址到物理地址的匹配表,此表称作TLB(转换旁置缓冲区)。所有数据请求都送往MMU,由MMU决定数据是在RAM内还是在大容量外部存储器设备内。如果数据不在存储空间内,MMU将产生页面错误中断。MMU存储器系统的结构允许对存储器系统的精细控制,大部分的控制细节由存在存储器中的转换表提供。这些表的入口定义了从1KB~1MB的各种存储器区域的属性。MMU完成的两个主要功能是:将虚地址转换成物理地址,控制存储器存取允许。MMU关掉时,虚地址直接输出到物理地址总线。

  经过以上的分析可以发现,系统启动程序主要是完成了硬件的初始化,以及克服Flash或ROM读取速度慢的弱点,提高指令和数据的读取速度,实现系统的高速运行,并且通过MMU的应用,减少RAM的使用,降低系统成本。


参考文献
1 S3C2410数据手册
2 ARM920T数据手册
3 王京林.ARM7在嵌入式应用中启动程序的实现

关键字:存储器  堆栈  中断 引用地址:S3C2410快速启动的实现

上一篇:S3C2410快速启动的实现
下一篇:ARM 入门

推荐阅读最新更新时间:2024-05-02 20:24

SK Hynix有望获得东芝存储器33%股权?INCJ:签约时间未定
  据华尔街日报知情人士透露,在东芝公司将出售旗下半导体业务东芝 存储器 的出售计划中,包含  SK  Hynix 拥有最高可取得33%股权的选择权(option),而东芝在对外发表的声明中从未提到过该选择权, SK  若成为日本官民基金“产业革新机构”(INCJ)以外的大股东的话,相信势必引来西部数据更大的反对。下面就随网络通信小编一起来了解一下相关内容吧。   东芝于6月21日决定由 INCJ、美国投资基金以及韩国  SK  Hynix 等所筹组的“日美韩联盟”为半导体事业子公司“东芝 存储器 ”(Toshiba Memory Corporation)的优先交涉对象后,原先是计划要在 6 月 28 日举行定期股东会之前和日美
[网络通信]
整合MCU和DSP优势的DSC推动绿色革命
数字信号控制器(DSC)是一种集微控制器(MCU)和数字信号处理器(DSP)专长于一身的新型处理器。与MCU一样,DSC具有快速中断响应、提供面向控制的外设(如脉宽调制器和看门狗定时器)、用C编程等特性。DSC还集成了诸如单周期乘累加(MAC)单元、桶式移位器(barrel shifter)和大的累加器等功能。 DSC适合多种应用,但主要领域还是马达控制、电源转换和传感器处理。在这些应用中使用DSC的主要动机是降低功耗。采用DSC来降低功耗的最显著成果来自将变速马达转为恒速马达。变速驱动(需DSC提供的DSP马力来实现)的能耗大约只相当恒速驱动的一半。 节能潜力巨大 由于恒速驱动的应用广泛,因此,变速驱动具有广阔的节能应用前
[焦点新闻]
ARM·存储器配置
关于配置SDRAM的这个程序,因为研究了2天,所以这里最后再复习一下 首先补充一下基本的知识: 运行地址- 链接地址 在SRAM或者SDRAM中执行程序时,PC指向这个地址,那么命令就应该在这个地址里面 ; 加载地址- 存储地址 程序保存在NAND FLSAH中的地址 位置无关码:B,BL,MOV 位置有关码:LDR PC,=Label 【关于Makefile】 sdram.bin : head.S leds.c arm-linux-gcc -c -o head.o head.S arm-linux-gcc -c -o leds.o leds.c arm-linux-l
[单片机]
存储芯片持续降价:有SSD存储器价格直接腰斩
SSD要成白菜价了。 很长一段时间来,SSD价格都在持续下滑,跌幅巨大,但反而越降价就越没人买,似乎已经进入了这个循环中无法自拔。 央视财经频道也关注到了该情况,在最新报道中提到,去年存储芯片价格持续上涨,今年却价格一路向下。 有记者来到上海虹口区的一家数码电子商城,咨询了一款容量1TB的M2接口的存储器,型号为三星980,去年价格一度上涨至1400元左右,目前已经不到700元。 目前大多数存储器的价格都有较大跌幅,商户称自去年11月后,存储器价格便开始一路下滑。 存储器主要由控制器和存储芯片组成,决定其价格的就是存储芯片。 今年上半年,下游需求下滑,但全球存储芯片出货量仍然保持增长,行业内如美光、海力士等多
[半导体设计/制造]
S3C2440开发板裸机程序系列08—中断控制
1. 概述 最近刚刚在TQ2440上面调通了ADXL345的I2C控制,可通过串口和TFT屏查看XYZ三个轴倾角变化,本来打算把TQ2440上面的I2C控制详细解说一下,但是还跳了2个知识点:中断和I2C协议。所以还要等我补充完这2个知识点再说。(I2C协议要从51单片机说起,后面总结时再谈吧) 从程序的执行过程来说,可以分为:正常执行,跳转执行(Arm汇编是B和BL指令,B指令不返回),中断处理。 从嵌入式控制的要求来说,一个嵌入式装置要完成大量的数据采集、数据变换、外设控制等功能,这些子功能的实现一般分为:查询方式和中断方式。显然中断方式可以提高处理器利用率,提高系统实时性。 S3C2440的中断包括快速中断FIQ
[单片机]
S3C2440开发板裸机程序系列08—<font color='red'>中断</font>控制
嵌入式多媒体应用中的片上数据存储器的分配方法
前 言 随着CPU速度的迅速提高,CPU与片外 存储器 的速度差异越来越大,匹配CPU与外部存储器的方法通常是采用Cache或者片上存储器。 微处理器 中片上存储器结构通常包含指令Cache ,数据Cache 或者片上存储器。对于嵌入式设备上的数据密集的应用,数据Cache 与片上存储器相比存在以下缺陷:(1) 片上存储器是固定的单 周期 访问,可在设计时而不是运行时研究数据访问模式;而Cache还要考虑击不中的情况,因而有可变的数据访问时间,执行时间的预测更加困难。(2) 使用Cache 执行时间的不可预测性影响编译器的优化;(3) 细颗粒的Cache 对于图像 编码 等的规则数据访问并不合适,因而使用Cache 对于嵌
[单片机]
STM32入门学习之EXTI外部中断(STM32F030F4P6基于CooCox IDE)
下面的代码,是把PA0当做一个按键口,芯片内部上拉,按键闭合时,IO口被拉低,触发中断。 #include stm32_lib/inc/stm32f0xx_rcc.h #include stm32_lib/inc/stm32f0xx_exti.h #include stm32_lib/inc/stm32f0xx_gpio.h #include stm32_lib/inc/stm32f0xx_syscfg.h #include stm32_lib/inc/stm32f0xx_misc.h int main(void) { //时钟使能 RCC_AHBPeriphClockCmd(RCC_AHBPeriph_G
[单片机]
STM32入门学习之EXTI外部<font color='red'>中断</font>(STM32F030F4P6基于CooCox IDE)
STM32的存储器映射
存储器映射是指把芯片中或芯片外的FLASH,RAM,外设,BOOT,BLOCK等进行统一编址。即用地址来表示对象。这个地址绝大多数是由厂家规定好的,用户只能用而不能改。用户只能在挂外部RAM或FLASH的情况下可进行自定义。 Cortex-M3支持4GB的存储空间,它的存储系统采用统一编址的方式; 程序存储器、数据存储器、寄存器被组织在4GB的线性地址空间内,以小端格式(little-endian)存放。由于Cortex-M3是32位的内核,因此其PC指针可以指向2^32=4G的地址空间,也就是0x0000_0000——0xFFFF_FFFF这一大块空间。见图1: 图1 Cortex-M3的存储器映射
[单片机]
STM32的<font color='red'>存储器</font>映射
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

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

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