Записки утконоса-программиста
- Все рубрики (136)
- Программерское (38)
- Жизненное (12)
- Кактусное (0)
Итак продолжаем развлекаться с загузкой на FriendlyARM Smart210v2 девборда на которую я пытаюсь вогрузить SaifishOS итак начнём:
Исходники u-boot заботливо приготовленные китайцами я нашёл, о чём можно почитать тут
Проблема в том что его надо пересобрать по нескольким мелочам, а вот FriendlyARM тулчейн во первых старый ,во вторых только по 32 бита, а нам надо под 64. Собираем под убунту так что сперва устанавливаем кросскомпиллер:
Кто молодец? Я молодец :)
Исходники u-boot заботливо приготовленные китайцами я нашёл, о чём можно почитать тут
Проблема в том что его надо пересобрать по нескольким мелочам, а вот FriendlyARM тулчейн во первых старый ,во вторых только по 32 бита, а нам надо под 64. Собираем под убунту так что сперва устанавливаем кросскомпиллер:
Код PHP:
Но тут проблема что команды имеют вид /usr/bin/arm-linux-gnueabi-{COMMAND}-{VERSION} а нам нужно без неё:
sudo apt-get install gcc-4.9-arm-linux-gnueabi
Код PHP:
Далее всё конфигурим, в папке которую клонировали с github
sudo ln -s /usr/bin/arm-linux-gnueabi-gcc-4.9 /usr/bin/arm-linux-gnueabi-gcc
Код PHP:
И собираем
make ARCH=arm CROSS_COMPILE=/usr/bin/arm-linux-gnueabi- tiny210_config
Код PHP:
Записываем на SD карту:
make ARCH=arm CROSS_COMPILE=/usr/bin/arm-linux-gnueabi- all spi
Код PHP:
Незабывайте менять на свой путь до флешки. Загружаемся-Смотрим первую консоль:
sudo dd iflag=dsync oflag=dsync if=spl/tiny210-spl.bin of=/dev/sdb seek=1 sudo dd iflag=dsync oflag=dsync if=u-boot.bin of=/dev/sdb seek=49
Кто молодец? Я молодец :)
Кстати по поводу загрузчика: Оказывается китайцы проделали огромную работу по написанию uboot для моей платки. Читать тут на досуге надо перевести. Для нормальных людей живущих по эту сторону китайской стены перезалил всё на github вечером сегодня поковыряю, может, наконец то удасться выкинуть веник с ноута...
Итак, пробуем портировать mer а потом и jolla на FriendlyARM Smart 210v2
Инструкции по портингу Jolla берём здесь
Инструкции по Mer берём тут
Цели и задачи:
1. завести mer на железке как есть
2. присобачить слой libhybris
3. поднять окружение из Jolla
Трудности:
0. Only 64bit ну а чо...пора переходить что ли?
1. Ять...андройдный кусок - не люблю - но работаем с чем есть.
2. Черезжопный загрузчик у Friendlyarm
Следите за новостями по тегу mer будет много мата :)
Инструкции по портингу Jolla берём здесь
Инструкции по Mer берём тут
Цели и задачи:
1. завести mer на железке как есть
2. присобачить слой libhybris
3. поднять окружение из Jolla
Трудности:
0. Only 64bit ну а чо...пора переходить что ли?
1. Ять...андройдный кусок - не люблю - но работаем с чем есть.
2. Черезжопный загрузчик у Friendlyarm
Следите за новостями по тегу mer будет много мата :)
Иногда бывает какая то простая задача, над которой ты сидишь по пол дня и не сможешь её решить, а ответ оказывается рядом.
Пример: Есть JSON из которого мы сделали объект:
TypeError: Property 'forEach' of object [object Object] is not a function
Тобиж в именнованных объектах у нас не работает метод forEach так же как и обрашение по порядку, тоесть вариант object[0] и так далее не проходит. Что же делать? Решение вот такое нашёл. Работает, эффективность не проверял.
Пример: Есть JSON из которого мы сделали объект:
Код QML:
Тут всё просто, но ветки(?) или как там его у JSON`а именованные. Короче говоря языком PHP вместо этого:
var object = JSON.parse(answer);
Код PHP:
Мы имеем:
answer[] = 0; answer[] = 1; answer[] = 2
Код PHP:
И при попытке перебрать все объекты в QML через forEach мы влетаем в весёлую ошибку:
answer["zero"] = 0; answer["one"] = 1; answer["two"] = 2
TypeError: Property 'forEach' of object [object Object] is not a function
Тобиж в именнованных объектах у нас не работает метод forEach так же как и обрашение по порядку, тоесть вариант object[0] и так далее не проходит. Что же делать? Решение вот такое нашёл. Работает, эффективность не проверял.
Код QML:
Криво? Очень. Но работает.
for(var key in object) { if(object.hasOwnProperty(key)) { itemModel.append(object[key]) } }
Задача: в приложении много картинок, очень много и их надо как то уметь кешировать? Что же делать? Будем их складывать на диск!
Сперва подготовим класс, назовём его например CacheAdapter
Сперва подготовим класс, назовём его например CacheAdapter
В первой части марлизонского балета я рассказывал о войне с камерой и iOS, но оказалось, что этот глюк плавает на некоторых андройдах, видимо самсунг не только интерфейс но и дрова покоцал у андройда.
Короче, замечены глюки у
Samsung A3
Acer Icona Tab A200
И глюки связаны с ориентацией камеры, мы её не получаем, всегда 0 градусов. Окей исправляем чуть код из прошлой версии:
Первый пункт: добавляем ориентацию к VideoOutput, он должен выглядеть так:
Короче, замечены глюки у
Samsung A3
Acer Icona Tab A200
И глюки связаны с ориентацией камеры, мы её не получаем, всегда 0 градусов. Окей исправляем чуть код из прошлой версии:
Первый пункт: добавляем ориентацию к VideoOutput, он должен выглядеть так:
Код QML:
Почему 270? ну потому что с ним только и заработало всё нормально. Дальше переходим к камере исправляем imageCapture:
id: cameraout; source: camera orientation: 270
Код QML:
Ну и изменяем саму функцию rotateImage в адаптере:
imageCapture { onImageSaved: { if(camera.orientation !== cameraout.orientation) { var ang = 90; } else { var ang = 0 } adapter.rotateImage(ang,path); } }
Код CPP-QT:
Что делается: Если камера не выдаёт нам ориентацию свою, то Qt плющит и он не поворачивает правильно картинку, поэтому мы берём это на себя. Думаю, что будет и третья серия...но на моих сподручных аппаратах это работает.
{ if(ang > 0) { QTransform transform; transPixmap->save(url, "jpg", 100); } emit imageRotate("file://"+url); }
NB: Обновлённое решение тут
Всем хорош Qt прям до безумия...один код все платформы...если бы не iOS который на iphone я бы был рад и не занимался хернёй...однако приходится...итак у нас проблема с QML модулем Camera и она только в iOS...
Проблема, даже 2 - первая: в iOS не работает функция searchAndLock(); от слова совсем...приходится городить костыли
Итак, пункт первый, пишем обёртку для поворота изображения:
Данный код просто поворачивает картинку, и возвращает её урл через сигнал, только для iOS - у остальных всё норм. Далее идём в QML и там меняем в ImageCapture:
То есть, я сказал отправить URL картинки в адаптер, если нужно он его перевернёт. Далее, у нас срабатывает сигнал imageRotate и надо его отловить:
Вот в принципе и вся работа...
Есть вопросы? Жду комментариев.
Всем хорош Qt прям до безумия...один код все платформы...если бы не iOS который на iphone я бы был рад и не занимался хернёй...однако приходится...итак у нас проблема с QML модулем Camera и она только в iOS...
Проблема, даже 2 - первая: в iOS не работает функция searchAndLock(); от слова совсем...приходится городить костыли
Код QML:
Это не самая страшная проблема, далее начинается веселье. iPhone у нас умный, одного говорят даже председателем колхоза назначили, и ему вздумалось поворачивать картинки с камеры, при сохранении на 90 градусов...будем исправлять....
camera.imageCapture.capture();
Итак, пункт первый, пишем обёртку для поворота изображения:
Код CPP-QT:
Если не знаете как передавать в QML сигнал с параметром то делается это просто - в хедаре прописываем:
{ #if defined(Q_OS_IOS) QTransform transform; transPixmap->save(url, "jpg", 100); #endif emit imageRotate("file://"+url); }
Код CPP-QT:
Далее мы увидим где этот preview обнаружится :)
signals:
Данный код просто поворачивает картинку, и возвращает её урл через сигнал, только для iOS - у остальных всё норм. Далее идём в QML и там меняем в ImageCapture:
Код QML:
Думаю не нужно объяснять как перекинуть C++ функцию в QML. Если нужно - пишите в комменты.
onImageSaved: { adapter.rotateImage(path); }
То есть, я сказал отправить URL картинки в адаптер, если нужно он его перевернёт. Далее, у нас срабатывает сигнал imageRotate и надо его отловить:
Код QML:
Вот и тот самый preview который мы объявляли в сигнале.
target: adapter onImageRotate: { preview_img.src = preview; } }
Вот в принципе и вся работа...
Есть вопросы? Жду комментариев.
SRC-RPM брать тут: http://repo.merproject.org/obs/mer-core:/x86_64:/testing/Core_x86_64/src/
Qt-SRC брать тут: http://download.qt.io/official_releases/qt/5.5/5.5.1/submodules/
А теперь бы собрать из всего этого что то дельное :)
Qt-SRC брать тут: http://download.qt.io/official_releases/qt/5.5/5.5.1/submodules/
А теперь бы собрать из всего этого что то дельное :)
Итак, досталась мне тут прога на Qt5 всё хорошо, НО! Работает только на андройде, ну вот так вот...задача: Сделать из неё кроссплатформенную прогу...да дурость, но задача есть, айда её решать!
Смотрим в код...ни чего странного кроме...
Итак, решение:
Смотрим в код...ни чего странного кроме...
Код CPP-QT:
Эм.....короче прога сохраняет все свои файлы, с которыми работает в папочку на SD карте, даже если её нет...так и хочется спросить прошлого программиста: "Мальчик ты дурак?", тут всё встаёт на свои места, и всё кажется не таким уж и сложным.Итак, решение:
Ну и где доказательства про 18 запусков у маска в 2018 году? Или ты предпочтешь и тут...