This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TMS320F28335: Bug in f28335_flash_kernel

Part Number: TMS320F28335
Other Parts Discussed in Thread: CONTROLSUITE, C2000WARE

The line in Shared_Boot.c

status = Flash_Erase((SECTORA | SECTORB | SECTORC | SECTORD), &FlashStatus);

does not erase sector E-H. This might cause issues hard to track down in deployed control systems, as programming probably will seem to work fine on a blank device, and when writing small programs. The bug will probably only manifest when bits in the left out sectors are changed from 0 to 1.

I propose replacing the line with

status = Flash_Erase((SECTOR_F28335), &FlashStatus);

Please confirm whether this is a bug, and if the proposed fix is sufficient.

status = Flash_Erase((SECTORA | SECTORB | SECTORC | SECTORD), &FlashStatus);

  • Stian,


    Are you talking about Shared_Boot.c found in the following path:-

    <ControlSUITE>\libs\utilities\boot_rom\2833x\2833x_boot_rom_v2\source


    If so, I don't see Flash_Erase function being invoked in that file.

    Regards,

    Manoj

  • Manoj,

    C:\TI\c2000\C2000Ware_1_00_00_00\device_support\f2833x\examples\f28335_flash_kernel

    - David

  • Stian,

    Okay. I think you are talking about Shared_Boot.c file in

    <controlSUITE>\device_support\f2833x\v142\DSP2833x_examples_ccsv5\f28335_flash_kernel

    Your observation is right. If you are planning to re-program the complete flash. It is important to make sure your erase the flash completely. But, if you intend to re-program probably sector A. It is enough to erase sector A before re-programming sector A.

    I think in your case, you are trying to re-program complete flash. So, it make sense for you to completely erase the all sectors. So, as you mentioned, you can use status = Flash_Erase((SECTOR_F28335), &FlashStatus);

    Regards,
    Manoj
  • You are correct. The default is the device part number with the least amount of flash.

    I will update the examples software to work for all part numbers which can be specified by the #define macro.

    sal