реклама на сайте
подробности

 
 
> Как в IAR инициализировать структуру во флеш?, Структура состоит из переменного кол-ва подструктур
mempfis_
сообщение Sep 29 2009, 13:29
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 001
Регистрация: 27-06-06
Пользователь №: 18 409



Добрый день.
Стоит задача создать во флэш набор дефолтных значений для восстановления рабочих парметров устройства.
Параметры собраны в структуру элементами которой могут быть другие структуры.
Приблизительно так:

Код
struct stAnalog {
unsigned char param1;
unsigned char param2;
}

struct stDigital {
unsigned char param1;
unsigned char param2;
}

#define analognum 2
#define digitalnum  2

struct stParameters {
stAnalog AnalogParam[analognum];
stDigital DijitalParam[digitalnum];
}


Создаю во флеш дефольную структуру.
Инициализировать её приходится вручную прописывая каждый элемент:
Код
__flash stParameters DefParameters =
{
   //AnalogParam[0]
   0,
   5,

   //AnalogParam[1]
   0,
   5,

   //DigitalParam[0]
   7,
   3,

   //DigitalParam[1]
   7,
   3,
};


Для небольших величин analognum и digitalnum ещё можно прописать параметры вручную.
Но таких структур и их кол-во предполагается большое и пока что неизвестное.

Вопрос - каким образом средствами компилятора можно автоматизировать инициализацию всех подструктур (каждая подструктура инициализирутся одинаковыми значениями)?
Заранее спасибо за ответы smile.gif
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
scifi
сообщение Sep 30 2009, 06:42
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Ещё один вариант: в процессе сборки запускать внешний скрипт, который будет динамически генерировать исходник с инициализатором этой мега-структуры. На платформе Windows доступны VBScript и JScript, если я не ошибаюсь. В качестве идеи: в "компактном" исходнике кусок, который хотим "размножить", обрамляем специальной рамкой:
Код
MULTIPLY(123)
/* код для размножения */
ENDMULTIPLY

Далее прогоняем по этому исходнику свой препроцессор в виде скрипта, и он размножит нужные куски.
Да, забыл, ещё в качестве такого препроцессора можно взять M4.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 20:47
Рейтинг@Mail.ru


Страница сгенерированна за 0.01377 секунд с 7
ELECTRONIX ©2004-2016