8 points Assume that you have four 4 ROM chips organized as
Solution
The last part is to use it from the application. Typically I have a header file like the one below where I have the addresses defined:
/**
* \\file
* \\brief Interface for the Non-Volatile-Memory
* \\author Erich Styger
*
* This provides an interface to store and retrieve data from the on-chip memory.
*/
#ifndef CONFIGNVM_H_
#define CONFIGNVM_H_
#define NVMC_FLASH_START_ADDR 0x1FC00 /* NVRM_Config, start address of configuration data in flash */
#define NVMC_FLASH_ERASED_UINT8 0xFF
#define NVMC_FLASH_ERASED_UINT16 0xFFFF
#define NVMC_REFLECTANCE_DATA_START_ADDR (NVMC_FLASH_START_ADDR)
#define NVMC_REFLECTANCE_DATA_SIZE (8*2*2) /* maximum of 8 sensors (min and max) values with 16 bits */
#define NVMC_REFLECTANCE_END_ADDR (NVMC_REFLECTANCE_DATA_START_ADDR+NVMC_REFLECTANCE_DATA_SIZE)
#define NVMC_SUMO_DATA_START_ADDR (NVMC_REFLECTANCE_END_ADDR)
#define NVMC_SUMO_DATA_SIZE (4) /* 4 bytes of data */
#define NVMC_SUMO_END_ADDR (NVMC_SUMO_DATA_START_ADDR+NVMC_SUMO_DATA_SIZE)
uint8_t NVMC_SaveReflectanceData(void *data, uint16_t dataSize);
void *NVMC_GetReflectanceData(void);
uint8_t NVMC_SaveSumoData(void *data, uint16_t dataSize);
void *NVMC_GetSumoData(void);
#endif /* CONFIGNVM_H_ */
