目前来说对于存储单元SRAM的研究主要基于硬件电路来完成,并且在也都是在生产过程中产生的这些办法,但并不能够当当从生产过程中去杜绝SRAM的硬件故障,如果SRAM硬件出错导致程序出错特别是在使用过程中,是较难被发现的,因此通过软件对SRAM 进行检测是为了防止在运用过程中因存储单元损坏而导致系统出错。
1 SRAM运行状态分析
SRAM是一种易失性的随机静态存储器,存储非CONSTANT变量(如RW),具有掉电丢失数据的特点,从系统上电后,从Corter-M3启动步骤可得知,需先执行复位的五个步骤:
①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检测软件程序流程。
图1 SRAM检测软件程序流程
4 在线调试结果及分析
上电复位后,在线调试PC指针指向Reset_Handler入口地址时的SRAM初始数值如图2所示。可以看到,当系统复位时每个SRAM单元的数值均为0x00。
在线调试下,图3为对所有的SRAM地址进行检测后SRAM的数值,完全符合程序设计要求。
SRAM测试通过后,释放所有的SRAM,还原为0x00,如图4所示。
5 结论
本文提出了一种基于软件的SRAM单元故障自检测方法,通过在线调试得到的结果,可知该方法是完全可行的。在实际运用中,该方法能够确保系统正常地运行在可靠的环境之上。如果SRAM单元有生产或运输等损坏,也可以通过该方法方便地检测出来,大大减少了系统排除故障的时间。
本文关键词:
SRAM
相关文章:
电动自行车MCU应用方案—灵动微电子MM32SPIN07
深圳市英尚微电子有限公司是一家专业的静态随机记忆体产品及方案提供商,十年来专业致力代理分销存储芯片IC, SRAM、MRAM、pSRAM、 FLASH芯片、SDRAM(DDR1/DDR2/DDR3)等,为客人提供性价比更高的产品及方案。
英尚微电子中国区指定的授权代理:VTI、NETSOL、JSC济州半导体(EMLSI)、Everspin 、IPSILOG、LYONTEK、ISSI、CYPRESS、ISOCOME、PARAGON、SINOCHIP、UNIIC; 著名半导体品牌的专业分销商 如:RAMTROM、ETRON、FUJITSU、LYONTEK、WILLSEMI。
更多资讯关注SRAMSUN. www.sramsun.com 0755-66658299