Я и мой друг работаем над портативным интернет-радио, управляемым Raspberry PI B + и небольшим сенсорным экраном. Я разрабатываю интерфейс с Qt-5.9, который я кросс-скомпилировал для процессора ARMv6 PI. Мой интерфейс использует QML, поэтому, когда я запускаю свое приложение, все работает, но анимации QML отстают.
Соответственно консоль говорит мне, что JML QML не включен (JIT is disabled for QML. Property bindings and animations will be very slow. Visit https://wiki.qt.io/V4 to learn about possible solutions for your platform.
), поэтому я посмотрел на данной странице о двигателе V4 и после примерно двух недель попыток я обнаружил, что проблема заключается в отсутствующей возможности использования набора инструкций Thumb-1, который необходим V4, и Конфигурация HardFP Raspbian Джесси работает на Pi. Так что теперь я думаю, что это сработало бы, если бы я заставил кросс-компилятор работать с набором Thumb-1. Я очень старался, и в итоге у меня возникли две проблемы.
-mthumb
флаг в командной строке, я получаю эту ошибку: sorry, unimplemented: Thumb-1 hard-float VFP ABI
, Мне нужен Thumb-1, я не могу изменить реализацию Hard-Float всей ОС, и для ARMv6 нет подходящего флага компилятора для отключения VFP.-mthumb-interwork
флаг в командной строке, компиляция работает, но исполняемый файл не изменяется из-за настройки ABI (https://gcc.gnu.org/onlinedocs/gcc-4.8.5/gcc/ARM-Options.html#ARM-Options)-mthumb-interwork: ... In AAPCS (the ABI) configurations this option is meaningless.
). Я перепробовал все возможные ABI, но ни одна из них не работает и не компилирует работающую программу.Я также читал о некоторых патчах для RPi, но они были включены в восходящий Qt давным-давно.
Я немного изменил аргументы компилятора (файл: QT / qtbase / mkspecs / devices / linux-rasp-pi-g ++ / qmake.conf):
QMAKE_CFLAGS += \
-mthumb \
-mfpu=vfp \
-mtune=arm1176jzf-s \
-march=armv6zk \
-mabi=aapcs-linux
(Эта конфигурация не работает)
Я настроил QT со следующими аргументами:
./configure -release -opengl es2 -device linux-rasp-pi-g++ -device-option CROSS_COMPILE=~/raspi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf- -sysroot ~/raspi/sysroot -opensource -confirm-license -skip webengine -make libs -no-icu -tslib -prefix /usr/local/qt5pi -extprefix ~/raspi/qt5pi -hostprefix ~/raspi/qt5 -v
Я надеюсь, что вы, ребята, умнее меня решаете эти проблемы, потому что я думаю, что я сделал все возможное, чтобы JIT работал.
Было бы плохо, если бы эта проблема не разрешилась, потому что Qt-QML является очень подходящим решением GUI для встроенных устройств, таких как PI, и шесть из восьми RPis используют этот старый процессор ARMv6.
заранее спасибо
Я не знаю достаточно о вашей конкретной проблеме, но я предлагаю это:
Я рекомендую вам использовать Boot2Qt.
Он основан на yocto-linux и предназначен для встроенного оборудования. С его помощью вы можете легко настроить приложение для запуска при загрузке, и оно работает очень хорошо, даже на медленном оборудовании.
вот некоторая документация для этого:
http://doc.qt.io/QtForDeviceCreation/qtee-custom-embedded-linux-image.html
Этот URL о коммерческом продукте, но с открытым исходным кодом. Вы можете получить его здесь и построить его самостоятельно:
git clone git://code.qt.io/yocto/meta-boot2qt.git
Других решений пока нет …