C8051Fxxx程序丢失问题的分析
1 C8051Fxxx单片机简单介绍和Flash结构
C8051Fxxx系列器件是Silicon Labs推出的一个高速单片机系列。这款单片机是完全集成的混合信号片上系统型MCU 芯片。
具有高速、流水线结构的8051 兼容的CIP51内核;70%的指令的执行时间为1个或2个系统时钟周期;片上有丰富的片内外设,根据型号的不同,包括ADC、DAC、UART、捕捉/比较模块的可编程计数器/定时器阵列、SPI、SMBus等。
C8051Fxxx单片机有大容量的Flash存储器,用于程序代码和非易失性数据存储,可在系统编程。Flash的结构是以扇区为单位组织的(128 KB系列以1 024字节为1个扇区,64 KB系列以512字节为1个扇区)。非易失性Flash可以用来存储系统的参数,如软件版本、生产日期等。Flash可以使用编程器擦写,也可以在程序中使用MOVX指令来修改,从而使Flash 存储器具有在系统重新编程能力,允许现场更新8051 固件程序。Flash的写和擦除操作由硬件自动定时,以保证操作正确通过。C8051Fxxx的Flash保存下载的程序,在系统上电后,单片机从Flash读出代码数据到RAM,之后程序开始运行。
2 程序丢失问题的出现和原因
在一些实际应用中,系统重新上电后会出现程序不能正常运行的问题,常表现为“程序丢失”。通常是由于程序代码被损坏或被修改造成的。
造成程序丢失问题的原因很多,可以归结到一个基本原因,即对Flash的访问失败而造成Flash保存的代码出现错误。对于所有包含有Flash写/擦除子程序的系统,当CPU工作在规定的VDD、温度、系统时钟频率范围之外时,对Flash进行写/擦除操作,都有可能出现Flash数据错误的现象。
2.1 Flash数据错误的硬件原因
C8051Fxxx单片机的Flash操作由硬件控制,所以硬件上的不稳定可能造成Flash操作错误。硬件原因主要是能影响CPU正常运行的因素,以及能影响Flash操作环境的因素。这些因素包括操作电压、温度以及外部干扰脉冲等,具体如下:
① 能影响CPU运行可靠性的参数有系统时钟源。如果系统时钟由外部晶振提供,外部的电磁干扰引起尖脉冲,并耦合到系统时钟上,则会导致不可预知的操作。
② 系统在单片机的工作电压没有稳定(VDD上升时间低于规定的1 ms)时就已经完成复位,由于系统复位时需要从Flash读出代码数据,Flash电压不稳定会出现不可预测的错误。
③ 在对Flash的操作过程中,如果温度、电压不稳定,也可能造成Flash数据错误。
2.2 Flash数据错误的软件原因
代码设计的缺陷是程序丢失的主要原因,因为单片机的Flash是由硬件来控制的,不能由软件来控制操作的细节,所以程序的不完善可能造成Flash的访问出错,从而使Flash数据出现错误。 这些操作包括: 在PSWE位(PSCTL.0)置1时CPU执行中断服务程序中的MOVX写操作,该中断服务程序要使用xdata 或pdata 的易失性存储区单元,这样可能导致向xdata 或pdata存储区写的数据写到Flash中了,从而出现问题。另外,如果使用外部晶振作系统时钟,在时钟没有稳定时就对Flash进行写操作,也可能造成程序丢失。
相关文章
- 2023-12-19拉压不同模量有限元法剪切弹性模量及加速收敛
- 2023-09-11一种计算空间平面的平面度误差新方法
- 2023-12-09关于热声驱动器水冷却器传热和压降的讨论
- 2022-03-09基于计算机视觉的石油钻杆裂纹检测系统研析
- 2022-07-14国产Nz一T型扭振分析记录仪及其应用实例
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。