Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Прилинковать HEX-файл, к файлу проекта
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > GNU/OpenSource средства разработки
nanorobot
Пишу(пытаюсь) проект для LPC4357 с использованием обоих ядер. Не дойду своим умом как прилинковать hex (ну или elf) ядра M0 к основному elf проекта. Смотрел соответствующие демо проекты для IDE LPCXpresso, но там другие подходы. Есть понимание, что делать это надо в скрипте линкера, но полной ясности нет. Прошу помощи.
alx2
Совсем необязательно делать это в скрипте линкера. Проще преобразовать файл из формата hex в формат elf утилитой objcopy из комплекта GNU binutils, а затем полученный elf прилинковать к проекту точно также как и все остальные объектные файлы.
nanorobot
Цитата(alx2 @ Nov 12 2014, 14:23) *
Совсем необязательно делать это в скрипте линкера. Проще преобразовать файл из формата hex в формат elf утилитой objcopy из комплекта GNU binutils, а затем полученный elf прилинковать к проекту точно также как и все остальные объектные файлы.



В сухом остатке:
- Как прилинковать файл?
- Да так же, как и все остальные!

Этот файл, по оношению к проекту, сторонний. Вот как то и нужно линкеру указать путь к нему, адрес линковки и т.п.
Как это сделать - об этом и был вопрос
Petka
Цитата(nanorobot @ Nov 12 2014, 14:16) *
В сухом остатке:
- Как прилинковать файл?
- Да так же, как и все остальные!

Этот файл, по оношению к проекту, сторонний. Вот как то и нужно линкеру указать путь к нему, адрес линковки и т.п.
Как это сделать - об этом и был вопрос

Назревает вопрос:
Что вы хотите получить на выходе "объединения" кода от двух ядер? Один общий HEX файл или один общий elf файл?
nanorobot
Цитата(Petka @ Nov 13 2014, 21:31) *
Назревает вопрос:
Что вы хотите получить на выходе "объединения" кода от двух ядер? Один общий HEX файл или один общий elf файл?


Не считал этот момент принципиальным, ибо нынешний скрипт линкера дает оба формата. Но если нужно выбрать что то одно, я предпочел бы elf.
Petka
Цитата(nanorobot @ Nov 13 2014, 22:12) *
Не считал этот момент принципиальным, ибо нынешний скрипт линкера дает оба формата. Но если нужно выбрать что то одно, я предпочел бы elf.

Хм. Скрипт линкера не даёт вообще никаких выходных файлов. Вообще он к выходным форматам отношения не имеет.
Если нужно получить один общий HEX, то лучший способ - ознакомиться с у утилитами objcopy и srecord
Общий elf имеет смысл получать только для целей отладки. Т.к. для M0 ядра у вас отладочной информации в HEX скорее всего не содержится, то преобразование HEX -> ELF ИМХО бессмысленно.
П.С.
Опишите подробнее, что у вас имеется, и что вы хотите сделать.
Что вы называете "проектом"? Для меня "проект" в разделе "opensource" это, например, Makefile.
nanorobot
Цитата(Petka @ Nov 14 2014, 01:19) *
Хм. Скрипт линкера не даёт вообще никаких выходных файлов. Вообще он к выходным форматам отношения не имеет.
Если нужно получить один общий HEX, то лучший способ - ознакомиться с у утилитами objcopy и srecord
Общий elf имеет смысл получать только для целей отладки. Т.к. для M0 ядра у вас отладочной информации в HEX скорее всего не содержится, то преобразование HEX -> ELF ИМХО бессмысленно.
П.С.
Опишите подробнее, что у вас имеется, и что вы хотите сделать.
Что вы называете "проектом"? Для меня "проект" в разделе "opensource" это, например, Makefile.



Под проектом я понимаю совокупность исходных и заголовочных файлов, Makefile и скриптов линкера. Проект начат на основе готового, взятого в инете, демо-проекта. Помаленьку обрастает функционалом. Часть проекта, которая на M4 - GUI, клавиши. леды, - HMI, короче говоря. На ядре M0 - критичный ко времени функционал. Ранее проект был начат на IAR, в котором я имею сравнительно приличный опыт. По причинам, которые долго излагать, пришлось
перейти на GCC, в котором опыта практически не имею. Продвигаюсь вперед методом проб и ошибок. На данном этапе, естественно, работа идет по схеме "+20 строк кода->компиляция->заливка, проверка". Использую JLink. Поэтому пока интересует общий elf. С отладочной информацией для обоих ядер. Преобразования elf<->hex пока не обсуждаем. Далее будет видно. В головном посте hex был употреблен по недосмотру.
В итоге:
Имеется два независимых(с точки зрения IDE ) проекта. Один для LPC4357_M4, другой LPC4357_M0. Требуется об'яснить линкеру проекта для M4, что в такой то папке, надо взять такие то файлы и включить их в состав выходного файла формата elf.
Дмитриос
Цитата(nanorobot @ Nov 14 2014, 07:38) *
Имеется два независимых(с точки зрения IDE ) проекта. Один для LPC4357_M4, другой LPC4357_M0. Требуется об'яснить линкеру проекта для M4, что в такой то папке, надо взять такие то файлы и включить их в состав выходного файла формата elf.

Ну конечно всё в этом мире возможно особенно с gnu. Но как вы себе представляете есть у вас функция main() или переменная SystemFrequency и что? вот вы в отладчик вводите в Watch и получаете что?
Вам для чего два образа? Если просто для прошивки, то создаёте массив байт из бинарного файла --> обзываете его как нибудь типа __Attribute__(section(cortex_m0_core)) и в скрипте линкера пихаете его в необходимую Вам секцию по определённому адресу -- в этом случае наверное ваш JLink будет прошивать оба проекта.


nanorobot
Цитата(Дмитриос @ Nov 14 2014, 22:04) *
Ну конечно всё в этом мире возможно особенно с gnu. Но как вы себе представляете есть у вас функция main() или переменная SystemFrequency и что? вот вы в отладчик вводите в Watch и получаете что?
Вам для чего два образа? Если просто для прошивки, то создаёте массив байт из бинарного файла --> обзываете его как нибудь типа __Attribute__(section(cortex_m0_core)) и в скрипте линкера пихаете его в необходимую Вам секцию по определённому адресу -- в этом случае наверное ваш JLink будет прошивать оба проекта.



Вполне осознал тупость своего вопроса. Благодарю за науку. В IAR там как то не задумываешься над этими тонкостями(довольно толстыми тонкостями, как оказалось). Просто сохранились воспоминания что была возможность отлаживаться, как для M4 так и для M0, открывая соответствующий проект. Но как же тогда должен называться этот кентавр ? Файл типа elf с отладочной информацией для M4 и прилинкованный к нему Hex для M0? Такое бывает ?
Или просто 2 слитых хекса, без возможности отладки? Не дайте помереть дураком...

Цитата(nanorobot @ Nov 14 2014, 22:32) *
Вполне осознал тупость своего вопроса. Благодарю за науку. В IAR там как то не задумываешься над этими тонкостями(довольно толстыми тонкостями, как оказалось). Просто сохранились воспоминания что была возможность отлаживаться, как для M4 так и для M0, открывая соответствующий проект. Но как же тогда должен называться этот кентавр ? Файл типа elf с отладочной информацией для M4 и прилинкованный к нему Hex для M0? Такое бывает ?
Или просто 2 слитых хекса, без возможности отладки? Не дайте помереть дураком...


вроде что то стало доходить: должно быть три файла: один хекс с частями для обоих ядер, и два ELF , по одному для каждого ядра, для отладки. Но как сие получить - пока все равно загадка.
Petka
Цитата(nanorobot @ Nov 14 2014, 20:45) *
вроде что то стало доходить: должно быть три файла: один хекс с частями для обоих ядер, и два ELF , по одному для каждого ядра, для отладки.

Да, самый разумный вариант.

Цитата
Но как сие получить - пока все равно загадка.

Сначала отделите мухи от котлет. Сделайте два "проекта" всё что относится к M0 в один, остальное в другой. Если будут сложности по сборке каждого проекта - обращайтесь.
Потом с помощью objcopy и srecord можно всё это поместить в один хекс.
Начните с раздельных ELF.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.