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.

MSP430FR5959: FRAM Information Memory: what are the A, B, C, D parts for? May I use Info Memory as one section?

Part Number: MSP430FR5959

Hi, everybody!

I intend to use the msp430fr5959 chip in my project. I see 4 parts of Information Memory: A, B, C and D. Every part has 128 bytes. What if I use these 4 parts as a single memory section with a size of 512 bytes?
I don't see any objections to such use, but if it is permitted - why do 4 parts exist? What is a possible use case to use INFOB (0x1980), for example?

I cannot check my idea since the PCB is not ready, but I need to develop the firmware already.

Thanks in advance,

Yury

  • Some factory calibrated data for 2xx devices are store inside INFO A segment, that can be protected for erase/write. 5xx / 6xx factory calibrated data are inside TLV ROM section, and segment A is not used.
  • Thanks for the answer!
    Yes, I know that Info A and Info B are free - from my experience with FR57xx family. And I've used them. But there were reasons to use different sections - and I used them separately. Now I'd like to use 256-byte sections, melting A+B and C+D.
    So is this partitioning a mere historical thing?

  • The partitions are useful if you do not want to erase all four flash segments at the same time.

    But FRAM does not have flash segments. This is indeed a purely historical artifact.
  • Thanks! This is the way I hoped to be!

    I'll check the issue when I can, anyway :)

  • Well, I have an answer I'd like to get at the beginning of the thread.

    Now I use Info Memory to hold a list of variables and the space needed is beyond the partition size (128 bytes). There is not a single problem to use the memory across the border, for example in a loop with a pointer, that points to InfoD, then to Info C partition.

    But we have to keep in mind one thing: the partitions play role in declaration and instantiation. For example my code:

    int32_t __attribute__((section(".infoD"))) pDir,    pXOR,   pTunld, pTopen, pTsmin,
        // some vars ...
        pDozZ;                                                       
    int32_t __attribute__((section(".infoC"))) cs_conf;
    

    I had to change section name at the cs_conf variable because of the limited size of D section.

**Attention** This is a public forum