TI中文支持网
TI专业的中文技术问题搜集分享网站

C8051F340 固件丢失问题。

您好!

       我们在用此款产品做为主控芯片量产使用的过程中,发现1000套中出现10套固件丢失(无固件的的外部状态),在使用C2仿真器读取固件 0000-F000处地址的时候发现代码区为全0(而正常的板子用C2读取的固件是有数据的)

参考附件0000-F0000.TXT     怀疑程序运行过程中扇区被锁定。

又读取FBFF-FC00 的值,发现出现80 数据 锁定页( 为什么能读出来? )

又读取 FA00-FBFF的值 ,  发现全0.

对应的文件参考附件  固件读取.zip里面的内容。

有几个问题可能相关。

1: 什么情况下会导致类似此种情况。

2:程序没有对页加锁保护过,即正常的程序是可以被C2读取。

3: 我查阅相关代码,FLASH 擦写的addr 0xF200-0xF600  只在这个区域, 为何FBFF 地址的数据在FBFF-FC00 能读出来(理论锁住话不能读出),在 FA00-FBFF 为全0.

void FLASH_ByteWrite (unsigned int addr,unsigned char byte)
{
 
    bit EA_SAVE = EA;                   // Preserve EA
    unsigned char xdata * data pwrite;           // FLASH write pointer
    ResetWDT();
    EA = 0;                             // Disable interrupts

    // change clock speed to slow, then restore later

    VDM0CN = 0x80;                      // Enable VDD monitor

    RSTSRC = 0x02;                      // Enable VDD monitor as a reset source

    pwrite = (unsigned char xdata *) (addr);
    FLKEY  = 0xA5;                      // Key Sequence 1
      FLKEY  = 0xF1;                      // Key Sequence 2
    PSCTL |= 0x01;                      // PSWE = 1

    VDM0CN = 0x80;                      // Enable VDD monitor
      RSTSRC = 0x02;                      // Enable VDD monitor as a reset source
    *pwrite = byte;                     // Write the byte
    PSCTL &= ~0x01;                     // PSWE = 0
 
    EA = EA_SAVE;                       // Restore interrupts
}

4: 考虑堆栈溢出为题,堆栈定义0X40大小。

半天测试,堆栈使用在 0X20-0X4E大小 0x2e之间,未有溢出。

 

如果还需要什么资源提取以利于问题分析,大家可以提下,我去试验。。紧急,麻烦了!

 

 

gaoyang9992006:

该芯片好像不是TI生产的吧,另外你说道的1%的芯片固件丢失,如果芯片没有损坏那么我怀疑是根本没有烧录进去固件

赞(0)
未经允许不得转载:TI中文支持网 » C8051F340 固件丢失问题。
分享到: 更多 (0)