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

 
 
 
Reply to this topicStart new topic
> Можно ли сделать Hex-файл без main
Sagittarius
сообщение Jan 17 2013, 09:08
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 207
Регистрация: 26-01-06
Из: СПб
Пользователь №: 13 659



Здравствуйте.

Есть код с большим объемом данных во внутренней флеши проца (звук в 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, стартапа, векторов и пр.

Спасибо.
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Jan 17 2013, 10:26
Сообщение #2


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Вам на выходе надо получить не исполняемый файл, а библиотеку.
Тип проекта установите соответствующий.
Давно с IAR не работал, как там сейчас это делается - не знаю.
Go to the top of the page
 
+Quote Post
Sagittarius
сообщение Jan 17 2013, 11:47
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 207
Регистрация: 26-01-06
Из: СПб
Пользователь №: 13 659



Цитата(IgorKossak @ Jan 17 2013, 14:26) *
Вам на выходе надо получить не исполняемый файл, а библиотеку.


библиотеку пробовал, но это не hex, ее отдельно не прошьешь в проц а надо сначала прицепить к проекту и линковать. Задача же получить отдельный файл для заливки в проц средствами IAR.
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Jan 17 2013, 12:24
Сообщение #4


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Ну тогда проще. Сделайте проект с пустой main() и всеми Вашими массивами объявленными как __root или как-нибудь иначе, чтобы при оптимизации не выкинулись. Когда получите hex файл, отредактируйте его, удалив всё лишнее.
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Jan 17 2013, 12:29
Сообщение #5


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Цитата(Sagittarius @ Jan 17 2013, 15:47) *
Задача же получить отдельный файл для заливки в проц средствами IAR.

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

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

О таком решении не подумал )


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
scifi
сообщение Jan 17 2013, 15:41
Сообщение #6


Гуру
******

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



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

Встречный вопрос: откуда берется звук в формате массива Си? Может быть, он может взяться оттуда же, но уже в формате HEX? По крайней мере это было бы естественно.
Забегая вперёд, предложу следующее: если звук вырезается как кусок двоичных данных из WAV файла, то при помощи программы Srecord легко вырезать кусок и преобразовать его в HEX с нужным стартовым адресом. Причём эта процедура по хорошему должна быть частью автоматизированного процесса сборки программы.
Go to the top of the page
 
+Quote Post
Sagittarius
сообщение Jan 18 2013, 09:19
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 207
Регистрация: 26-01-06
Из: СПб
Пользователь №: 13 659



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


Оказалось можно и совсем просто. В опциях отключаются библиотеки, в стартпоинт линкера прописывается имя массива - результат Hex только с данными по нужному адресу.
Go to the top of the page
 
+Quote Post

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

 


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


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