C8051F单片机程序丢失问题的原因分析
文件大小: 92k
源码售价: 10 个金币 积分规则     积分充值
资源说明:C8051F单片机程序丢失问题的原因分析 C8051Fxxx单片机程序丢失问题的原因分析是指在使用C8051Fxxx单片机时,程序代码被损坏或被修改造成的程序丢失问题。该问题的出现可能是由于对Flash的访问失败而造成Flash保存的代码出现错误。 1. Flash结构和程序丢失问题的原因 C8051Fxxx单片机有大容量的Flash存储器,用于程序代码和非易失性数据存储。Flash的结构是以扇区为单位组织的,非易失性Flash可以用来存储系统的参数,如软件版本、生产日期等。Flash可以使用编程器擦写,也可以在程序中使用MOVX指令来修改,从而使Flash存储器具有在系统重新编程能力,允许现场更新8051固件程序。 但是,在一些实际应用中,系统重新上电后会出现程序不能正常运行的问题,常表现为“程序丢失”。通常是由于程序代码被损坏或被修改造成的。造成程序丢失问题的原因很多,可以归结到一个基本原因,即对Flash的访问失败而造成Flash保存的代码出现错误。 2. 程序丢失问题的硬件原因 C8051Fxxx单片机的Flash操作由硬件控制,所以硬件上的不稳定可能造成Flash操作错误。硬件原因主要是能影响CPU正常运行的因素,以及能影响Flash操作环境的因素。这些因素包括操作电压、温度以及外部干扰脉冲等。 例如,如果系统时钟由外部晶振提供,外部的电磁干扰引起尖脉冲,并耦合到系统时钟上,则会导致不可预知的操作。系统在单片机的工作电压没有稳定(VDD上升时间低于规定的1 ms)时就已经完成复位,由于系统复位时需要从Flash读出代码数据,Flash电压不稳定会出现不可预测的错误。 3. 程序丢失问题的软件原因 代码设计的缺陷是程序丢失的主要原因,因为单片机的Flash是由硬件来控制的,不能由软件来控制操作的细节,所以程序的不完善可能造成Flash的访问出错,从而使Flash数据出现错误。 例如,在PSWE位(PSCTL.0)置1时CPU执行中断服务程序中的MOVX写操作,该中断服务程序要使用xdata或pdata的易失性存储区单元,这样可能导致向xdata或pdata存储区写的数据写到Flash中了,从而出现问题。 4. 程序丢失问题的解决方法 针对以上可能的原因,可以从软硬件两个方面来解决程序丢失问题。在硬件方面,主要是给系统提供稳定的工作环境,并避免外部干扰对CPU运行环境的影响;在软件方面,主要是规范对Flash的操作。 例如,在RST引脚安装VDD监测电路,并将VDD监视设置为一个复位源(置RSTSRC.1为1)。这样如果系统电压不稳定,系统将自动复位,从而避免在电压不稳时访问Flash。 在软件方面,主要是规范对Flash的操作。例如,在PSWE=1下禁止中断,使得程序中的MOVX写指令是对Flash而不是对XRAM。在PSWE=1下尽可能少地访问变量。在PSWE=0下执行地址译码操作,并用间接寻址方式执行MOVX写操作。 通过从硬件和软件两个方面来解决程序丢失问题,可以极大地预防程序丢失问题的出现,从而提高系统的可靠性和稳定性。
本源码包内暂不包含可直接显示的源代码文件,请下载源码包。