You have chosen to sponsor your bid up to a maximum amount of .
A small number of C functions are required to be written.
The software is to run on an ATMEL ATSAM4S16B ARM processor. The code will be in C to compile using atmel studio 6. The software is for an embedded system. RAM is very limited. No mallocs should be used - local variables should be limited.
It would be useful if you had the real hardware - this CPU and the AT25DF081 memory - to test your code. But this is unlikely and it is acceptable for you to write the code using atmel studio and I will test here. I may take 1-2 days or more to test the code that you send because I am very busy.
The software will be used to maintain a copy of some C arrays/structures in external SPI Flash memory in an AT25DF081 memory device. It is possible that, during a write to the AT25DF081, the data may be corrupted. So a checksum is needed to confirm that the data in the AT25DF081 is written correctly. If the data is corrupted in the AT25DF081, the main application can then safely ignore it.
So, a set of functions are needed which will read and write and check the data in the AT25DF081 memory:
The functions are fm_write, fm_read, and fm_checksum.
Basic operation is to write from main memory to the AT25DF081 and to read back again. To check that the data is correct in the AT25DF081
it is necessary to add a checksum and length value in the AT25DF081 memory area.
see text file for full info