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

 
 
> Расширенное использование IAR
grisha_scorpion
сообщение Oct 9 2013, 11:01
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 26
Регистрация: 24-08-10
Пользователь №: 59 074



Имеется следующая задача: собрать проект при котором требуется к формируемому бинарному файлу добавить в конец заголовок из 256 байт. Причем в заголовок требуется поместить инфу формируемую при сборке(дата сборки, время сборки, размер и тд). Так же в заголовок надо поместить инфу из двух файлов version.inf и device.inf То есть на выходе будем иметь следующий файл ИТОГ.bin = file.bin + заголовок. Посоветуйте как это реализовать в IARе, чтоб при выполнении make у меня автоматом всё формировалось.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
grisha_scorpion
сообщение Oct 9 2013, 15:38
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 26
Регистрация: 24-08-10
Пользователь №: 59 074



Кто подскажет как внешней программе передать данные о времени и дате сборки проекта в IAR?
Go to the top of the page
 
+Quote Post
SSerge
сообщение Oct 9 2013, 16:36
Сообщение #3


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

Группа: Свой
Сообщений: 1 719
Регистрация: 13-09-05
Из: Novosibirsk
Пользователь №: 8 528



Цитата(grisha_scorpion @ Oct 9 2013, 22:38) *
Кто подскажет как внешней программе передать данные о времени и дате сборки проекта в IAR?

Судя по предыдущим сообщениям Вы свою проблему почти решили.
Нужный блок данных формировать как константные данные в отдельном с-файле, размещать их в отдельной секции и объяснить линкеру что эту секцию следует разместить после всех остальных.

Осталось только прочитать раздел "Using pre-build actions for time stamping" из файла EWARM_IDEGuide.ENU.pdf, чтобы дата и время всегда были текущими, а не из предыдущей компиляции.

Данные из другого файла можно преобразовать в сишный текст скриптом или программами из набора srecord и вставить с помощью #include.


--------------------
Russia est omnis divisa in partes octo.
Go to the top of the page
 
+Quote Post
grisha_scorpion
сообщение Oct 10 2013, 07:46
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 26
Регистрация: 24-08-10
Пользователь №: 59 074



Цитата(SSerge @ Oct 9 2013, 19:36) *
Судя по предыдущим сообщениям Вы свою проблему почти решили.
Нужный блок данных формировать как константные данные в отдельном с-файле, размещать их в отдельной секции и объяснить линкеру что эту секцию следует разместить после всех остальных.

Осталось только прочитать раздел "Using pre-build actions for time stamping" из файла EWARM_IDEGuide.ENU.pdf, чтобы дата и время всегда были текущими, а не из предыдущей компиляции.

Данные из другого файла можно преобразовать в сишный текст скриптом или программами из набора srecord и вставить с помощью #include.

Как указать в icf файле чтоб моя секция разместилась в конце бинарника? Именно в конце бинарника, а не в конце региона.

Сообщение отредактировал grisha_scorpion - Oct 10 2013, 07:57
Go to the top of the page
 
+Quote Post
SSerge
сообщение Oct 10 2013, 09:49
Сообщение #5


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

Группа: Свой
Сообщений: 1 719
Регистрация: 13-09-05
Из: Novosibirsk
Пользователь №: 8 528



Цитата(grisha_scorpion @ Oct 10 2013, 14:46) *
Как указать в icf файле чтоб моя секция разместилась в конце бинарника? Именно в конце бинарника, а не в конце региона.

Простейший способ
place in ROM_region { readonly, last section My_footer};

в коде нужно будет указать размещение
#pragma location = "My_footer"
или через @"My_footer"

Если добавить ещё и #pragma section = "My_footer"
то можно будет получить указатель на начало секции __segment_begin("My_footer")

Мне ещё нужно было выравнивание на границу 256 байт, поэтому немного сложнее:
в коде
Код
#pragma section = "My_footer"
#pragma location = "My_footer"
//#pragma data_alignment=256
const char device_id_string[] = "device_id_string";
char * ggg = (char*)__segment_begin("My_footer");

в icf файле
Код
place in ROM_region   { last block ggg with alignment = 256 { section  My_footer }, readonly};

в доке EWARM_DevelopmentGuide.ENU.pdf это называется "extended-selector" и "inline-block-def"


--------------------
Russia est omnis divisa in partes octo.
Go to the top of the page
 
+Quote Post
grisha_scorpion
сообщение Oct 11 2013, 06:25
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 26
Регистрация: 24-08-10
Пользователь №: 59 074



Цитата(SSerge @ Oct 10 2013, 12:49) *
Простейший способ
place in ROM_region { readonly, last section My_footer};

Я так понял это будет работать в случае если: initialize by copy { readwrite }

Но в моем случае(initialize by copy { readonly, readwrite }) ваша реализация ( place in ROM_region { readonly, last section VERSION}; ) не работает.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- grisha_scorpion   Расширенное использование IAR   Oct 9 2013, 11:01
- - megajohn   попробовать Pre- and Post-build http://supp.iar.c...   Oct 9 2013, 11:12
|- - grisha_scorpion   Цитата(megajohn @ Oct 9 2013, 14:12) попр...   Oct 9 2013, 12:40
|- - megajohn   __TIME__ это компиляторное служебное слово и в BAT...   Oct 9 2013, 12:54
|- - grisha_scorpion   Цитата(megajohn @ Oct 9 2013, 15:54) __TI...   Oct 9 2013, 13:43
|- - kolobok0   Цитата(grisha_scorpion @ Oct 9 2013, 19:3...   Oct 11 2013, 11:54
|- - grisha_scorpion   Цитата(kolobok0 @ Oct 11 2013, 14:54) у в...   Oct 15 2013, 15:37
|- - KRS   Цитата(grisha_scorpion @ Oct 15 2013, 19...   Oct 16 2013, 05:06
|- - kolobok0   Цитата(grisha_scorpion @ Oct 15 2013, 19...   Oct 16 2013, 08:09
- - V_N   Вот здесь все написано http://microsin.ru/content/...   Oct 10 2013, 09:26
- - grisha_scorpion   Цитата(V_N @ Oct 10 2013, 12:26) Вот здес...   Oct 10 2013, 15:22


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

 


RSS Текстовая версия Сейчас: 9th August 2025 - 03:08
Рейтинг@Mail.ru


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