This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

C51/LX51: Place some variables in a specific page apart

Hello,

I am working on a project based on a C8051F353 from Silabs.
This project needs some non-volatile variables to be stored, using internal Flash.
I manage to read, write, and erase data to flash BUT:
-a write needs an erase, and erase can't be performed on less than a page
All data can be kept, by reading the concerned page, modify the requested data, erasing the page, and write the modified copy.

Since I have declared my non-volatile data into the main program as global variables with "code" prefix, this data is located into program in Flash. When I want to write to this data, I am so erasing and rewriting page of running program, which results in reset of device.

I would like to be able to place non-volatile data into a specific page appart from code, into flash. So that I won't affect program when updating data.
I think the use of SEGMENTS would be the best for me, but I can't manage to place a specific segment in a specific page, but just at the end of code.

I somebody have a solution, or can give me a direction to fix this problem.

Thank you in advance.

Parents
  • beware of the special bits in the last page
    You're right. I noticed few time after my post that my flash was write protected. The last byte of the last page is a security byte and any erase request on this page generates a reset. So I mustn't use the last page for my non volatile variables.

    I'm going to look for the size of code parameters.

    Thnak you.

Reply
  • beware of the special bits in the last page
    You're right. I noticed few time after my post that my flash was write protected. The last byte of the last page is a security byte and any erase request on this page generates a reset. So I mustn't use the last page for my non volatile variables.

    I'm going to look for the size of code parameters.

    Thnak you.

Children
No data