|
Написание плагинов к кросскомпилятору GCC |
|
|
|
Nov 14 2013, 12:00
|
Участник

Группа: Участник
Сообщений: 26
Регистрация: 16-08-13
Из: Ставрополь
Пользователь №: 77 934

|
Доброго времени суток. Подскажите, чем и как собирать плагины к кроссу GCC? Если хостовым компилятором -- то как плагин узнает о специфичных для платформы типах (могут отличаться по размерам, например, int-ы у хоста и кросса), и не придётся ли собирать по новой как хостовый компилятор, так и кросс (subj собран под линуксом тамошним MinGW, а я сейчас на виндовсе). Если самим кроссом (на что намекают файлы в каталоге /lib/gcc/arm-none-eabi/4.7.4/plugin/include), то как кодогенератор под ARM будет кодогенерировать под самого себя, исполняющегося на x86?
|
|
|
|
|
 |
Ответов
|
Nov 15 2013, 06:04
|
Участник

Группа: Участник
Сообщений: 26
Регистрация: 16-08-13
Из: Ставрополь
Пользователь №: 77 934

|
От кросса мне хотелось бы создание файла конфигурации по C-шной структуре. Внутри контроллера живёт некое подобие MODBUS, и общается с внешним миром. Внешняя общалка использует сгенерированный файл с описанием данных и функций. Сейчас этот файл генерируется внешним скриптом, но скрипт не может знать, сколько байт в, например, int-е контроллера. Оттого и хочется генерировать файл плагином. Ему можно явно сказать sizeof(int), и размер посчитается без участия человека. Целевая платформа -- STM32F373. Ник -- привет из прошлого. Он мне дорог, как память. :-) Цитата(_Pasha @ Nov 15 2013, 09:53)  ибо товарисчь, сходимши по даденой им же ж самим ссылке, не в силАх прочитать докУмент How-to-build-toolchain.pdf  How to build-то я прочитать могу, и даже прочитал. Но меня интересует техническая сторона вопроса. Придётся ли пересобирать с нуля ещё и хостовый компилятор? Откуда хостовый компилятор, если им собирать плагин, узнает размеры базовых типов платформы кросса? Зачем в каталогах кросса такие подробные include для создания плагинов? Не хочется биться лбом в стену -- может, рядом есть дверь, да я её не вижу.
|
|
|
|
|
Nov 15 2013, 06:14
|
;
     
Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509

|
Цитата(fatlortroll @ Nov 15 2013, 10:04)  От кросса мне хотелось бы создание файла конфигурации по C-шной структуре. Внутри контроллера живёт некое подобие MODBUS, и общается с внешним миром. Внешняя общалка использует сгенерированный файл с описанием данных и функций. Сейчас этот файл генерируется внешним скриптом, но скрипт не может знать, сколько байт в, например, int-е контроллера. Оттого и хочется генерировать файл плагином. Ему можно явно сказать sizeof(int), и размер посчитается без участия человека. В вещах, общающихся с внешним миром, нормальные люди не используют встроенные типы. Для обеспечения детерминированности размеров полей пользуются <stdint.h> В связи с чем -подозрение, что Вы вообще крайне далеки от программирования. Начните плз с более простых вопросов. И собирать компилятор - задача нетривиальная, она к Вашему вопросу никаким боком не относится.
|
|
|
|
|
Nov 15 2013, 06:26
|
Участник

Группа: Участник
Сообщений: 26
Регистрация: 16-08-13
Из: Ставрополь
Пользователь №: 77 934

|
Цитата(_Pasha @ Nov 15 2013, 10:14)  В вещах, общающихся с внешним миром, нормальные люди не используют встроенные типы. Для обеспечения детерминированности размеров полей пользуются <stdint.h> В связи с чем -подозрение, что Вы вообще крайне далеки от программирования. Начните плз с более простых вопросов. И собирать компилятор - задача нетривиальная, она к Вашему вопросу никаким боком не относится. Что было в ТЗ, то и использую. Это уж не мне решать. Внезапно, наружу могут отдаваться не только целочисленные, но и с плавающей точкой. В любом случае внешнему скрипту надо будет знать, сколько байт в том же uint16_t, то есть реализовывать часть парсера C / C++. А ещё POD-структуры наружу могут отдаваться. И массивы. С ними что прикажете делать? Подозрения -- штука такая, сродни гаданию по юзерпику. Ничего особо сакрального в сборке компилятора нет, всё уже давно расписано, и готовые скрипты сборки лежат на каждом углу. Мне хочется знать, есть ли смысл во всё это ввязываться, или пусть уже по старинке, руками, прописывать размеры данных.
|
|
|
|
|
Nov 16 2013, 17:17
|
Участник

Группа: Участник
Сообщений: 26
Регистрация: 16-08-13
Из: Ставрополь
Пользователь №: 77 934

|
Цитата(MrYuran @ Nov 15 2013, 16:13)  Это зависит от длины байта  В военное время может достигать числа Пи Смех смехом, но я про то, что в скрипт придётся пихать информацию о том, что uint16_t весит 16 бит, а uint8_t таки 8, т.е. делать вручную то, что компилятор уже знает. Лениво мне за компилятор работать, вот и пытаюсь оценить, что обойдётся "меньшей кровью" -- писать плагин к компилятору, или писать кусок компилятора. Цитата(_Pasha @ Nov 15 2013, 16:25)  Дык я же и говорю: хватит флудить. Вместо того, чтобы выложить куски проблемного кода, Вы пытаетесь напеть Карузо по телеграфу OK, в понедельник зашлю куски кода.
|
|
|
|
|
Nov 16 2013, 17:29
|
;
     
Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509

|
Цитата(fatlortroll @ Nov 16 2013, 20:17)  Смех смехом, но я про то, что в скрипт придётся пихать информацию о том, что uint16_t весит 16 бит, а uint8_t таки 8, т.е. делать вручную то, что компилятор уже знает. Лениво мне за компилятор работать, вот и пытаюсь оценить, что обойдётся "меньшей кровью" -- писать плагин к компилятору, или писать кусок компилятора. вот - читаешь Ваши умозаключения - и видно, что они слишком сложные. Почему именно, - непонятно, пока не увидим код, т.е. видны признаки, что Вы не использовали какой-то простейший прием программирования и это привело Вас к противоречиям.
|
|
|
|
Сообщений в этой теме
fatlortroll Написание плагинов к кросскомпилятору GCC Nov 14 2013, 12:00 _Pasha Цитата(Виктория @ Nov 15 2013, 08:43) З.Ы... Nov 15 2013, 05:53    _Pasha Цитата(fatlortroll @ Nov 15 2013, 10:26) ... Nov 15 2013, 06:35    msalov Цитата(fatlortroll @ Nov 15 2013, 09:26) ... Nov 15 2013, 08:16     fatlortroll Цитата(msalov @ Nov 15 2013, 12:16) Вообщ... Nov 15 2013, 08:31      AHTOXA Цитата(fatlortroll @ Nov 16 2013, 23:17) ... Nov 16 2013, 19:23       klen голосую неистово за вариант от AHTOXA
но ради разн... Nov 17 2013, 19:05       fatlortroll Цитата(AHTOXA @ Nov 16 2013, 23:23) Вы, в... Nov 18 2013, 05:12  Виктория Цитата(fatlortroll @ Nov 15 2013, 09:04) ... Nov 15 2013, 06:28   fatlortroll Цитата(Виктория @ Nov 15 2013, 10:28) Ух-... Nov 15 2013, 06:42    _Pasha Цитата(fatlortroll @ Nov 15 2013, 09:42) ... Nov 15 2013, 12:25  AHTOXA Цитата(fatlortroll @ Nov 15 2013, 12:04) ... Nov 15 2013, 08:28 Виктория ЦитатаВнешняя общалка использует сгенерированный ф... Nov 15 2013, 06:57 fatlortroll Цитата(Виктория @ Nov 15 2013, 10:57) Но,... Nov 15 2013, 07:14 _Pasha а, ну тогда заполняйте таким образом
Кодstruct _i... Nov 18 2013, 06:16 fatlortroll Цитата(_Pasha @ Nov 18 2013, 10:16) Код ... Nov 18 2013, 06:33 psL Можно обойтись и без плагина - использовать один х... Nov 24 2013, 19:48
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|