реклама на сайте
подробности

 
 
> Написание плагинов к кросскомпилятору GCC
fatlortroll
сообщение Nov 14 2013, 12:00
Сообщение #1


Участник
*

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



Доброго времени суток. Подскажите, чем и как собирать плагины к кроссу GCC? Если хостовым компилятором -- то как плагин узнает о специфичных для платформы типах (могут отличаться по размерам, например, int-ы у хоста и кросса), и не придётся ли собирать по новой как хостовый компилятор, так и кросс (subj собран под линуксом тамошним MinGW, а я сейчас на виндовсе). Если самим кроссом (на что намекают файлы в каталоге /lib/gcc/arm-none-eabi/4.7.4/plugin/include), то как кодогенератор под ARM будет кодогенерировать под самого себя, исполняющегося на x86?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Виктория
сообщение Nov 15 2013, 05:43
Сообщение #2


инженер
****

Группа: Свой
Сообщений: 520
Регистрация: 19-09-05
Из: Самара
Пользователь №: 8 701



fatlortroll, боюсь, что в такой постановке на Ваш вопрос никто не захочет отвечать.

Приведите, хотя бы, пример плагина. Что Вам не хватает в кросскомпиляторе? Какую функцию Вы хотите добавить?

Какая у Вас платформа target-а тоже хорошо бы указать.


З.Ы.: почему у Вас такой странный ник? Троллю могут и не помочь, по доброте душевной. Публика на этом форуме - очень серьезные дяди.
Go to the top of the page
 
+Quote Post
fatlortroll
сообщение Nov 15 2013, 06:04
Сообщение #3


Участник
*

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



От кросса мне хотелось бы создание файла конфигурации по C-шной структуре. Внутри контроллера живёт некое подобие MODBUS, и общается с внешним миром. Внешняя общалка использует сгенерированный файл с описанием данных и функций. Сейчас этот файл генерируется внешним скриптом, но скрипт не может знать, сколько байт в, например, int-е контроллера. Оттого и хочется генерировать файл плагином. Ему можно явно сказать sizeof(int), и размер посчитается без участия человека.

Целевая платформа -- STM32F373.

Ник -- привет из прошлого. Он мне дорог, как память. :-)

Цитата(_Pasha @ Nov 15 2013, 09:53) *
a14.gif
ибо товарисчь, сходимши по даденой им же ж самим ссылке, не в силАх прочитать докУмент How-to-build-toolchain.pdf lol.gif


How to build-то я прочитать могу, и даже прочитал. Но меня интересует техническая сторона вопроса. Придётся ли пересобирать с нуля ещё и хостовый компилятор? Откуда хостовый компилятор, если им собирать плагин, узнает размеры базовых типов платформы кросса? Зачем в каталогах кросса такие подробные include для создания плагинов? Не хочется биться лбом в стену -- может, рядом есть дверь, да я её не вижу.
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Nov 15 2013, 06:14
Сообщение #4


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



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


В вещах, общающихся с внешним миром, нормальные люди не используют встроенные типы.
Для обеспечения детерминированности размеров полей пользуются <stdint.h>
В связи с чем -подозрение, что Вы вообще крайне далеки от программирования. Начните плз с более простых вопросов.
И собирать компилятор - задача нетривиальная, она к Вашему вопросу никаким боком не относится.
Go to the top of the page
 
+Quote Post
fatlortroll
сообщение Nov 15 2013, 06:26
Сообщение #5


Участник
*

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



Цитата(_Pasha @ Nov 15 2013, 10:14) *
В вещах, общающихся с внешним миром, нормальные люди не используют встроенные типы.
Для обеспечения детерминированности размеров полей пользуются <stdint.h>
В связи с чем -подозрение, что Вы вообще крайне далеки от программирования. Начните плз с более простых вопросов.
И собирать компилятор - задача нетривиальная, она к Вашему вопросу никаким боком не относится.


Что было в ТЗ, то и использую. Это уж не мне решать.

Внезапно, наружу могут отдаваться не только целочисленные, но и с плавающей точкой. В любом случае внешнему скрипту надо будет знать, сколько байт в том же uint16_t, то есть реализовывать часть парсера C / C++. А ещё POD-структуры наружу могут отдаваться. И массивы. С ними что прикажете делать?

Подозрения -- штука такая, сродни гаданию по юзерпику.

Ничего особо сакрального в сборке компилятора нет, всё уже давно расписано, и готовые скрипты сборки лежат на каждом углу. Мне хочется знать, есть ли смысл во всё это ввязываться, или пусть уже по старинке, руками, прописывать размеры данных.
Go to the top of the page
 
+Quote Post
msalov
сообщение Nov 15 2013, 08:16
Сообщение #6


Знающий
****

Группа: Свой
Сообщений: 526
Регистрация: 24-08-07
Из: Беларусь, Минск
Пользователь №: 30 045



Цитата(fatlortroll @ Nov 15 2013, 09:26) *
Внезапно, наружу могут отдаваться не только целочисленные, но и с плавающей точкой. В любом случае внешнему скрипту надо будет знать, сколько байт в том же uint16_t

Вообще-то упомянутые вами типы данных строго определены стандартом. Во floate 4 байта на всех платформах, а в uint16_t 16 бит (2 байта) тоже на всех платформах. Потому что эти типы вводились как раз для переносимости между платформами. Может отличаться только порядок байт.

ISO/IEC 9899
Цитата
7.18.1.1 Exact-width integer types
1 The typedef name intN_t designates a signed integer type with width N, no padding
bits, and a two’s complement representation. Thus, int8_t denotes a signed integer
type with a width of exactly 8 bits.
2 The typedef name uintN_t designates an unsigned integer type with width N. Thus,
uint24_t denotes an unsigned integer type with a width of exactly 24 bits.
Go to the top of the page
 
+Quote Post
fatlortroll
сообщение Nov 15 2013, 08:31
Сообщение #7


Участник
*

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



Цитата(msalov @ Nov 15 2013, 12:16) *
Вообще-то упомянутые вами типы данных строго определены стандартом. Во floate 4 байта на всех платформах, а в uint16_t 16 бит (2 байта) тоже на всех платформах. Потому что эти типы вводились как раз для переносимости между платформами. Может отличаться только порядок байт.


float и double, если я не ошибаюсь, могут иметь одинаковый размер, а могут и разный. По крайней мере мне вспоминается, что на AVR sizeof(float) == sizeof(double). И опять же, не хочется выносить во внешний скрипт часть парсера C-C++, хочется отдать максимум работы компилятору.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 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
||- - MrYuran   Цитата(fatlortroll @ Nov 15 2013, 10:26) ...   Nov 15 2013, 12:13
||- - fatlortroll   Цитата(MrYuran @ Nov 15 2013, 16:13) Это ...   Nov 16 2013, 17:17
||- - _Pasha   Цитата(fatlortroll @ Nov 16 2013, 20:17) ...   Nov 16 2013, 17:29
||- - 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


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 30th July 2025 - 01:25
Рейтинг@Mail.ru


Страница сгенерированна за 0.01466 секунд с 7
ELECTRONIX ©2004-2016