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.

TMS320F28386D: using uniflash to write specific security registers and settings

Part Number: TMS320F28386D
Other Parts Discussed in Thread: UNIFLASH

Tool/software:

Hi,

a customer is having trouble getting Uniflash to work at setting registers to configure the device's security settings and this is blocking current development. 

We are trying to do something simple right now (shown on the screenshots below). Setting Z1-GPREG3 to 0xFFFFFF03 should simply define that flash boot from 0x8'0000 is the only defined boot method (boot mode 0).

Clicking on the "Program" button right below the Z1-GPREGX section raises the error at the bottom of the screen (Please make sure the memory location you are programming have not already been programmed.) As per the memory browser, the 0x7'8008 (and subsequent) locations are all untouched.

We are able to do things like flash the device with a binary and erase the flash so we doubt that this is a connection or setup issue. The work is on Linux but also tried on Windows with the same results.

Is there some documentation available that would help me understand what I'm not doing correctly here? 

Regards,

--Gunter

  • Hi Gunter,

    Could you please confirm which Uniflash version you are using?

    Also, Could you please try same using CCS On-Chip flash tool?

    Regards,

    Rajeshwary

  • I tried uniflash_8.7.0 and uniflash_8.8.1

  • Could you please try same using CCS On-Chip flash tool?

  • Can you provide instructions on how to do this using CCS?

  • Hi Benjamin,

    the CCS on-chip flash plugin is indicated here

    https://software-dl.ti.com/C2000/docs/software_guide/c2000ware/flash.html#flash

    Flash

    Non-volatile flash memory on C2000 devices is primarily used as program memory for the core and also as static data memory. During application development, application executable can be programmed in to the flash memory using Code Composer Studio (CCS). When CCS identifies that the code is mapped in to the flash memory for a given application, it will automatically invoke CCS On-Chip Flash Plugin to load the executable in to the flash memory. Flash Plugin GUI is available at CCS Debug view -> Tools -> On-chip Flash. By default, the on-chip Flash Plugin erases the flash before programming, generates ECC for the executable and programs it along with the main array flash content and verifies the programmed content. If needed, users can enable blank check - CPU verification to confirm that flash is erased before programming. All of the USER OTP fields (DCSM and boot settings) can be programmed as well using the CCS On-chip Flash Plugin. Checksum calculation feature is also available within the Plugin GUI. Performance of the CCS flash programming is best when using high performance debug probes (XDS200 is suggested).

    Regards,

    --Gunter

  • I'm suspecting that the ECC is the issue here. 8 bit of OTP ECC memory get set for every 64 bits of OTP memory set (TRM (spruii0f) -  13.9 Error Correction Code (ECC) Protection). When the "Program" button is clicked to set Z1-GPREG3, OTP ECC gets calculated and set for all Z1-GPREGX registers. The attempt to change the value of the Z1-GPREG1 register fails because its ECC is already set and can't be changed.