Russian Qt Forum
Ноябрь 22, 2024, 01:19 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2 3   Вниз
  Печать  
Автор Тема: [QBS] baremetal: Хочу поддержку IAR, KEIL, SDCC тулчейна  (Прочитано 31734 раз)
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« : Декабрь 16, 2018, 22:45 »

Всем привет, не теряю надежды на "возвращение" QBS-а Улыбающийся

Понадобилось тут заюзать IAR для компиляции bare-metal под-проекта: сам "главный" проект конечно был написан на QBS, а вот "железная" часть была в IAR. И компилять/редактировтаь отдельно эту "железную" часть было не комильфо.

Посидев пару часиков, набросал модуль в QBS для поддержки IAR: https://github.com/denis-shienkov/qbs/tree/iar (ветка 'iar')
Также первый его вариант был добавлен на Qt Code Review: https://codereview.qt-project.org/#/c/248265/

Использовать очень просто:

1. Добавляем в QtCreator как обычно новые кастомные C/C++ компиляторы от IAR.
2. Создаем какое-нить новое bare-metal у-во (например, stmXXXX).
3. Создаем новый кит (комплект), к которому привязываем это у-во и компилятор.
4. В QBS св-вах комплекта указываем: qbs.toolchain: iar

5. Потом копируем файлы (из гитхаба, там свежее, т.к. на код-ревью еще не обновил этот свежак):

* IarProbe.qbs в <путь к установленному Qt-meta (например установленный из MaintenanceTool)>\Tools\QtCreator\share\qtcreator\qbs\share\qbs\imports\qbs\Probes\
* iar.js и iar.qbs в <путь к установленному Qt-meta (например установленный из MaintenanceTool)>\Tools\QtCreator\share\qtcreator\qbs\share\qbs\modules\cpp\

6. Дальше портируем проект (*.ewp) из IAR в QBS, открываем в Qt Creator и наслаждаемся красивой подсветочкой и быстрой компиляцией. Улыбающийся
Вот тут ссылка на пример проекта для STM32F407 (сгенеренный CubeMX): https://yadi.sk/d/G71tovsmKOu9Qg

ЗЫ:

1. Сейчас там поддерживается только IAR for ARM (EWARM).
2. Отладки, естественно нет.

Кому итересно - просьба потестить, мож что подсказать и т.п.  Улыбающийся


« Последнее редактирование: Апрель 18, 2019, 22:50 от kuzulis » Записан

ArchLinux x86_64 / Win10 64 bit
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #1 : Декабрь 17, 2018, 13:05 »

Неплохо!

навскидку - prepareИДрузья содержат много копи-пасты, можно вынести в функцию

Вместо
Код:
return "iccarm" + compilerExtension;

лучше взять fileName из пробы раз уж её юзаете (в конце-концов, экзешник может быть завернут в батник и проба это (по идее) должна схавать)
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #2 : Декабрь 17, 2018, 13:17 »

Вместо
Код:
product.cpp.compilerPath
лучше брать модуль из input, правда это может не сразу заработать.
Это нужно для того, чтобы корректно работали группы файлов - можно на группу файлов навешивать свои параметры модуля:
Код:
Group {
   name: "warn_off"
   cpp.warningLevel: "none"
   files: ["buggy.cpp"]
}

Возможно, ваш способ тоже работает, я не проверял. Для немультиплекс правил не вижу причин почему бы не работало (кроме очевидной - никто не реализовал). Для мультиплекс будут проблемы, да

Кстати, правила которые мультиплекс - они мультиплекс потому что?...
« Последнее редактирование: Декабрь 17, 2018, 13:22 от Авварон » Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #3 : Декабрь 17, 2018, 15:03 »

Ок, добавь туда на кодревью плз. свои идейки/комменты (я знаю, ты могеш. Улыбающийся ). Пусть Кристиан отпишется по ним тоже.
Записан

ArchLinux x86_64 / Win10 64 bit
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #4 : Декабрь 17, 2018, 19:35 »

Ага, спс.
Записан

ArchLinux x86_64 / Win10 64 bit
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #5 : Февраль 10, 2019, 17:03 »

А можешь добавить документацию по IAR пробе?
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #6 : Февраль 10, 2019, 18:52 »

а, ты имеешь ввиду, по аналогии с твоими коммитами?

добавил
« Последнее редактирование: Февраль 10, 2019, 19:58 от kuzulis » Записан

ArchLinux x86_64 / Win10 64 bit
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #7 : Февраль 15, 2019, 19:08 »

Ну ты и разошелся=)

Оффтоп, а Креатор это всё поддерживает? Во-первых, со стороны qmake, во-вторых, со стороны qbs?

clang-cl для qmake появился вот только в последней версии...
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #8 : Февраль 20, 2019, 12:32 »

> Оффтоп, а Креатор это всё поддерживает?

Что именно поддерживает? Если ты имеешь ввиду создание QBS проекта в QtC с использованием тулчейна из IAR, KEIL - то да. Ты можешь его создать и скомпилять..

Но вот с отладкой с использованием "родных" дебаггеров от IAR, KEIL - тут, да, для QtC нужно еще писать плагины... Улыбающийся
Но по идее, для ARM архитектуры (там где выходной  формат файлов ELF и юзаются всякие DWARF и прочие) можно
попробовать даже для проектов от IAR/KEIL подцепить GDB... Х.З. Может оно и проканает.. надо пробовать.

ЗЫ: Хотя все эти GDB "сливают" вендорным отладчикам от IAR/KEIL. Вот кстати именно для этого (в основном) я хочу запилить  генераторы проектов для IAR/KEIL. и юзать отладку там. (т.к. чтобы написать плагин для QtC который юзает IAR-овский C-Spy Debugger я х.з. скок времени нужно, т.к. особо не видел нормальной документации по этому дебаггеру, одни рекламные гайды).

> Во-первых, со стороны qmake, во-вторых, со стороны qbs?

QMake - нет, QBS теперь - да. Улыбающийся
 
ЗЫ: Просто появилось немного своб времени на работе и я от нечего делать пописываю.. Улыбающийся
« Последнее редактирование: Февраль 20, 2019, 12:33 от kuzulis » Записан

ArchLinux x86_64 / Win10 64 bit
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #9 : Февраль 20, 2019, 14:53 »

Я вот что имел ввиду - вот я выбираю тулчейн в Среаторе и дальше он генерит верный профиль? Или надо ручками подхачить настройки? Из текста к коммиту я понял второе=)
Мне еще предстоит разбираться с clang-cl в Среаторе - в последней версии прикрутили автодетект к qmake, теперь им можно компилять "искаропки", а вот для интеграции с qbs пока нет, ему сносит крышу когда выбираешь clang-cl.
Вот я и инересуюсь опытом.
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #10 : Февраль 20, 2019, 19:07 »

Цитировать
Я вот что имел ввиду - вот я выбираю тулчейн в Среаторе и дальше он генерит верный профиль? Или надо ручками подхачить настройки? Из текста к коммиту я понял второе=)

1. Пока что в QtC выбирать нужно просто кастомный компилер (и указывать путь к нему).
2. Когда профиль создался, остается просто чуть-чуть прописать в QtC тип тулчейна в настройках QBS профиля.

и все.

ЗЫ: Если добавлять профиль не из криэйтора, а из qbs-setup-toolchain - то оно автоматом создаст корректный профиль и ничего хачить не надо.

ЗЫ: Если ты имел ввиду именно наличие в QtC выбора компилеров типа IAR, KEIL и прочих, определения их ABI, то там такого нету еще (я не добавлял еще, надо плагин писать) Улыбающийся).

Записан

ArchLinux x86_64 / Win10 64 bit
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #11 : Февраль 21, 2019, 17:49 »

По желаниям трудящихся, добавил поддержку новых компилеров в QtC:

* IAR EW:

https://codereview.qt-project.org/#/c/254051/

* KEIL:

https://codereview.qt-project.org/#/c/254067/

Даже как-то и самому полегчало Улыбающийся
« Последнее редактирование: Февраль 21, 2019, 19:55 от kuzulis » Записан

ArchLinux x86_64 / Win10 64 bit
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #12 : Февраль 21, 2019, 18:27 »

 Смеющийся Смеющийся Веселый
Код:
return {a, o, so, f, w};
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #13 : Февраль 21, 2019, 19:56 »

Ой, да лан тебе придираться уже Улыбающийся
Записан

ArchLinux x86_64 / Win10 64 bit
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #14 : Апрель 18, 2019, 22:50 »

Итак:

1. В QBS 1.13 (который с QtC 4.9) уже есть поддержка IAR + KEIL для архитектур: ARM AVR, MCS51 (8051).
2. В QBS > 1.13 добавлена поддержка тулчейна SDCC.
3. В QtCreator > 4.9 также будут в baremetal плагине доступны тулчейны: IAR, KEIL, SDCC  (т.е. можно создавать их ручками, а также QtC будет пытаться их автодетектить).

UPD: В процессе еще и генератор проектов для IAR из QBS (генерятся проекты для ARM, AVR, MCS51), пока что в отдельной репе.
« Последнее редактирование: Апрель 18, 2019, 23:18 от kuzulis » Записан

ArchLinux x86_64 / Win10 64 bit
Страниц: [1] 2 3   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.053 секунд. Запросов: 22.