引言
目前,对于存储单元SRAM的研究都是基于硬件电路来完成,而且这些方法都是运用在生产过程中,但是生产过程并不能完全杜绝SRAM的硬件故障。在其使用过程中,如果SRAM硬件出错,将导致程序出错而且很难被发现。因此在运用的阶段,为防止存储单元损坏而导致系统出错,通过软件的方式对SRAM进行检测是必要的。
1 SRAM运行状态分析
SRAM是存储非CONSTANT变量(如RW),它具有掉电即失的特点。由Cortex—M3的启动步骤可知,系统上电后,首先执行复位的5个步骤:
①NVIC复位,控制内核;
②NVIC从复位中释放内核;
③内核配置堆栈;
④内核设置PC和LR;
⑤运行复位程序。
可以看出,不能在调入C环境之后检测SRAM,必须在Cortex—M3复位之前和启动之后进行检测。
在执行系统复位的最后一个步骤之前,系统都没有对SRAM执行任何相关的数据传送动作。第⑤步运行复位程序,在ST公司Cortex-M3处理器内核的STM32系列微控制器的启动代码中有一段复位子程序:
在这个子程序里导入了__main,__main是C库文件的入口地址。它执行下面3个步骤:
①复制非root(RW、RO)从Flash到SRAM;
②分配ZI区,并且初始化为0;
③跳转到堆栈初始化子程序接口__rt_entry。
由_ _main的第一步可以得出,在跳入_ _main之后,系统对SRAM进行了相关数据转移的操作。因此,检测SRAM必须在此步骤之前,否则将会覆盖SRAM从Flash中转移过来的数据。
2 SRAM检测方案设计
在复位子程序跳入_ _main之前,设计另一个程序入口SRAM_Check,使PC指针指向该SRAM进行硬件单元检测程序(SRAM_Check)的入口。在SRAM_check里,首先将PC指针指向SRAM的首地址并写入0xFF,读回该地址的值到通用寄存器Rn1,并对Rn1里的值进行加1操作,然后将Rn1和256做比较,得出SRAM硬件是否损坏。这种操作可以避免因SRAM硬件一直为1或0而出现算法本身错误。由于Cortex—M3复位后默认的时钟为HSI,是一个内部RC振荡器,因此精度不高。如果需要更准和快速的时钟,就必须在跳入SRAM_Check之前对相关的寄存器进行操作。
3 SRAM检测软件设计
图1为本文设计的SRAM检测软件程序流程。
[page]
4 在线调试结果及分析
上电复位后,在线调试PC指针指向Reset_Handler入口地址时的SRAM初始数值如图2所示。可以看到,当系统复位时每个SRAM单元的数值均为0x00。
在线调试下,图3为对所有的SRAM地址进行检测后SRAM的数值,完全符合程序设计要求。
SRAM测试通过后,释放所有的SRAM,还原为0x00,如图4所示。
5 结论
本文提出了一种基于软件的SRAM单元故障自检测方法,通过在线调试得到的结果,可知该方法是完全可行的。在实际运用中,该方法能够确保系统正常地运行在可靠的环境之上。如果SRAM单元有生产或运输等损坏,也可以通过该方法方便地检测出来,大大减少了系统排除故障的时间。
关键字:Cortex-3 SRAM 自检测
引用地址:
Cortex—M3的SRAM单元故障软件的自检测研究
推荐阅读最新更新时间:2024-03-16 13:07
基于SRAM的微控制器优化了安全性
结果表明,非易失性(NV)SRAM是用于存储安全数据的最安全的存储器。通过使用 DES 或三重 DES 加密内存,可以建立加密边界,使安全信息不被黑客渗透。通过使用防篡改反应传感器,可以进一步保护SRAM的易失性,这些传感器将擦除加密密钥作为响应。密码键盘等金融应用依靠自动程序和数据存储器加密功能来保护数据。DS5250是一款高性能、安全的8051微控制器,利用安全SRAM的独特特性来保护敏感数据。 无论是在自动取款机、护照/身份验证设备还是便利店的销售点终端中,都必须保护密码、个人识别码 (PIN)、加密密钥和专有加密算法等关键信息免受黑客攻击。金融服务采用详细的政策和程序来保护硬件和软件。因此,金融交易系统的设计者在开发每
[单片机]
智原科技推出世界最小存储面积的40eHV与40LP SRAM编译器
台湾新竹2017年3月30日电 /美通社/ -- ASIC设计服务暨IP研发销售厂商智原科技(Faraday Technology Corporation, TWSE: 3035)今日发表基于联电40eHV与40LP工艺的新一代内存编译器(SRAM compiler)。该编译器结合联电最新的0.213um 2 存储单元(bit cell)技术与智原科技的优化存储器外围电路设计,可自动输出具有世界最小单元面积的存储区块,尤其在40eHV的工艺节点,可显著地为行动装置显示器驱动芯片(MDDI)相关应用降低成本。 联电推出40eHV与40LP工艺最小的0.213um2储存单元后,智原立即率先推出相对应的SRAM编译器。相较于原先的0
[半导体设计/制造]
Linux下ColdFire片内SRAM的应用程序优化设计
本文以MP3解码器为例,介绍了一种在嵌入式Linux系统下配置使用处理器片内SRAM的应用方案,有效提高了代码的解码效率,降低了执行功耗。该方案不论在性能还是成本上都得到了很大改善。
1 硬件平台和软件架构
硬件平台采用Freescale公司的MCF5329EVB开发板。终端硬件包括ColdFire5329处理器、32 KB的片内SRAM、1 800×600矩阵LCD显示屏、9×3阵列矩阵键盘、I2S音频解码芯片、64 MB的SDRAM、10/100M以太网接口,以及3个UART接口。软件构架如图1所示,主要包括MP3解码器、音频驱动、键盘驱动和用户图形界面(GUI)等模块。采用μClinux作为操作系统。μ
[嵌入式]
STM32单片机用FSMC接口控制SRAM
环境: 主机:WIN7 开发环境:MDK4.72 MCU:STM32F103ZE 说明: sram型号:IS62WV51216BLL 连接方式:FSMC 大小:1M字节.512K * 16 源代码: inf_sram.h span style= font-family:SimHei; font-size:18px /********************************************************************* * sram接口层头文件 * (c)copyright 2013,jdh * All
[单片机]
工业4.0 非易失性数据记录
减少停机时间的能力是管理工业设施的重要因素。目前,预测停机时间难度较大且成本非常昂贵。比如,普通汽车制造厂的停机时间可能高达每分钟22,000美元或每小时130万美元(来源:先进技术服务,2006年:“ 汽车行业停机成本:每分钟22000:调查。 ”)。 随着 工业4.0 的出现,工厂的智能化和互联性正在日益提高。智能工厂中的机械设备就能够采用所连接的无线传感器节点的实时数据,提前预测可能发生的故障,并通知控制系统采取纠正措施,以避免意外的系统停机。累积的数据可以用于改进预测分析,并实现更好的机器预防性维护。这些进步旨在提高工厂的运营效率,并缩短整体停机时间。 工业4.0的基础 —— 可操作数据实现了从实时传感到预测分析等
[嵌入式]
基于 QDR-IV SRAM 实现网络流量管理统计计数器 IP设计
网络路由器带有用于性能监控、流量管理、网络追踪和网络安全的统计计数器。计数器用来记录数据包到达和离开的次数以及特定事件的次数,比如当网络出现坏包时。数据包的到达会使多个不同的统计计数器发生更新;但一台网络设备中的统计计数器的数量及其更新速度常常受到存储技术的限制。 管理统计计数器需要高性能的存储器才能满足多重的读—修改—写操作。本文将描述一种使用IP方法的独特统计计数器,这种计数器的一端可以连接网络处理器(NPU),另一端可以连接Xilinx公司的QDR-IV存储控制器。QDR-IV统计计数器IP是一种带有QDR-IV SRAM、为网络交流管理和其他计数器应用提供高效统计计数器的软IP。 QDR-IV SRAM概述 QD
[网络通信]
ATmega2560外部SRAM扩展键盘的应用设计
ATmega2560微控制器是ATmega系列中最为高档的一款。它在消费电子产品和工业自动控制领域都得到了广泛的应用。由于开发成本较低,容易上手,功能强大,只需要制作一条简单的ISP下载线,就能够把编好的程序写入它的程序存储器中进行丌发,可节省很多开发成本。本文通过介绍了ATmega2560微控制器外部SRAM扩展盘的应用设计实例,介绍了灵活应用外部存储器扩展功能方法,让初学者能迅速掌握设计难点和要点。 1 ATmega2560微控制器概述 ATmega2560具有速度快、时钟频率高,I/O 口功能强、驱动能力大,存储功能灵活、外设丰富,低功耗、高度保密行,特别是简单易上手、开发成本低的特点。 ATmega2560微控
[单片机]
单向双端口SRAM的测试算法
引 言 单向双端口SRAM是一种专用的存储器,它具有独立的写地址总线和读地址总线,不仅可以实现单端口的读写,还可以对不同地址的存储单元进行同时读写操作,提高了SRAM的性能。本文分析了单向双端口SRAM的失效模式,并描述了相应的基于字的检测算法。 存储器模型 图1表示了3×3的单向双端口SRAM模块的结构示意图,输入为读地址总线、写地址总线和输入数据总线,输出为输出数据总线。每一个存储单元都有四个端口,分别是数据写入(BW),数据读出(BR),写地址端口(WA)和读地址端口(RA)。在这种结构中,同一列单元的数据写入端和读出端连到总线上,输出采用了线与的方式。对于字长大于1的存储器来说,读地址和写地址一次选中一行,一
[测试测量]