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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Расширенное использование 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
megajohn
сообщение Oct 9 2013, 11:12
Сообщение #2


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

Группа: Свой
Сообщений: 1 080
Регистрация: 16-11-04
Из: СПб
Пользователь №: 1 143



попробовать Pre- and Post-build
http://supp.iar.com/Support/?note=99436&from=note+28924


--------------------
Марс - единственная планета, полностью населенная роботами (около 7 штук).
Go to the top of the page
 
+Quote Post
grisha_scorpion
сообщение Oct 9 2013, 12:40
Сообщение #3


Участник
*

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



Цитата(megajohn @ Oct 9 2013, 14:12) *
попробовать Pre- and Post-build
http://supp.iar.com/Support/?note=99436&from=note+28924

Посмотрел. Спасибо.Я так понял нужно будет использовать bat файл, в котором определить последовательность действий:
- запуск еще одной программы, которая будет из исходного бинарного файла делать расширенный с заголовком.

А как всё таки передавать такие данные как __DATE__ ,__TIME__ в программу?

В Post-build command line указать ссылку на bat файл, а в bat файле прописать вот так(proga.exe __DATE__ __TIME__)?

Сообщение отредактировал grisha_scorpion - Oct 9 2013, 12:50
Go to the top of the page
 
+Quote Post
megajohn
сообщение Oct 9 2013, 12:54
Сообщение #4


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

Группа: Свой
Сообщений: 1 080
Регистрация: 16-11-04
Из: СПб
Пользователь №: 1 143



__TIME__ это компиляторное служебное слово и в BAT думаю не не пройдет =)
я бы разместил __DATE__ и __TIME__ по фиксированному адресу в флеши ( иар это позволяет )
и мелкая утилитка, которая и формирует заголовок исходя из размера и вставляет __DATE__ и __TIME__ из прошивы


--------------------
Марс - единственная планета, полностью населенная роботами (около 7 штук).
Go to the top of the page
 
+Quote Post
grisha_scorpion
сообщение Oct 9 2013, 13:43
Сообщение #5


Участник
*

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



Цитата(megajohn @ Oct 9 2013, 15:54) *
__TIME__ это компиляторное служебное слово и в BAT думаю не не пройдет =)
я бы разместил __DATE__ и __TIME__ по фиксированному адресу в флеши ( иар это позволяет )
и мелкая утилитка, которая и формирует заголовок исходя из размера и вставляет __DATE__ и __TIME__ из прошивы

А если сделать вот так:
В IARe в Post-build command line указать: proga.exe __DATE__ __TIME__
Так тоже не пройдет?
Go to the top of the page
 
+Quote Post
grisha_scorpion
сообщение Oct 9 2013, 15:38
Сообщение #6


Участник
*

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



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


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

Группа: Свой
Сообщений: 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
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 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
V_N
сообщение Oct 10 2013, 09:26
Сообщение #9


Частый гость
**

Группа: Свой
Сообщений: 162
Регистрация: 12-01-09
Из: Харьков
Пользователь №: 43 270



Вот здесь все написано http://microsin.ru/content/view/1141/44/
Go to the top of the page
 
+Quote Post
SSerge
сообщение Oct 10 2013, 09:49
Сообщение #10


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

Группа: Свой
Сообщений: 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 10 2013, 15:22
Сообщение #11


Участник
*

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



Цитата(V_N @ Oct 10 2013, 12:26) *
Вот здесь все написано http://microsin.ru/content/view/1141/44/

Спасибо очень познавательно. А как можно реализовать подобное, но еще добавить размер полученного бинарного файла(прошивки)?
Go to the top of the page
 
+Quote Post
grisha_scorpion
сообщение Oct 11 2013, 06:25
Сообщение #12


Участник
*

Группа: Участник
Сообщений: 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
kolobok0
сообщение Oct 11 2013, 11:54
Сообщение #13


практикующий тех. волшебник
*****

Группа: Участник
Сообщений: 1 190
Регистрация: 9-09-05
Пользователь №: 8 417



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


у вас пост билд отрабатывает на момент окончания сборки(сразу после неё).
строковые команды
date /T
time /T

спасут отца русской демократии.
Go to the top of the page
 
+Quote Post
grisha_scorpion
сообщение Oct 15 2013, 15:37
Сообщение #14


Участник
*

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



Цитата(kolobok0 @ Oct 11 2013, 14:54) *
у вас пост билд отрабатывает на момент окончания сборки(сразу после неё).
строковые команды
date /T
time /T

спасут отца русской демократии.

можно как то подробней расписать ваше сказанное?
Go to the top of the page
 
+Quote Post
KRS
сообщение Oct 16 2013, 05:06
Сообщение #15


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

Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555



Цитата(grisha_scorpion @ Oct 15 2013, 19:37) *
можно как то подробней расписать ваше сказанное?

куда уж подробнее то, это стандартные cmd команды...
(только date может конфликтовать с mingw)
Go to the top of the page
 
+Quote Post

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

 


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


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