Hi! I am using SDK15.0 and SD 132 v6.0.0. My IDE is Segger Embedded Studio.
Everything was working fine and then suddenly after few weeks of developing a problem appeared.
I try to use FDS to write some data to flash memory but instead I get FDS_ERR_UNALIGNED_ADDR error.
Here is the code:
ret_code_t write_to_flash(uint32_t file_id, uint32_t key, void * data, uint8_t words_length, fds_record_desc_t * record_desc) { static fds_record_t record; record.file_id = file_id; record.key = key; record.data.p_data = data; record.data.length_words = words_length; ret_code_t rc = fds_record_write(record_desc, &record); if(rc != FDS_SUCCESS) { NRF_LOG_INFO("FDS write error, code: %d", rc); return rc; } return NRF_SUCCESS; }
And the call:
rc = write_to_flash(0x0001, 0x0001, temp_adv_name_buffer, 4, &temp_adv_name_buffer_record_desc);
Nothing really special, just the basics I believe.
I have read many posts on this topic but nothing helps me, I have tried various combinations of
__ALIGN(4)
as well as
__attribute__ ((aligned (4)))
applied to the fds_record_t definition in fds.h as well as fds_record_t record structure variable but no result.
When I print out record.data.p_data it turns out the address is 0x20006AB2, which is not 4-byte aligned afaik. The address doesn't change at all.
What do you suggest to do?
Thanks