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.

Seg-A Memory Contents for MSP430G2453 – Flash Erase Problem

Other Parts Discussed in Thread: MSP430G2453, MSP430G2553

I need to know the contents of the Seg-A flash memory so that I can try and solve an erase issue.

I need a list of what information has been stored on this MSP so I know how I can use Seg-A to do either a redundant write or just a backup of user memory contents:

All I know from the datasheet is that the DCO constants are in the range of:

0x10f8 - 0x19ff.

I know I need the above values retained in memory.

Do I need to keep the contents in 0x10da (ADC10 TAG_ADC10_1)?  I am only using the ADC10 to read the chip temperature at this time.


Is the chip manufacturing info in Seg-A? 

Again, a definition of the information found in a raw MSP430G2453 information memory would be extremely helpful at this time (now :)

WHY:  My Seg-D is written with values critical to the operation of the MSP application.  If power is interrupted to the MSP, Seg-D is erased.  I have attempted to resolve this issue by removing all code that writes to Seg-D and the information memory is still cleared by an intermittent power supply.  Installers are clearing the contents of information memory when connecting the power supply to the control, need appropriate solution to this issue.  If I store information in Seg-A, the power supply issue seems to retain information stored here.

  • slau144j page 581, chapter TLV structure

    http://www.ti.com/lit/ug/slau144j/slau144j.pdf

    dont' erase segmentA (tlv structure)

    for redundant write you can use segmentB or segmentC

  • I can not find specific information as to what is located in Seg-A in the User Guide.

    With the debugger, one can see more than just the calibration constants stored here.

    This did not answer my question.

  • MAC Engineering said:
    Is the chip manufacturing info in Seg-A? 

    Again, a definition of the information found in a raw MSP430G2453 information memory would be extremely helpful at this time (now :)

    Does the following from the MSP430G2453 datasheet answer your question?

  • MAC Engineering said:

    I can not find specific information as to what is located in Seg-A in the User Guide.

    With the debugger, one can see more than just the calibration constants stored here.

    This did not answer my question.

    slau144j page 581, chapter TLV structure

    http://www.ti.com/lit/ug/slau144j/slau144j.pdf

    at the begin:

    The Tag-Length-Value (TLV) structure is used in selected
    MSP430x2xx devices to provide device-specific information
    in the device's flash memory SegmentA,
    such as calibration data.
    Chester Gillon paste you infrormation from the MSP430G2453 datashet,
    b.r.
    Lukasz
  • MAC Engineering said:
    If power is interrupted to the MSP, Seg-D is erased.

    Impossible! Unless you clear it by your own code, the segment is only cleared when you connect your device to download and debug (CCS), and you have erase information memory enabled.

  • Two comments:

    1)      Dear Leo Bosh, never say never, the flash erase is real and occurs, thus your statement is not helpful.  Note that all code for my uC for write of flash can be commented out and the erase happens under the proper conditions.

    2)      Dear Chester Gallon, the information from my original post is directly from the Table 10, thus my question is still not answered.  I will repeat my original question again just for the sake of clarity:

     

    I have identified the DCO constants address range in Seg-A, but I am not sure of any of the information stored in this segment of memory other than the listing for the ADC10_1 calibration tag (0x10da).  For example, there is die info stored, what address range is this info stored in?

     

    I am starting to realize that I may be asking for design information that TI considers priority?  If so, this makes it hard to use Seg-A to back up the other segments of memory that can be erased in the proper conditions.  How am I to know what is critical to my application in Seg-A?

     

    The down side, Seg-A did not get cleared when other segments did, thus this makes Seg-A first choice for a backup of critical data.

  • MAC Engineering said:
    I have identified the DCO constants address range in Seg-A, but I am not sure of any of the information stored in this segment of memory other than the listing for the ADC10_1 calibration tag (0x10da).  For example, there is die info stored, what address range is this info stored in?

    To avoid confusion, can you post a memory dump of the Info Segment A from your device. This is an example taken from a MSP430G2553 in the CCSv6 debugger:

    By comparing the contents of the memory dump against Tables 10 and 11 in the MSP430G2x53 datasheet SLAS735J and the TLV Structure section in the MSP430x2xx Family User's Guide SLAU144J all the non-erased bytes are accounted for. The unused bytes in Information Segment A are:

    - 22 bytes from 0x10C4 to 0x10D9

    - 8 bytes from 0x10EE to 0x10F5

    If the unused bytes in Information Segment A are programmed, then the checksum in the first two bytes of Segment A should be re-calculated, so that any software check checks the integrity of the checksum of the TLV Structures doesn't report a failure.

  • MAC Engineering said:
    Installers are clearing the contents of information memory when connecting the power supply to the control, need appropriate solution to this issue.

    Can you clarify what the term "installers" means?

    MAC Engineering said:
    Note that all code for my uC for write of flash can be commented out and the erase happens under the proper conditions.

    Can you provide any more details on what in the "proper conditions" under which the erase of information memory occurs?

    If the erase is still occurring when your own code for write of flash is removed, was wondering if some external condition during the power supply decaying or rising triggers the BSL code to think an erase has been requested.

    MAC Engineering said:
    The down side, Seg-A did not get cleared when other segments did, thus this makes Seg-A first choice for a backup of critical dat

    At device reset, Segment A is protected against erasure by the LOCK bit in the FCTL3 register being clear, which could be why Segment A isn't erased when the other segments are.

  • main memory FLASH ( code area ) is erased, or only  infomemory is erased ?

  • Hi Chester,

    1) Thanks for the informative response, I have yet to upgrade to CCSv6, as a matter of fact I ran into issues going to v5 so I am still on CCSv4.2 which does the job fine so far :)

    I will upgrade my CCS to v5.5 and see if I get the same memory dump?

    2) The question was asked what installer means?  An installer is someone that is installing a product.  Then the power supply is connected under the correct conditions transients occur.  I am using the RST line to reset the control if the voltage is below ~3.2V which helps this issue, but I still am designing belt and suspenders design.  These transients do the following:

    3) Just the user memory is cleared, all but Seg-A. This issue is affected by transients on the voltage supply to the MSP.  If I knew the exact failure mode within the MSP it would make things easier, backing up memory is just a good idea I feel.

  • MAC Engineering said:
    I have yet to upgrade to CCSv6, as a matter of fact I ran into issues going to v5 so I am still on CCSv4.2 which does the job fine so far :)

    I will upgrade my CCS to v5.5 and see if I get the same memory dump?

    The version of CCS used to provide the memory dump doesn't matter. The reason I suggested a memory dump was to clarify exactly what was in the Info-A segment of your device.

  • You did not say directly and definitively which MSP430 you are asking about. The only hint you gave was:

    MAC Engineering said:

    ... a definition of the information found in a raw MSP430G2453 information memory would be extremely helpful at this time (now :) ...

    Is that it? Are we still at this time? If so, the answers depend on which silicon revision and which batch.

    For some MSP430, the contents of Info-A is individually written to each chip as the last step in the manufacturing process at each silicon foundry. TI makes occasional changes to this process, and the silicon foundries may occasionally make mistakes too. The Info-A should not be altered unless you do not need those factory stored information about each individual chip. As such, InfoA has an extra hardware register bit to protection against unintentional erasure. This is clearly documented in the User's Guide of each family of MSP430 or the data-sheet of the particular member. InfoA is not a good candidate for "backup".

  • old_cow_yellow said:
    InfoA is not a good candidate for "backup".



    true

    you can use segment B,C or D

    is many tricks how correctly made backup data,

    the simplest way is using some redundant algorithm

    (you write data in two or more places/blocks ,,, when one was destroyed

    you have good copy in another place/block,,, think about this  )

  • Hi Old Yellow Cow, excellent question, I am using an MSP430G2453.

    I agree that InfoA should be left locked and unaltered, but when all other segments (But InfoA) get erased, InfoA seems to be the best choice.  This is why I am interested in the exact contents of InfoA.  Once I am sure of the contents I can determine what is needed and what is not needed.

    I agree, it my be my own failings to understand the datasheet and User Guide for a definition of information in InfoA, my first posting states what I do understand from the Datasheeet.  I do not care about die information, I can not find a use for this info once the product is in the field.  In addition, I am writing a unique serial number to a blank cell in InfoA already during initial programming.


    I plan on copping the contents of memory into an array and writing the array back to the particular segment so as to retain important information.  Triple redundancy is what I am aiming at.  For example, I am using about 10x16-bit memory cells.  Let's say this information is stored in InfoD, write this exact info into InfoC, and test for erasure of InfoD. iff InfoD is erased, coppy InfoC back into D.  But, there are a few memory locations that have critical information, write these into InfoA and lock.  If InfoD & InfoC are erased, go get critical information from InfoA without unlocking InfoA.

    My plan is to use InfoA as an occasional write of information that would be under controlled conditions, for the majority of the life of the product InfoA is locked and safe from erasure.

    Sure, in a perfect world where read/write of memory never resulted in unintentional erasure of memory these steps would not be necessary.  But, I have found a failure mode that results in the erasure of memory, and even though I do not fully understand the exact cause of this erasure, I have to take steps to fail safe my product from this type of failure.

  • Hi Chester,

    Forgive my ignorance,  I can not find a "Memory Browser" in CCSv4.2.

    Your screen capture is awesome, does your version of CCS actually show the nature of the SegA contents in blue font?

    I am now upgrading to CCSv5.5, will v5.5 show this info if v4.2 does not?

    FYI-1, v4.2 has an error that I have lived with, VIEW > MEMORY the address input field is a little box, I can not see the address, but I can still put the address in blind :) to get to a location during debugging.  As you see, I have been waiting for things to settle down.  CCS is an awesome product and getting better each day, I just want others to find the problems and I benefit :)

  • MAC Engineering said:
    does your version of CCS actually show the nature of the SegA contents in blue font?

    Yes, that was automatically done by CCSv6

    MAC Engineering said:
    I am now upgrading to CCSv5.5, will v5.5 show this info if v4.2 does not?

    Not sure (as haven't got a device to try CCSv5.5 at the moment). However, the CCSv5.5 targetdb\Modules\msp430\TLV_Calibration_Data_x.xml files are the same as those in CCSv6, so guess CCSv5.5 will display the same information.

  • MAC Engineering said:

    Hi Old Yellow Cow, excellent question, I am using an MSP430G2453....

    First a disclaimer: I am just a hobbyist, I am not an Engineer, and I am not affiliated with TI. What I said below are just my understanding of what I read from TI documents that are public.

    Currently there are three silicon revisions of MSP430G2453. As far as the TLV structure in InfoA is concerned, all three silicon revisions are supposed to be the same. This is quite adequately described in Chapter 24 of MSP430x2xx Family User's Guide (SLAU144?.pdf where ? is the version #)

    I found in SLAU144j.pdf (the current version) that you need to make the following two changes marked in red to apply to MSP430G2453.

    MAC Engineering said:

    ... My plan is to use InfoA as an occasional write of information that would be under controlled conditions, for the majority of the life of the product InfoA is locked and safe from erasure....

    I think you can, if you want to, ignore and erase this entire TLV without any harm.

    You also have the option to store your own data inside the two TAG_EMPTY slots.  But you need to update the XOR checksum too in order the preserve the integrity of the TLV.

    Feel free to let me know if the above are not clear to you.

    BTW, I do not have nor know how to use CCS. I do not know why you cannot read InfoA from the MSP430G2453 chip. I can easily dump any MSP430 Flash memory using IAR KickStart, MSP430Flasher, and a lot of other PC programs. The InfoA is in the chip since day one and has nothing to do with CCS or its version number.

    You can use BSL to dump InfoA of MSP430G2453 too. But be aware that if you do not send the correct BSL password, every byte of Flash, including InfoA, will be erased by BSL.

**Attention** This is a public forum