Перейти к содержанию
    

Прилинковать HEX-файл, к файлу проекта

Пишу(пытаюсь) проект для LPC4357 с использованием обоих ядер. Не дойду своим умом как прилинковать hex (ну или elf) ядра M0 к основному elf проекта. Смотрел соответствующие демо проекты для IDE LPCXpresso, но там другие подходы. Есть понимание, что делать это надо в скрипте линкера, но полной ясности нет. Прошу помощи.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Совсем необязательно делать это в скрипте линкера. Проще преобразовать файл из формата hex в формат elf утилитой objcopy из комплекта GNU binutils, а затем полученный elf прилинковать к проекту точно также как и все остальные объектные файлы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Совсем необязательно делать это в скрипте линкера. Проще преобразовать файл из формата hex в формат elf утилитой objcopy из комплекта GNU binutils, а затем полученный elf прилинковать к проекту точно также как и все остальные объектные файлы.

 

 

В сухом остатке:

- Как прилинковать файл?

- Да так же, как и все остальные!

 

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

Как это сделать - об этом и был вопрос

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В сухом остатке:

- Как прилинковать файл?

- Да так же, как и все остальные!

 

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

Как это сделать - об этом и был вопрос

Назревает вопрос:

Что вы хотите получить на выходе "объединения" кода от двух ядер? Один общий HEX файл или один общий elf файл?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Назревает вопрос:

Что вы хотите получить на выходе "объединения" кода от двух ядер? Один общий HEX файл или один общий elf файл?

 

Не считал этот момент принципиальным, ибо нынешний скрипт линкера дает оба формата. Но если нужно выбрать что то одно, я предпочел бы elf.

Изменено пользователем nanorobot

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не считал этот момент принципиальным, ибо нынешний скрипт линкера дает оба формата. Но если нужно выбрать что то одно, я предпочел бы elf.

Хм. Скрипт линкера не даёт вообще никаких выходных файлов. Вообще он к выходным форматам отношения не имеет.

Если нужно получить один общий HEX, то лучший способ - ознакомиться с у утилитами objcopy и srecord

Общий elf имеет смысл получать только для целей отладки. Т.к. для M0 ядра у вас отладочной информации в HEX скорее всего не содержится, то преобразование HEX -> ELF ИМХО бессмысленно.

П.С.

Опишите подробнее, что у вас имеется, и что вы хотите сделать.

Что вы называете "проектом"? Для меня "проект" в разделе "opensource" это, например, Makefile.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Хм. Скрипт линкера не даёт вообще никаких выходных файлов. Вообще он к выходным форматам отношения не имеет.

Если нужно получить один общий 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.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Имеется два независимых(с точки зрения IDE ) проекта. Один для LPC4357_M4, другой LPC4357_M0. Требуется об'яснить линкеру проекта для M4, что в такой то папке, надо взять такие то файлы и включить их в состав выходного файла формата elf.

Ну конечно всё в этом мире возможно особенно с gnu. Но как вы себе представляете есть у вас функция main() или переменная SystemFrequency и что? вот вы в отладчик вводите в Watch и получаете что?

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

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну конечно всё в этом мире возможно особенно с gnu. Но как вы себе представляете есть у вас функция main() или переменная SystemFrequency и что? вот вы в отладчик вводите в Watch и получаете что?

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

 

 

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

Или просто 2 слитых хекса, без возможности отладки? Не дайте помереть дураком...

 

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

Или просто 2 слитых хекса, без возможности отладки? Не дайте помереть дураком...

 

вроде что то стало доходить: должно быть три файла: один хекс с частями для обоих ядер, и два ELF , по одному для каждого ядра, для отладки. Но как сие получить - пока все равно загадка.

 

Изменено пользователем nanorobot

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

вроде что то стало доходить: должно быть три файла: один хекс с частями для обоих ядер, и два ELF , по одному для каждого ядра, для отладки.

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

 

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

Сначала отделите мухи от котлет. Сделайте два "проекта" всё что относится к M0 в один, остальное в другой. Если будут сложности по сборке каждого проекта - обращайтесь.

Потом с помощью objcopy и srecord можно всё это поместить в один хекс.

Начните с раздельных ELF.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...