|
Прилинковать HEX-файл, к файлу проекта, HEX - проект для ядра M0 LPC4357 |
|
|
|
 |
Ответов
|
Nov 12 2014, 11:16
|
Местный
  
Группа: Участник
Сообщений: 244
Регистрация: 29-02-08
Пользователь №: 35 503

|
Цитата(alx2 @ Nov 12 2014, 14:23)  Совсем необязательно делать это в скрипте линкера. Проще преобразовать файл из формата hex в формат elf утилитой objcopy из комплекта GNU binutils, а затем полученный elf прилинковать к проекту точно также как и все остальные объектные файлы. В сухом остатке: - Как прилинковать файл? - Да так же, как и все остальные! Этот файл, по оношению к проекту, сторонний. Вот как то и нужно линкеру указать путь к нему, адрес линковки и т.п. Как это сделать - об этом и был вопрос
|
|
|
|
|
Nov 13 2014, 19:12
|
Местный
  
Группа: Участник
Сообщений: 244
Регистрация: 29-02-08
Пользователь №: 35 503

|
Цитата(Petka @ Nov 13 2014, 21:31)  Назревает вопрос: Что вы хотите получить на выходе "объединения" кода от двух ядер? Один общий HEX файл или один общий elf файл? Не считал этот момент принципиальным, ибо нынешний скрипт линкера дает оба формата. Но если нужно выбрать что то одно, я предпочел бы elf.
Сообщение отредактировал nanorobot - Nov 13 2014, 19:17
|
|
|
|
|
Nov 13 2014, 20:19
|
Профессионал
    
Группа: Свой
Сообщений: 1 453
Регистрация: 23-08-05
Пользователь №: 7 886

|
Цитата(nanorobot @ Nov 13 2014, 22:12)  Не считал этот момент принципиальным, ибо нынешний скрипт линкера дает оба формата. Но если нужно выбрать что то одно, я предпочел бы elf. Хм. Скрипт линкера не даёт вообще никаких выходных файлов. Вообще он к выходным форматам отношения не имеет. Если нужно получить один общий HEX, то лучший способ - ознакомиться с у утилитами objcopy и srecordОбщий elf имеет смысл получать только для целей отладки. Т.к. для M0 ядра у вас отладочной информации в HEX скорее всего не содержится, то преобразование HEX -> ELF ИМХО бессмысленно. П.С. Опишите подробнее, что у вас имеется, и что вы хотите сделать. Что вы называете "проектом"? Для меня "проект" в разделе "opensource" это, например, Makefile.
|
|
|
|
|
Nov 14 2014, 03:38
|
Местный
  
Группа: Участник
Сообщений: 244
Регистрация: 29-02-08
Пользователь №: 35 503

|
Цитата(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.
|
|
|
|
|
Nov 14 2014, 17:04
|
Участник

Группа: Участник
Сообщений: 19
Регистрация: 22-04-10
Пользователь №: 56 826

|
Цитата(nanorobot @ Nov 14 2014, 07:38)  Имеется два независимых(с точки зрения IDE ) проекта. Один для LPC4357_M4, другой LPC4357_M0. Требуется об'яснить линкеру проекта для M4, что в такой то папке, надо взять такие то файлы и включить их в состав выходного файла формата elf. Ну конечно всё в этом мире возможно особенно с gnu. Но как вы себе представляете есть у вас функция main() или переменная SystemFrequency и что? вот вы в отладчик вводите в Watch и получаете что? Вам для чего два образа? Если просто для прошивки, то создаёте массив байт из бинарного файла --> обзываете его как нибудь типа __Attribute__(section(cortex_m0_core)) и в скрипте линкера пихаете его в необходимую Вам секцию по определённому адресу -- в этом случае наверное ваш JLink будет прошивать оба проекта.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|