We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
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.
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.