嵌入式系统快速重启的研究

发布者:江上HZ最新更新时间:2013-03-01 来源: EDN china 关键字:嵌入式系统  快速重启  S3C2440 手机看文章 扫描二维码
随时随地手机看文章

  前言

  随着计算机技术的发展,工业技术也跟着迅猛发展起来了,而伴随着嵌入式的应用也很变得非常广泛。

  ARM芯片为了保证指令运行的实时性,指令没有直接在FLASH里面运行,而是先把FLASH里面的数据拷贝到读取速度比较快的SDRAM里面,然后运行,这样就提高了运行速度。但是由于程序的固定性,在我们重新启动的时候,会再次拷贝代码。我们知道SDRAM是掉电不保存数据的,但是,如果SDRAM没有掉电,里面的数据是不会丢失的。而我们重启的时候并没有给芯片断电,而这个时候系统又要重新拷贝一次代码,造成了时间的浪费。

  当然在工业上,我们的系统启动起来之后,往往重新启动的可能性较少,这样每次启动浪费的时间也就可以忽略不计了。不过,在我们使用数码相机的时候,要抢拍一个镜头,这个时间可能就是毫秒级的,在每次开机的时候都需要几秒的启动时间,是无法忍耐的。而也不能一直开机,便携式的相机电池的电量太有限了。我们经常的一种解决办法是将系统切换到低功耗模式,而仅仅是低功耗模式还是要浪费电量。而我们想,如果只给SDRAM供电,作为待机模式,每次按下复位键的时候就直接跳到SDRAM中运行,而不必再次复制代码。这就实现了快速启动,电池的供电时间也相应的延长了。

  Samsung ARM系列S3C2440处理器简介

  在这里所使用的S3C2440处理器是Samsung公司推出的基于ARM920T核的32位RISC微处理器。S3C2440具有低功耗、低成本和高性能的特点,已成为PDA、智能手机、网络计算机终端以及智能设备的终端产品等的热门解决方案之一。

  S3C2440内部资源丰富、结构复杂、接口众多,具有相互独立的16kB指令缓存和16kB数据缓存,带有MMU虚拟存储单元和AMBA总线接口。

  S3C2440支持的内外围设备包括外部存储控制器、中断控制器、LCD控制器、8通道10bit精度的ADC和触摸屏控制器、SD/MMC卡控制器、4通道DMA、4通道具有PWM功能的定时器、具有日历功能的实时时钟、看门狗定时器、3通道UART(包含IRDA红外线数据通讯口)、USB主机/设备接口、I2C总线接口、I2S数字音频总线接口、2通道SPI总线接口、通用I/O端口以及具有锁相环功能片上时钟发生器等、同时也可以柑橘需要进行功能扩展从而支持以太网接口、PCMCIA接口及IDE接口等。

  S3C2440外部存储器电路图

  在这里我们使用FLASH作为程序和数据固化的存储器,使用SDRAM作为系统启动之后, 程序运行的区域。而S3C2440核内部4k的SRAM固定作为最初的启动代码使用,地址是从0x0000_0000开始的。

  这里使用nGCS6将SDRAM的地址编址到0x3000_0000位置处,使用ADDR寻址,使用DAT读取和写入需要的数据,使用FCON控制信号控制SDRAM的状态。

  使用FCON控制FLASH的状态,根据DATA按照时序送入数据和命令,做相应的处理。

  这三部分就构成了ARM运行的最小系统。

  嵌入式系统启动流程

  ① 上电,复位完成;② 嵌入式ARM核自动把flash里面最低的4k启动代码复制到SRAM里面,并从SRAM的0x0000_0000地址开始执行;③ 完成一些必要的初始化工作,将FLASH中的代码拷贝到SDRAM中;④ 跳转到SDRAM中运行;通过以上步骤,就进入了我们的应用程序,或者是操作系统。

  在我们需要复位的时候, 即nRESET管脚出现一个向下的脉冲,即出现复位。当nRESET信号为低电平时,ARM处理器放弃任何指令的执行,并从增加的字地址处取指令;当nRESET信号变为高电平时,ARM处理器进行如下操作:1.将当前的PC值和CPSR值写入R14_svc和SPSR_svc,已经保存的PC和SPSR的值是未知的;2.强制M[4:0]为10011(超级用户模式),将CPSR中的“I”和“F”位设为1,并将T位清零;3.强制PC从0x00地址取下一条指令。4.恢复为ARM状态开始执行。即程序会跳到0x0000_0000这个地址位置,开始执行上面所述的第三步和第四步。

  我们知道从flash里面读取数据比起SDRAM是想当慢的,而这里又要进行一次代码的拷贝工作,这也是一个相当长的时间。不过这个时候我们可以发现,我们并没有断电,SDRAM里面放的数据还是我们代码,我们没有必要重新拷贝这些代码了,在下次启动的时候,只需直接跳转到SDRAM中运行,做一些初始化工作就可以了。这样重新启动速度就相当迅速了。

  快速重启思想

  核心思想:在Bootloader里面,程序执行到复制程序的一块,可以判断PC当前计数在哪个存储器里面,如果在SRAM中,就把代码复制到SDRAM里面,如果在SDRAM中,就直接跳过复制程序这一段,然后继续执行。

  根据上面这个思想, 可以先将地址为0x0000_0000这里的跳转指令直接改成跳转到SDRAM存储器,如LDR PC,=0x3000_0000。

  这样在Reset的时候,我们就可以直接从0x0000_0000地址跳到0x3000_0000开始运行。这样我们就达到了快速启动的目的。[page]

  如图2 所示, 在系统加电的时候,程序从地址为 0x0000_0000开始的SRAM处运行,如上图1所示。


  然后,程序在SRAM中将代码自身复制到地址为0x3000_0000开始处,如图2中2所示。


  在将代码复制完之后将地址为0x0000_0000处的复位中断跳转矢量改为跳转到0x3000_0000,如图2中3所示。


  然后程序跳转到SDRAM中,地址为相对于0x3000_0000的一个偏移量,这个偏移量为当前地址距0x0000_0000的偏移量,如图2中4所示。

  在图2中5中,如果用户使用了Reset按键,重新启动系统,我们就可以从地址为0x0000_00000处直接跳转到0x3000_0000这个位置,开始进行硬件初始化等工作,这次就不会有代码拷贝的过程了。

  快速重启软件流程

  下面是系统自开机开始, 程序修改复位跳转指令的流程图,在修改0x0000_0000处的跳转指令可用如下数据替代:

  使用LDR PC, =0x3000_0000指令,反汇编后得到的32位指令数据是0xE3A0_F5C0,将其放到0x0000_0000处即可。

  而修改0x0000_0000处的数据,可用如下指令:

  程序经过以上配置,就可以实现系统的快速重启。

  结论

  系统的快速重启,应用将非常广泛。即使是嵌入式系统慢慢的也将变得很复杂,系统所占的空间也在慢慢的变大,这样一个复制过程将严重影响很多设备的使用,最简单的就是数码相机了。

关键字:嵌入式系统  快速重启  S3C2440 引用地址:嵌入式系统快速重启的研究

上一篇:嵌入式系统设计中的低功耗技术
下一篇:基于GPRS 技术的电能质量在线监测系统

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

ARM-Linux s3c2440 之I2C分析
内核版本linux-2.6.30.4 I2C在Linux中是Bus下的一个子系统. 它由客户驱动(client driver),i2c-core核心,i2c适配器驱动(adapter driver) ,算法aglorithm组成。s3c2440中有两个i2c现适配器.作为platform_device设备在系统启动先时被注册和添加。下面我们分析i2c(设备,驱动,总线)的实现过程. //填充设备资源 //struct resource结构体描述了挂接在cpu总线上的设备实体资源 //.start:i2c寄存器起始地址; .end:i2c寄存器结束地址; .flag:描述设备实体的共性和特性标志 static struct
[单片机]
s3c2440时钟与电源管理笔记
一、总述 S3c2440时钟电源管理模块分为三个部分:时钟,电源,USB控制。 时钟控制逻辑可以提供s3c2440所需要的三种时钟: FCLK for CPU, HCLK for the AHB总线设备, and PCLK for the APB总线设备。S3c2440有两个锁相环:一个可以为FCLK, HCLK ,PCLK提供时钟;另一个可以为USB模块提供48MHZ的总线时钟。时钟控制逻辑也可以在不使用锁相环的情况下产生低频时钟,并能通过软件选择是否为外围设备提供时钟。 S3c2440的电源管理模块可以激活四种状态:标准,慢速,空闲,睡眠模式。 标准模式;该模块为CPU和所有外围设备提供时钟。 低速模式:该模式锁相环
[单片机]
C++编程语言在嵌入式应用中的安全问题
  在嵌入式系统的软件设计中,“汇编语言+C语言”早已成为理所当然的经典组合。的确,对于硬件配置来说,汇编语言清晰明了;对于上层设计来说,C语言紧凑高效。这样的搭配能够满足大多数传统嵌入式系统应用的需要。随着技术水平的提高,今天的嵌入式系统也比过去更加深入到人们的日常生活中,大到汽车、飞机、火箭,小到手机、打印机、闹钟、手表,都可以找到嵌入式系统的踪影。然而,这看似一成不变的情况,也在悄然转变。随着网络、多媒体等技术的出现、发展与普及,对嵌入式系统应用有了新的要求,也给了其他高级语言,特别是C++语言以机会。   由此带来的在语言使用中的安全问题,目前虽然还未凸显,但根据以往的经验来看,终将成为限制行业发展的新瓶颈。已有的C+
[嵌入式]
SQLite在嵌入式系统Wince中的应用
随着科学技术的发展,嵌入式系统成为了科技发展的主要领域, Linus和Wince是比较常见的嵌入式系统。嵌入式开发过程离不开数据库的应用,对于嵌入式数据库的选择是必要的。通常,嵌入式系统选择的数据应该尽量小,SQLite 在Linux中的应用很广泛,本设计介绍了SQLite作为一款小巧的嵌入式数据库在Wince 中的应用实例。 1 SQLite数据库的介绍与选择 1.1 SQLite数据库结构 SQLite数据库结构图如图1所示。 1.2 SQlite数据库的特点 SQLite是一个开源的嵌入式关系数据库,结构紧凑,可靠性强 。有以下特点: (1)使用非常简单。只需要掌握3个核心API函数,大多数的SQL 语
[工业控制]
SQLite在<font color='red'>嵌入式系统</font>Wince中的应用
GNU ARM汇编--(九)s3c2440的PWM
依旧从datasheet开始看起,锻炼下阅读英文技术手册的能力 PWM TIMER 概述 s3c2440有5个16bit的定时器.Timer0,1,2和3有PWM功能.Timer4是没有输出管脚的内部定时器.Timer0有一个dead-zone产生器,用于大电流设备. Timer0和1共用一个8bit的预分频器,而timer2,3,4共用另外一个8bit的预分频器.每一个定时器都有一个时钟除法器,可以产生5个不同的除法信号(1/2,1/4,1/8,1/16和TCLK).每一个定时器从时钟除法器接收各自的时钟信号,除法器从各自的8bit预分频器接收时钟.8bit的预分频器是可编程控制的,将PCLK除成要加载的值,存在T
[单片机]
GNU ARM汇编--(九)<font color='red'>s3c2440</font>的PWM
S3C2440定时器汇编程序
S3C2440定时器源程序如下: ;************口地址及数据符号化定义区********************** pWTCON EQU 0x53000000 pLOCKTIME EQU 0x4c000000 pCLKDIVN EQU 0x4c000014 pUPLLCON EQU 0x4c000008 pMPLLCON EQU 0x4c000004 pBWSCON EQU 0x48000000 pSRCPND EQU 0x4a000000 ;中断源悬挂寄存器地址 pINTPND EQU
[单片机]
基于LabVIEW8.6和S3C2440的手持数字波形表的界面设计
将LabVIEW设计的虚拟仪器程序移植到运行WindowsCE的便携式手持设备上。可以极大地提高嵌入式系统软件开发效率。具体提出一种有效解决数据波形交替显示的界面设计,阐述了如何使用LabVIEW的触摸屏toueh panel模块开发的数字波形表用于Windows CE 5.0设备的测试项目的案例。 1 开发平台简介 1.1 基础平台 本文设计的数字波形表采用高性能、低功耗、高集成度的S3C2440A微处理器。触摸屏配合采用S3C2440A的高速处理器驱动,具有更好的视频显示效果。 1.2 软件平台 LabVIEW是美国国家仪器公司推出的一种虚拟仪器开发平台。LabVIEW包含有很多的模块,touch panel模块
[单片机]
基于LabVIEW8.6和<font color='red'>S3C2440</font>的手持数字波形表的界面设计
ARM处理器与嵌入式系统
  引言   由于各种新型微处理器的出现和应用的不断深化,嵌入式系统在后PC时代得到了空前的发展。随着时间的推移和技术的进步,在工业控制和新兴的手持式应用等领域,用户体验成为产品成功的关键因素之一,越来越多的产品需要良好的用户界面、互联功能以及较强的数据处理能力,这对嵌入式处理器硬件、软件、教学等提出了新的要求。   1 嵌入式处理器与硬件   在处理器方面,目前大量的中、低端嵌入式应用,主要使用8/16位单片机。在国内,由于历史的原因,主要是以MCS51核为主的许多不同型号单片机,主要厂商有Atmel、Philips、Winbond、宏晶等。还有一些近几年发展较快的新型单片机,如PIC、AVR、MSP430系列等。这些单片
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
502 Bad Gateway

502 Bad Gateway


openresty
设计资源 培训 开发板 精华推荐

502 Bad Gateway

502 Bad Gateway


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

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

502 Bad Gateway

502 Bad Gateway


openresty
502 Bad Gateway

502 Bad Gateway


openresty
502 Bad Gateway

502 Bad Gateway


openresty
随便看看
    502 Bad Gateway

    502 Bad Gateway


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

502 Bad Gateway


openresty