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.

MSP430F5310 flash documentation improvement request

Other Parts Discussed in Thread: MSP430F5310, MSP430G2755

Here are couple of areas where the documentation could be improved.

 

MSP430F5310 user guide, SLAU208N, 7.2, pg 339 & 340, outlines the flash memory organization (map) for flash download. It has a nice diagram, Figure 7-2. However, unlike MSP430G2755 SLAU144J, 7.2, pg 310, there is no mention of "Segments" getting sub-divided into "Blocks".

The 2755 documentation, SLAU144J, Figure 7-2 shows the relationship well. The block size is shown (should be in text body too though) and how it relates to Segments.

7.3, pg 342,is the first mention of flash blocks in the following:

• Byte, word, or long-word (32-bit) write
• Block write           ------------------ %%%
• Segment erase
• Bank erase (only main memory)
• Mass erase (all main memory banks)

%%% List Block Write here but blocks have never been mentioned or explained

 

7.3.2, pg 346, states that long-word block mode should be used for speed. Still no explanation of block sizes, access,, etc.

7.3.2.1, pg 346, does finally explain that they are 128 bytes.

 

=========================================================

Also, 2 improvements for SLAU144J:

-----------

pg 309:

The statement "The segments are further divided into blocks" should add mention of the size such as:

"The segments are further divided into blocks of 64 bytes." You can figure it out from the graphic but all of the other information in the graphic is clearly detailed in body text.

-----------

pg310:

There is a typo. The block on the left shows

As Is      Should Be

0x0FFFF    0x0FFFF
0x0F000    0x08000 *should be 0x8000, not 0xF000
0x010FF    0x010FF
0x01000    0x01000

There is no action or anything to discuss. I am just submitting this as a possible improvement,

  • Does Block mode and segmentation apply to the Info, BSL, and Main Code Flash?

    The documentation doesn't make that clear.
  • Hi Jim,

    Thank you for bringing this to our attention. I agree that this could be documented better, and I've submitted requests to update the documents in question.

    Regarding your question about block mode and how it applies to info memory and the BSL, this is something I'll have to explore further. I'll keep you updated and get back to you soon.

    Best regards,
    Caleb Overbay
  • Jim Cook said:
    Does Block mode and segmentation apply to the Info, BSL, and Main Code Flash?

    Info, BSL and main flash belong to same flash memory with identical flash memory characteristic (hardwired for 5xx family).

    Block writing on 5xx devices (up to 100 KByte/sec and over 200 KByte/sec in smart mode) can be used on any part of 5xx flash memory.

  • A couple more "opportunities" for documentation improvement.

    Also, I have some questions here as well.

    =========================================================
    From SLAU208N, pg 340, 7.2:
    "The flash memory is partitioned into main and information memory sections."
    -- But then it lists 3 sections Info, BSL, and Main. (confusing)
    -- Should that line be "The flash memory is partitioned into main, information, 'and BSL' memory sections".

    OR,

    * Is it stating that some underlying flash architecture has 2 topologies, Info & Main?
    ---- If so, which of those 2 topologies does the BSL conform to?

    "The flash memory is partitioned into main and information memory 'SECTIONS'."

    * But then in the graphic, it shows "128-byte Information Memory Segment(A,B,C,D)" with an arrow out to "Segment 0".
    ---- So, this is nested "segments"?

    * The previous text body defined the various regions as "SECTIONS".
    ---- To avoid confusion, Info memory boxes should probably state:
    -------- 128-byte Information Memory 'Section' (A,B,C,D).

    =========================================================
    From SLAU208N, pg 346, 7.3.2.1:

    "In any write mode, the internally-generated programming voltage is applied to the complete 128-byte
    block. The cumulative programming time, tCPT, must not be exceeded for any block. Each byte, word, or
    long-word write adds to the cumulative program time of a segment."

    In the above context, is the word "segment" referring to the 512-byte segment (128-byte segment for Info) defined on pg 340?

    * If so, what is the spec for the total segment time?
    ---- I looked for it and haven't found it in the docs; It's very possible that I just missed it.
    ---- Is the total segment time different for Main memory (512-byte segment) vs. Info memory (128-byte segment)?

    OR,

    * Did the word segment get used in a more general term, really meaning the 128-byte block?
    ---- If so, that should probably be changed because "segment" has a very clear definition from pg 340.

    I am concerned because I do not know the total programming time of a segment.
    What is the total 512-byte maximum programming time?

    =========================================================
    From SLAU208N, pg 351, 7.3.2.7:

    The flash programming voltage remains on for the duration of writing the 128-
    byte row. The cumulative programming time, tCPT, must not be exceeded for any row during a block write.
    Only long-word writes are possible using block write mode.

    Here the term "row" is introduced with no explanation. I can infer that row and block ARE the SAME thing. There should probably be text and a graphic clarifying what a row is.

    It seems to me that:
    * A Block is a 128-byte region on particular quantized to a particular boundary\alignment
    * A Row is a 128-byte region on particular quantized to a particular boundary\alignment
    * Row = Block
    * There are 4 "rows" (blocks) in each 512-byte "segment"
    * A BSL region is equivalent to one segment (shown in Figure 7-2)
    * There are 4 "rows" (blocks) in each 512-byte "BSL" region
    * There is 1 row (block) in the Information Memory Segment

    I would appreciate any clarification on these areas.
    Thanks, Jim
  • Hi Jim, 

    From SLAU208N, pg 340, 7.2:

    The flash memory is partitioned into 3 sections, Info, BSL, and Main. This is better illustrated in the 'Memory Organization' section of the device-specific datasheet (SLAS677).
    The BSL is most likely kept from the statement "The flash memory is partitioned into main and information memory sections." because it is used to hold the bootstrap loader and typically isn't changed, but can be is the user wants to.

    * But then in the graphic, it shows "128-byte Information Memory Segment(A,B,C,D)" with an arrow out to "Segment 0".
    ---- So, this is nested "segments"?
    Each information memory SECTION can also be considered a segment because they can be erased individually. The definition of a segment is the smallest amount of flash that can be erased. So a flash segment in information memory is 128-bytes in length, whereas a flash segment in main memory is 512-bytes in length.

    -----------------------------------------------

    From SLAU208N, pg 346, 7.3.2.1:
    In the above context, is the word "segment" referring to the 512-byte segment (128-byte segment for Info) defined on pg 340?
    This should really say block instead of segment. So each byte, word, or long-word write adds the the tCPT of the block.

    * If so, what is the spec for the total segment time?
    You only need to worry about violating the tCPT of the block (128-bytes) not segment. This is true for both information memory and main memory.

    -----------------------------------------------

    From SLAU208N, pg 351, 7.3.2.7:
    Here the term "row" is introduced with no explanation. I can infer that row and block ARE the SAME thing. There should probably be text and a graphic clarifying what a row is.
    Correct, a block and row are the same thing.

    These all seem correct, I've added some additional comments for clarification:
    * A Block is a 128-byte region on particular quantized to a particular boundary\alignment
    * A Row is a 128-byte region on particular quantized to a particular boundary\alignment
    * Row = Block
    * There are 4 "rows" (blocks) in each 512-byte "segment"
    * A BSL region is equivalent to one (main memory) segment (512-bytes) (shown in Figure 7-2)
    * There are 4 "rows" (blocks) in each 512-byte "BSL" region
    * There is 1 row (block) in the Information Memory Segment
    * A main memory segment is 512-bytes in length
    * A BSL segment is 512-bytes in length
    * An information memory segment is 128-bytes in length

    I apologize for the confusion on this. Don't hesitate to ask any more questions.

     

    Best regards, 
    Caleb Overbay

**Attention** This is a public forum