Доступ к элементам структуры typedef - PullRequest
0 голосов
/ 20 марта 2019

Я объявил структуру tydef, как показано ниже.

#define START_ADDR 0xXXXXX
typedef struct{
     uint32_t checksum;
     uint16_t index[len];
} block;

Я изменил выделение памяти для блока, используя следующую инструкцию:

block *value = (block*) START__ADDR;

Я также проверил изменение в распределении памяти и никаких проблем с ним. Теперь я пытаюсь обновить значение контрольной суммы, используя

value->checksum=0xa5a5a5a5;

Но контрольная сумма равна 0x00000000 и не обновляется до 0xa5a5a5a5 . Может кто-нибудь, пожалуйста, скажите мне, как я могу изменить значение контрольной суммы.

Заранее спасибо.

С уважением Выбхав

1 Ответ

2 голосов
/ 20 марта 2019

Вы не можете записывать во флэш-память, как будто это ОЗУ и все.Flash - это ROM.Вот почему все ваши переменные, выделенные во флэш-памяти, должны быть / 1001 * квалифицированы, что означает, что они доступны только для чтения.

Возможно изменить флэш-память, и ваша часть может иметь для этой цели выделенные данные флэш / eeprom.Но запись в такие части памяти - это не то, что компилятор сделает для вас.Вам нужно написать драйвер для флеш-программирования.Например, вы должны изучить часть программирования флэш-памяти в руководстве + примечания к приложению.

...