Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Можно ли сделать Hex-файл без main
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > IAR
Sagittarius
Здравствуйте.

Есть код с большим объемом данных во внутренней флеши проца (звук в STM32F103). Все данные с массивом указателей на них лежат в отдельном сегменте, но линкуются вместе со всем кодом. Вопрос - можно ли в IAR-е сделать HEX-файл только для этих данных, чтоб отделить их от кода при прошивке и при абдейте уже в готовом устройстве?
Т.е. слинковать что то типа:

CODE
#pragma location="SOUND_DATA"
const uint8_t * pointers[]={
a,b,c
};

#pragma location="SOUND_DATA"
const uint8_t a[]={1,2,3,4,5,6,7,8};

#pragma location="SOUND_DATA"
const uint8_t b[]={1,2,3,4,5,6,7,8};

#pragma location="SOUND_DATA"
const uint8_t c[]={1,2,3,4,5,6,7,8};


без функции main, стартапа, векторов и пр.

Спасибо.
IgorKossak
Вам на выходе надо получить не исполняемый файл, а библиотеку.
Тип проекта установите соответствующий.
Давно с IAR не работал, как там сейчас это делается - не знаю.
Sagittarius
Цитата(IgorKossak @ Jan 17 2013, 14:26) *
Вам на выходе надо получить не исполняемый файл, а библиотеку.


библиотеку пробовал, но это не hex, ее отдельно не прошьешь в проц а надо сначала прицепить к проекту и линковать. Задача же получить отдельный файл для заливки в проц средствами IAR.
IgorKossak
Ну тогда проще. Сделайте проект с пустой main() и всеми Вашими массивами объявленными как __root или как-нибудь иначе, чтобы при оптимизации не выкинулись. Когда получите hex файл, отредактируйте его, удалив всё лишнее.
MrYuran
Цитата(Sagittarius @ Jan 17 2013, 15:47) *
Задача же получить отдельный файл для заливки в проц средствами IAR.

Скрипт линкера надо править

Цитата(IgorKossak @ Jan 17 2013, 16:24) *
Ну тогда проще. Сделайте проект с пустой main() и всеми Вашими массивами объявленными как __root или как-нибудь иначе, чтобы при оптимизации не выкинулись. Когда получите hex файл, отредактируйте его, удалив всё лишнее.

О таком решении не подумал )
scifi
Цитата(Sagittarius @ Jan 17 2013, 13:08) *
Вопрос - можно ли в IAR-е сделать HEX-файл только для этих данных, чтоб отделить их от кода при прошивке и при абдейте уже в готовом устройстве?

Встречный вопрос: откуда берется звук в формате массива Си? Может быть, он может взяться оттуда же, но уже в формате HEX? По крайней мере это было бы естественно.
Забегая вперёд, предложу следующее: если звук вырезается как кусок двоичных данных из WAV файла, то при помощи программы Srecord легко вырезать кусок и преобразовать его в HEX с нужным стартовым адресом. Причём эта процедура по хорошему должна быть частью автоматизированного процесса сборки программы.
Sagittarius
Цитата(Sagittarius @ Jan 17 2013, 13:08) *
Вопрос - можно ли в IAR-е сделать HEX-файл только для этих данных


Оказалось можно и совсем просто. В опциях отключаются библиотеки, в стартпоинт линкера прописывается имя массива - результат Hex только с данными по нужному адресу.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.