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

MSP430F5529通过USB和UART进行BSL擦除存储区的代码时,段擦除、块擦除、全部擦除的问题?

各位老师:大家好!

        我在进行MSP430F5529的BSL代码修改时遇到了一些问题。在解锁BSL会默认进行除BSL代码段及information段的所有代码的擦除,现在修改BSL源代码,在输入错误BSL密码后,不希望全部擦除main memory存储区的部分代码,采用按段擦除,在usb模式下可行,在uart模式下却必须进行整体擦除才可行。是否usb和uart模式下在输入错误密码擦除时存在其他问题?还有,在函数中block_erase==1时进行块擦除也无法实现块擦除,是否按地址擦除代码存在问题?谢谢!!!

代码如下:芯片选型5529

//0–3 usb_ram;4–19 ram;20–147 main memory bank a and b; 148–211 bank c; 212–275 bank d;

      long addre=0x1c00;

      for(int mm=0;mm<148;mm++)  //276

      {

        BSL430_eraseLocation(0, addre);//usb ram ~~bank b

        addre=addre+512;

      }

 

 

char BSL430_eraseLocation(char block_erase, unsigned long addr)

{

    char exceptions;

 

    if (LockedStatus == UNLOCKED || 0 == earseflash)

    {

        exceptions = SUCCESSFUL_OPERATION;

     

#ifdef RAM_BASED_BSL

        while (FCTL3 & BUSY) ;

#endif

        FCTL3 = FwRamKey;                       // Clear Lock bit

        if(0==block_erase)

          FCTL1 = FwRamKey + ERASE;               // Set Erase bit

        else

          FCTL1 = FwRamKey + MERAS;               // Set Erase bit

       

        __data20_write_char(addr, 0);           // Dummy write to erase Flash seg

#ifdef RAM_BASED_BSL

        while (FCTL3 & BUSY) ;

#endif

        FCTL3 = FwRamKey + LOCK;                // Set LOCK bit

    }

    else

    {

        exceptions = BSL_LOCKED;

    }

    return exceptions;

}

ping liang:

我在430f5438a也遇到了同样的问题不想擦除main memory存储区的部分代码C,D段结果全部擦除了,我们可以交流一下lping349@163.com

c y:

楼主你好,

       我正在研究5529bsl升级程序的问题,能不能发我一份用户程序,可以实现bsl升级的,先谢过了

HG:

回复 c y:

参考SLAA319,官网有下哦

赞(0)
未经允许不得转载:TI中文支持网 » MSP430F5529通过USB和UART进行BSL擦除存储区的代码时,段擦除、块擦除、全部擦除的问题?
分享到: 更多 (0)