论文部分内容阅读
目前,嵌入式系统已经广泛应用在交通,医疗,航空等各种领域,对应的可靠性问题逐渐成为人们关注的焦点。考虑一个需要长时间运行的任务,在执行过程中,如果发生突发情况,导致程序不得不重新开始执行,就造成了不必要的时间开销和资源浪费。因此,能够在突发情况发生时容忍故障就显得尤为重要了。检查点技术就是这样一种有效的容错手段,计算机和嵌入式系统中使用这种技术,从而提高可靠性。本文主要研究基于Cortex-M3[2]的嵌入式系统上的硬件检查点实现。该检查点用于应对断电这类突发状况。传统的检查点技术通过软件来实现,每隔一段时间对程序的中间状态进行备份,虽然可以保证数据不会丢失,但会占用大量的应用资源来设置检查点,并且通用性较差。而硬件检查点具有很强的可移植性,也不需要多余的代码来实现。因此本文提出的硬件检查点有很好的应用前景和研究意义。首先我们采用一个基于Cortex-M3核的嵌入式系统作为研究对象,该系统包括CPU软核、RAM、UART接口、SPI接口、JTAG调试接口和外部存储器。根据模块的接口时序和映射地址,将各个模块挂载到总线上供CPU访问。并配置SPI接口总线使应用程序从外部存储器启动。针对基于Cortex-M3核的嵌入式系统,本文提出了一种内存检查点的设计方案和一种寄存器检查点设计方案。同时,设计了一个外部存储器到RAM的代码拷贝模块,用来提高内存检查点的效率。并通过实验对比,说明优化后的效果。然后我们编写了一个检查点演示系统,在FPGA平台实现。该程序执行计数操作,同时将计数通过UART串口发送到液晶屏上显示。用外部中断来模拟断电触发,当外部中断到来时,系统将当前所计的数字存入非易失的铁电存储器中,等下次复位上电时,系统将这个数字取出并继续计数。演示系统的设计有两个目的,第一,验证了所设计的嵌入式系统的各模块功能;第二,直观地展示了硬件检查点的设计理念。本论文阐述了嵌入式系统的基本架构,并在此基础上设计了硬件检查点,为嵌入式系统的可靠性研究积累了经验。同时本文完整呈现了芯片设计的前端流程,包括RTL代码编写、逻辑综合、时序分析和功耗评估。