Перейти к содержанию
    

Qt для Stm

Вот команда компилятору

compiling main.c

/home/vlad/proj/gcc-arm-none-eabi-5_4-2016q3/bin/arm-none-eabi-gcc -g -O0 -Wall -Wextra -pipe -fvisibility=default -mcpu=cortex-m3 -I/home/vlad/MyTestt1122/mbed-src/api -I/home/vlad/MyTestt1122/mbed-src/hal -I/home/vlad/MyTestt1122/mbed-src/targets/cmsis -I/home/vlad/MyTestt1122/mbed-src/targets/cmsis/TARGET_STM/TARGET_STM32F1 -I/home/vlad/MyTestt1122/mbed-src/targets/cmsis/TARGET_STM/TARGET_STM32F1/TARGET_NUCLEO_F103RB -I/home/vlad/MyTestt1122/mbed-src/targets/hal/TARGET_STM/TARGET_STM32F1 -I/home/vlad/MyTestt1122/mbed-src/targets/hal/TARGET_STM/TARGET_STM32F1/TARGET_NUCLEO_F103RB -o /home/vlad/build-MyTestt1122-STM-Debug/qtc_STM_5_baff355f-debug/MyTestt1122.qtc-STM-5-baff355f.610408b1/.obj/3a52ce780950d4d9/main.c.o -c /home/vlad/MyTestt1122/main.c

Вот файл QBS:

import qbs.ModUtils

 

 

Product {

type: "application"

Depends { name:"cpp" }

property string mbed: "mbed-src/"

property string devices: "mbed-devices/"

property string rtos: "mbed-rtos/"

property string vendor: "STM"

property string model: "STM32F1"

property string cortex: "M3"

cpp.defines: []

cpp.positionIndependentCode: false

cpp.debugInformation: true

cpp.embedInfoPlist : ""

cpp.executableSuffix: ".elf"

cpp.commonCompilerFlags: [

"-mcpu=cortex-m3"]

cpp.linkerFlags:[

"-mcpu=cortex-m3"]

cpp.includePaths: [

mbed+"api",

mbed+"hal",

mbed+"targets/cmsis/",

mbed+"targets/cmsis/TARGET_"+vendor+"/TARGET_"+model+"/",

mbed+"targets/cmsis/TARGET_"+vendor+"/TARGET_"+model+"/TARGET_NUCLEO_F103RB/",

mbed+"targets/hal/TARGET_"+vendor+"/TARGET_"+model+"/",

mbed+"targets/hal/TARGET_"+vendor+"/TARGET_"+model+"/TARGET_NUCLEO_F103RB/"

]

files: [

"main.c",

"mbed-src/targets/cmsis/TARGET_STM/TARGET_STM32F1/TARGET_NUCLEO_F103RB/stm32f1xx.h",

"mbed-src/targets/cmsis/core_cm3.h",

]

 

}

 

Откуда берутся флаги -g -O0 -Wall -Wextra -pipe -fvisibility=default? В QBS файле их нету.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Откуда берутся флаги -g -O0 -Wall -Wextra -pipe -fvisibility=default? В QBS файле их нету.

-g, скорее всего, из-за строчки cpp.debugInformation: true

Надо смотреть исходники QBS, какие ключи по умолчанию задаются для проекта.

 

UPD.: Какие значения у вас для QMAKE_CXXFLAGS_DEBUG и RELEASE?

Файл qbs-porting.qdoc из репозитория git://code.qt.io/qt-labs/qbs.git

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Надо смотреть исходники QBS, какие ключи по умолчанию задаются для проекта.

Я не собирал ставил готовые пакеты с оф сайта. Ключи надеюсь прописаны в каком нибудь конфиге.

UPD.: Какие значения у вас для QMAKE_CXXFLAGS_DEBUG и RELEASE?

Где это посмотреть? Так понимаю qbs-porting.qdoc? Который часть исходника?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я не собирал ставил готовые пакеты с оф сайта. Ключи надеюсь прописаны в каком нибудь конфиге.

 

Где это посмотреть? Так понимаю qbs-porting.qdoc? Который часть исходника?

В файле .pro в каталоге вашего проекта. Либо он системные параметры берет.

Видимо, QMAKE_CXXFLAGS анализируются при конвертации сборки в формат qbs. Дописал ответ. Становится понятно теперь, как происходит заполнение этих параметров.

 

Я работаю с Makefile, где все явно указано. Не люблю эти надстройки.

 

Вот частично ответ на ваши вопросы:

http://lists.qt-project.org/pipermail/qbs/...ber/001038.html

 

А тут подробнее: https://github.com/qbs/qbs/blob/a91bf40e89f...ules/cpp/gcc.js Получается, что, как я предполагал в начале, надо смотреть, чем он заполняет по умолчанию.

 

if (input.cpp.debugInformation)
        args.push('-g');
    var opt = input.cpp.optimization
    if (opt === 'fast')
        args.push('-O2');
    if (opt === 'small')
        args.push('-Os');
    if (opt === 'none')
        args.push('-O0');

    var warnings = input.cpp.warningLevel
    if (warnings === 'none')
        args.push('-w');
    if (warnings === 'all') {
        args.push('-Wall');
        args.push('-Wextra');
    }

 

А здесь видно, что по умолчанию стоит значение all для warning'ов: https://github.com/qbs/qbs/blob/40787b4d077...pModule.qbs#L47

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да спасибо большое, понял что QT насильно добавляет эти ключи, значение которых прописано по умолчанию.

Неприятный сюрприз. Теперь я даже не знаю куда шагать.

История такая надоел Windows решил пересесть на Линукс, подтолкнула статья на Хабре об использование Qt для микроконтроллеров. Линукс поставил сначала попробовал использовать виндовую IDE которой пользовался раньше. Но под Линуксом полностью запустить не получилось.

Путь первый VmWare с виндой проблема с заливкой прошивки пока остается для меня загадкой. GDB сервер не может прочитать данные по определенному адресу. Причем пробовал два варианта. Вариант первый это GDB сервер в винде. Второй вариант это GDB сервер в Линуксе связь через TCP проблема не в GDB сервере так как он IDE запущенyой под wine все шьет и читает без проблем.

Путь второй Wine все работает проект заливается в контроллер, но проблема с редактором не работает вставка из буфера обмена (Ctrl+v) ошибка приложение вываливается.

Третий путь это Qt с Bare Metal и QBS. Проблема компилятор ругается на процессор причем из за флагов по умолчанию прописанных. Какой точно еще не выяснил, наверное попробую почитать про флаги, может найдется какое нибудь решение.

Четвертый не проверенный путь это Эклипс. Установил, интерфейс по моему сложный, ну не понравился вообщем, если ничего не получится наверное буду пробовать.

Опыта работы с make нет IDE делала все сама. Так что вот как-то так.

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я работаю в KDevelop. С мэйками. Стоит один раз научиться, чтобы потом всю жизнь пользоваться. CodeBlocks плох тем, что там нужно явно указывать пути до компилятора. В Qt Creator я настроил проект для STM, который работает с Makefile. В KDevelop все очень просто. Сборка сразу идет, используя Makefile, в самой IDE указывается только путь до GDB и начальный скрипт, который устанавливает связь по нужному порту. KDevelop кроссплатформенный.

По поводу Эклипса - он на Ява, у меня в системы Явы нет, потому что для каждого пакета обычно требуется своя особенная Ява, что очень плохо. Вернее, есть у меня. Только установлена она локально вместе с MATLAB, и система её, естественно, не видит. Но самое простое, наверное, - это Эклипс. Для STM по нему тысячи статей, много плагинов и и.д. Я никогда не работал в этой среде,не могу что-то сказать.

 

P.S. На GitHub очень много примеров мэйков. Учитесь. Тога вы сможете пользоваться любым редактором или собирать прямо из консоли.

P.P.S. Еще есть неплохой редактор Sublime. Мне понравился.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

CodeBlocks плох тем, что там нужно явно указывать пути до компилятора.
Что в этом плохого?

На GitHub очень много примеров мэйков. Учитесь. Тога вы сможете пользоваться любым редактором или собирать прямо из консоли.

Наверное подошел к этому этапу, пол шага осталось.

По Эклипс врятли буду использовать. Если что вернусь к винде или make изучать.

Выяснилось Wine ошибка если копирую текст из редактора, и вставляю. А если текст из другой программы скопирован то вставка проходит нормально.

Изменено пользователем Vlad_9

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Что в этом плохого?

То, что путь до компилятора должен указываться в Makefile. Иначе получается дублирование.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В Qt Creator я настроил проект для STM, который работает с Makefile.
Можете проектом поделится?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Можете проектом поделится?

Мой не сохранился. Это же не для работы был, а ради интереса.

Здесь все написано: https://morf.lv/nrf51-makefile-with-qt-creator

В конце архив с проектом.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...