AnsweredAssumed Answered

MPC5554  FLASH PROGRAM ERROR

Question asked by xiang gan on Jul 19, 2019
Latest reply on Jul 22, 2019 by Lukas Zadrapa

说明:

    1.CPU型号为MPC5554;

    2.时钟频率为:8Mhz;

    3.在编程FLASH前已经完成0x00000000~0x80000地址的编程解锁并擦除,而且经检查确认地址范围内都是0xFF。

  4.程序运行在内部flash的0x110000~0x150000地址空间;

  

FLASH 编程代码如下:

    void  WriteFlash(void)

{

       uint64_t  *pFlash,*pData ;

       int32_t  i,j,k,len;

       uint16_t  code[256];

        pFlash = (uint64_t *)0x000000;

        uint64_t  LongWordData;

      

        FLASH. MCR. B. PGM =1;

       for(len=0,len<0x100000;len=len+256)

     {

            Read256ByteFromCANbus((uint16_t *)code);

           pData=(uint64_t *)code;

          for(i=0;i<8;i++)

         {

                 for(j=0;j<4;j++)

                {//write 256bt

                      LongWordData = *pData ++;

                      *pFlash ++ = LongWordData;

                 }

 

                 FLASH. MCR. B. EHH =1;

                for(k=0;k<4000;k++)

               {  if(FLASH.MCR.B.DONE)  break;

                }

               FLASH. MCR. B. EHV=0;

           }

      }

     FLASH. MCR. B. PGM=0;

      FLASH. MCR. B. BFEN=0;

      FLASH. MCR. B. BFEN=1;

}

 

问题:使用上述代码写入数据到0~0x40000地址范围不会有任何问题;但写入数据到0~0x80000地址范围时,在0x40000~0x80000地址范围(具体地址随机,不固定)出现ECC错误。

Outcomes