nanorobot 3 11 ноября, 2014 Опубликовано 11 ноября, 2014 · Жалоба Пишу(пытаюсь) проект для LPC4357 с использованием обоих ядер. Не дойду своим умом как прилинковать hex (ну или elf) ядра M0 к основному elf проекта. Смотрел соответствующие демо проекты для IDE LPCXpresso, но там другие подходы. Есть понимание, что делать это надо в скрипте линкера, но полной ясности нет. Прошу помощи. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alx2 0 12 ноября, 2014 Опубликовано 12 ноября, 2014 · Жалоба Совсем необязательно делать это в скрипте линкера. Проще преобразовать файл из формата hex в формат elf утилитой objcopy из комплекта GNU binutils, а затем полученный elf прилинковать к проекту точно также как и все остальные объектные файлы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
nanorobot 3 12 ноября, 2014 Опубликовано 12 ноября, 2014 · Жалоба Совсем необязательно делать это в скрипте линкера. Проще преобразовать файл из формата hex в формат elf утилитой objcopy из комплекта GNU binutils, а затем полученный elf прилинковать к проекту точно также как и все остальные объектные файлы. В сухом остатке: - Как прилинковать файл? - Да так же, как и все остальные! Этот файл, по оношению к проекту, сторонний. Вот как то и нужно линкеру указать путь к нему, адрес линковки и т.п. Как это сделать - об этом и был вопрос Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Petka 0 13 ноября, 2014 Опубликовано 13 ноября, 2014 · Жалоба В сухом остатке: - Как прилинковать файл? - Да так же, как и все остальные! Этот файл, по оношению к проекту, сторонний. Вот как то и нужно линкеру указать путь к нему, адрес линковки и т.п. Как это сделать - об этом и был вопрос Назревает вопрос: Что вы хотите получить на выходе "объединения" кода от двух ядер? Один общий HEX файл или один общий elf файл? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
nanorobot 3 13 ноября, 2014 Опубликовано 13 ноября, 2014 (изменено) · Жалоба Назревает вопрос: Что вы хотите получить на выходе "объединения" кода от двух ядер? Один общий HEX файл или один общий elf файл? Не считал этот момент принципиальным, ибо нынешний скрипт линкера дает оба формата. Но если нужно выбрать что то одно, я предпочел бы elf. Изменено 13 ноября, 2014 пользователем nanorobot Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Petka 0 13 ноября, 2014 Опубликовано 13 ноября, 2014 · Жалоба Не считал этот момент принципиальным, ибо нынешний скрипт линкера дает оба формата. Но если нужно выбрать что то одно, я предпочел бы elf. Хм. Скрипт линкера не даёт вообще никаких выходных файлов. Вообще он к выходным форматам отношения не имеет. Если нужно получить один общий HEX, то лучший способ - ознакомиться с у утилитами objcopy и srecord Общий elf имеет смысл получать только для целей отладки. Т.к. для M0 ядра у вас отладочной информации в HEX скорее всего не содержится, то преобразование HEX -> ELF ИМХО бессмысленно. П.С. Опишите подробнее, что у вас имеется, и что вы хотите сделать. Что вы называете "проектом"? Для меня "проект" в разделе "opensource" это, например, Makefile. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
nanorobot 3 14 ноября, 2014 Опубликовано 14 ноября, 2014 · Жалоба Хм. Скрипт линкера не даёт вообще никаких выходных файлов. Вообще он к выходным форматам отношения не имеет. Если нужно получить один общий 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. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
lgpl 0 14 ноября, 2014 Опубликовано 14 ноября, 2014 · Жалоба Имеется два независимых(с точки зрения IDE ) проекта. Один для LPC4357_M4, другой LPC4357_M0. Требуется об'яснить линкеру проекта для M4, что в такой то папке, надо взять такие то файлы и включить их в состав выходного файла формата elf. Ну конечно всё в этом мире возможно особенно с gnu. Но как вы себе представляете есть у вас функция main() или переменная SystemFrequency и что? вот вы в отладчик вводите в Watch и получаете что? Вам для чего два образа? Если просто для прошивки, то создаёте массив байт из бинарного файла --> обзываете его как нибудь типа __Attribute__(section(cortex_m0_core)) и в скрипте линкера пихаете его в необходимую Вам секцию по определённому адресу -- в этом случае наверное ваш JLink будет прошивать оба проекта. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
nanorobot 3 14 ноября, 2014 Опубликовано 14 ноября, 2014 (изменено) · Жалоба Ну конечно всё в этом мире возможно особенно с 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 , по одному для каждого ядра, для отладки. Но как сие получить - пока все равно загадка. Изменено 14 ноября, 2014 пользователем nanorobot Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Petka 0 17 ноября, 2014 Опубликовано 17 ноября, 2014 · Жалоба вроде что то стало доходить: должно быть три файла: один хекс с частями для обоих ядер, и два ELF , по одному для каждого ядра, для отладки. Да, самый разумный вариант. Но как сие получить - пока все равно загадка. Сначала отделите мухи от котлет. Сделайте два "проекта" всё что относится к M0 в один, остальное в другой. Если будут сложности по сборке каждого проекта - обращайтесь. Потом с помощью objcopy и srecord можно всё это поместить в один хекс. Начните с раздельных ELF. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться