|
Запись структуры во флэш. |
|
|
|
Nov 25 2014, 08:32
|
Профессионал
    
Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075

|
Я работаю с камнем EFM32TG842. У него есть сектор во флэше для записи данных пользователя - страница 512 байт. Я хочу записать туда свою структуру. Код struct sFlashParam { uint16_t customerID; uint32_t mainCounter; uint32_t CWcounter; uint8_t mode; uint8_t channel; uint8_t meter_type; …и так далее. } и потом пишу. Код WriteToFlash(0x0FE00000, (uint32_t*)&flashParam1); функция выглядит так Код void WriteToFlash(uint32_t address, uint32_t *data) { uint32_t *addr = (uint32_t *) address; //(uint32_t *)0x0FE00000; MSC_Init(); MSC_ErasePage(addr); MSC_WriteWord(addr, data, sizeof(data)); MSC_Deinit(); } вопрос как структура запишется? каждый член структуры в 32-битный регистр? и как мне считать структуру из флэша?
|
|
|
|
|
 |
Ответов
|
Nov 25 2014, 22:43
|
Знающий
   
Группа: Участник
Сообщений: 643
Регистрация: 29-05-09
Из: Германия
Пользователь №: 49 725

|
Цитата(Golikov A. @ Nov 25 2014, 19:58)  Можно конечно их все объявить константами, но тогда будет не очень удобно обновлять параметры из меню пользователя или через внешний протокол... если это только константы, то да удобно. Если параметры во флэше, - а я бы назвал это настройками, - обновляются не по 10 раз в секунду, а в какие-либо ключевые моменты жизни приложения, после чего последнее пользуется результатами и делает свою работу, то почему же не удобно обновлять прямо во флэше? Например, коэффициенты коррекций и поправок в системе с ADC, и т.п. Ну, вначале, при калибровке, может и надо будет раз 20 перезаписать настройки, но потом они будут довольно долго неизменны. Или вот пример из нашей практики. Надо управлять светодиодами через ШИМ. Характеристка вход-выход выражается степенной функцией (гамма-коррекция). Если считать на лету каждый раз по формуле для нескольких каналов, можно перегрузить процессор. Можно работать и по таблице, но ее надо качать по каналу. Мы же меняем показатель (гамму) короткой командой, а процессор тут же единожды вычисляет и создает таблицу, которой потом и пользуется постоянно. Все во флэше.
|
|
|
|
Сообщений в этой теме
Jenya7 Запись структуры во флэш. Nov 25 2014, 08:32 редактор Скорее всего как в памяти отображается так и запиш... Nov 25 2014, 09:17 Golikov A. а вы запишите, считайте и узнаете
наверняка есть ... Nov 25 2014, 09:18 Jenya7 Цитата(Golikov A. @ Nov 25 2014, 15:18) а... Nov 25 2014, 09:38  scifi Цитата(Jenya7 @ Nov 25 2014, 12:38) Кодvo... Nov 25 2014, 09:54 jcxz Цитата(Jenya7 @ Nov 25 2014, 14:32) вопро... Nov 25 2014, 09:29 Golikov A. тут прикол в другом
uint32_t size
а при вызове ... Nov 25 2014, 10:00 Jenya7 Цитата(Golikov A. @ Nov 25 2014, 16:00) т... Nov 25 2014, 10:12 mantech Цитата(Jenya7 @ Nov 25 2014, 11:32) У нег... Nov 25 2014, 10:06 Golikov A. ЦитатаИ что, прямо так и записывается, без всяких ... Nov 25 2014, 10:16 Jenya7 Цитата(Golikov A. @ Nov 25 2014, 16:16) п... Nov 25 2014, 11:02 Golikov A. sizeof - выдает длину в байтах.
и для инта_32 буде... Nov 25 2014, 11:07 Jenya7 сделал по совету scifi .
Код
memcpy(... Nov 25 2014, 11:22 scifi Цитата(Jenya7 @ Nov 25 2014, 14:22) Кодme... Nov 25 2014, 12:00  Jenya7 Цитата(scifi @ Nov 25 2014, 17:00) Вы буд... Nov 25 2014, 12:20  juvf Цитата(scifi @ Nov 25 2014, 17:00) Вы буд... Nov 26 2014, 04:40   Jenya7 Цитата(juvf @ Nov 26 2014, 09:40) это сов... Nov 26 2014, 07:02    KnightIgor Цитата(Jenya7 @ Nov 26 2014, 09:02) Я пиш... Nov 26 2014, 09:34     Jenya7 Цитата(KnightIgor @ Nov 26 2014, 14:34) О... Nov 26 2014, 13:32      KnightIgor Цитата(Jenya7 @ Nov 26 2014, 15:32) нашел... Nov 27 2014, 15:40       AHTOXA Нет, RAM-функции надо не в bss (это неинициализиро... Nov 27 2014, 18:08   Сергей Борщ Цитата(juvf @ Nov 26 2014, 06:40) так стр... Nov 26 2014, 07:05 Golikov A. КодflashParam1 = *(struct sFlashParam1*)0x... Nov 25 2014, 12:39 Jenya7 Цитата(Golikov A. @ Nov 25 2014, 17:39) К... Nov 25 2014, 12:48 scifi Цитата(Golikov A. @ Nov 25 2014, 15:39) К... Nov 25 2014, 16:54 Aaron Цитата(Golikov A. @ Nov 25 2014, 15:39) К... Nov 28 2014, 07:57  KnightIgor Цитата(Aaron @ Nov 28 2014, 09:57) Это, т... Nov 28 2014, 08:18   Сергей Борщ Цитата(KnightIgor @ Nov 28 2014, 10:18) А... Nov 28 2014, 09:53    KnightIgor Цитата(Сергей Борщ @ Nov 28 2014, 11:53) ... Nov 28 2014, 18:28 Golikov A. Мне как-то кажется такое присвоение не корректным,... Nov 25 2014, 13:48 KnightIgor Цитата(Jenya7 @ Nov 25 2014, 10:32) Я раб... Nov 25 2014, 14:25 Jenya7 Цитата(KnightIgor @ Nov 25 2014, 19:25) .... Nov 25 2014, 14:43  KnightIgor Цитата(Jenya7 @ Nov 25 2014, 16:43) спаси... Nov 25 2014, 17:37 Golikov A. получается копирование структур по указателю выдае... Nov 25 2014, 16:47 Golikov A. да вот что-то получается что так наоборот даже бол... Nov 26 2014, 06:26 scifi Цитата(Golikov A. @ Nov 26 2014, 09:26) н... Nov 26 2014, 07:25 Golikov A. Прикольно, но все же не очень красиво. Дефайн пере... Nov 26 2014, 08:33 scifi Цитата(Golikov A. @ Nov 26 2014, 11:33) П... Nov 26 2014, 09:07 Velund Конкретно для иара...
#pragma pack(1)
описание с... Nov 26 2014, 09:07 Golikov A. ЦитатаНа это ИМХО могу ответить фактами: ничего не... Nov 26 2014, 10:31 scifi Цитата(Golikov A. @ Nov 26 2014, 13:31) а... Nov 26 2014, 11:40 Golikov A. спасибо, погляжу Nov 26 2014, 12:13 Golikov A. ну да на стэке как то логичнее... Он же локальный.... Nov 28 2014, 10:57
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|