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.