Accessing the 512 kb (64 kB) EEPROM in the 20737S module

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
Anonymous
Not applicable

Just clarifying that it's 512 kb (kilo bits) = 64 kB (kilo bytes).

The interface to it is via I2C.  Is there example code to access this non-volatile memory space?

I currently use the internal NV RAM (EEPROM) from 0x10 to 0x6F, but need a lot more.

Thanks!

Cheers,

Gil

0 Likes
1 Solution
asridharan
Employee
Employee
10 comments on KBA 5 comments on KBA First comment on KBA

The safest way to use the storage in the EEPROM is with bleprofile_*NVRAM() functions. These functions ensure that only space reserved for data storage is accessed.

If you want to use space outside of these areas, then you can try to use bleappfwu_readMem() and bleappfwu_writeMem() like in ws_upgrade.c (in uart_firmware_upgrade or ota_firmware_upgrade samples). But remember that the application code, patches and configuration are stored in the same EEPROM and overwriting this area will cause undefined behavior.

View solution in original post

6 Replies
asridharan
Employee
Employee
10 comments on KBA 5 comments on KBA First comment on KBA

The safest way to use the storage in the EEPROM is with bleprofile_*NVRAM() functions. These functions ensure that only space reserved for data storage is accessed.

If you want to use space outside of these areas, then you can try to use bleappfwu_readMem() and bleappfwu_writeMem() like in ws_upgrade.c (in uart_firmware_upgrade or ota_firmware_upgrade samples). But remember that the application code, patches and configuration are stored in the same EEPROM and overwriting this area will cause undefined behavior.

Anonymous
Not applicable

Thanks.

I don't mean the NV RAM storage from 0x10 to 0x6F available in the 20737 (and the "S").  I already use them with bleprofile_*NVRAM() functions.

The 203737S (SiP) module has an external (to the CPU, but inside the SiP) 512 kb (64 kB) EEPROM, accessible via I2C, according to the chip's block diagram on the datasheet. 

That's what I would like to use.  Is that what you're referring to?

Thanks again!

Cheers,

Gil

0 Likes

Yes, he is referring to the external EEPROM within the SIP module.

In this forum, NVRAM generally refers to external storage which include flash and eeprom.

Anonymous
Not applicable

So the 512 kb area is not intended for general purpose storage used by the application?

It could break things if it's used.  Is that right?

0 Likes

You can use any area in the 512kb EEPROM that is not already used by the FW. To see what is used by the FW, you need to look at *-rom-ram-Wiced-release.hex file (this is an Intel hex file, so use your favorite text editor to view the contents) in the build directory and avoid all sections in this. In addition to this, also avoid DLConfigVSLength bytes starting at offset DLConfigVSLocation in Platforms/*/*_EEPROM.btp.

I think you will find this post created by maxsong useful: WICED Smart BCM92073X EEPROM and SFLASH Layout