LINUX.ORG.RU

embedded linux && qtopia

 custom program, ,


0

3

Всем привет, есть пара вещей, которые я хотел бы уточнить у более опытных людей. В общем на работе есть плата со встроенным линуксом и кьютопией(сам поставил ага), нужно разработать для нее программку на кьюте и прошить. Разработать то я разработаю, а как прошить? Официального хелпа ищи свищи. Кто-нибудь делал такое?


qtopia

Не слишком замерз?

buddhist ★★★★★
()

кьютопией

некромант в треде, все в часовню.

а обычное Qt туда не влезает?

Stil ★★★★★
()

просто скопировать через ssh/telnet/nfs/sd card/usb drive.

И зачем тебе кутопия? Запускай без неё, кути поддерживает фреймбуфер, пишешь обычную qt программу с размером окна равным твоему экрану, редактируешь на своей плате файл rcS, убираешь запуск кутопии и прописываешь запуск своей с ключом -qws.

Что за плата, если не секрет? mini2440/6410 ?

anonymous
()
Ответ на: комментарий от Stil

По моему нет, так как при прошивке происходят нереальные танцы с фтп, файловой системой yaffs и прочими штучками которые я нашел в хелпе по апдейту системы.

n1l
() автор топика
Ответ на: комментарий от velikS

Расскажите пожалуйста, как?

n1l
() автор топика
Ответ на: комментарий от n1l

ну скопировать я может и скопирую, а запустится ли? И как его запускать?

Вариантов много: с хоста через telnet или ssh, через minicom, если соединение через com-порт.

Если установил кутопию, в ней есть терминал. Запускаешь его, а дальше всё как обычно - командная строка. Клавиатуру и мышь подключаешь в usb-порт. Как вариант, создай ярлык для кутопии и тыкай в него пальцем.

Или прописываешь запуск своего поделия в стартовый скрипт, который выполнится при старте системы.

anonymous
()
Ответ на: комментарий от anonymous

А можете рассказать как создавать такое приложение? Могу ли я на своем компе писать на кьюте, компилить и просто заливать в машину через ком порт? Или мне нужно как то на компе установить кьютопию?

n1l
() автор топика
Ответ на: комментарий от n1l

man кросс-компиляция же...

Можешь писать и отлаживать на компе, потом кросс-компилять и заливать на плату любым удобным способом

solovey ★★
()
Ответ на: комментарий от solovey

Так вот в этой кросс-компиляции и проблема. Вот есть у меня приложение, написал я его на qt5. у меня на устройстве qtopia, подойдет ли код или нет? Скорее всего нет. Т.е. мне нужно писать на более старой qt? А на какой? Плюс создать образ файловой системы с уже зашитой программой. Ну в этом я может быть и разберусь, а с вышеперечисленным?

n1l
() автор топика
Ответ на: комментарий от n1l

Так тебе выше правильно указали. Зачем тебе qtopia? Собери qt для своей платы с помощью того же кросс-компилятора. Зашей в свою ФС все необходимые либы, шрифты и т.д.

А потом запускай свое приложение с ключом -qws, как уже говорили выше.

Мне в свое время помогла эта ссылка (да, на столь нелюбимый здесь Хабр, но расписано вроде годно).

solovey ★★
()
Ответ на: комментарий от n1l

Так вот в этой кросс-компиляции и проблема. Вот есть у меня приложение, написал я его на qt5

Забей пока на кутэ, тем более 5. Для начала, что у тебя есть?

1. плата

2. экран + тач (есть?)

3. сиди с образом фс, ядром, кутопией, кути, документацией (есть?)

4. кутопию сам ставил? откуда?

anonymous
()
Ответ на: комментарий от anonymous

1 плата есть 2 экран с тачскрином есть 3 образ фс с ядром кутопией и доки как это ставить есть 4 кутопия была вшита в файловую систему, которую я вшил в плату

n1l
() автор топика
Ответ на: комментарий от n1l

Так у тебя всё есть. Должен быть и такой файл. (взято здесь). Для начала собери компилятор, как написано в главе «3.1 Building a Cross Compilation Environment».

Используемая библиотека qt и инструкция по сборке и установке на твою плату тоже должны быть на диске. Не обязательно юзать последнюю, чтобы разобраться. Используй ту, что идёт с платой, это проще.

Начни с того, что разберись, как положить файлы на твою плату. Для этого тебе ничего прошивать не надо. Как соединиться по телнету в доке написано. Про фтп тоже. Об нфс вроде тоже есть. Достаточно операций копирования. Начни не с кутэ, а с хеловолда. Убедись сначала, что ты способен собрать и запустить простейшую программу, а потом думай о высших материях.

anonymous
()
Ответ на: комментарий от anonymous

среду для кросс компиляции собрал. Инструкции есть, а вот кьюта не нашел, кроме файлововой системы где он уже вшит. Но она для обновления ос на плате.

Насчет хеллоуворлда, взять, скомпилить код без поддержки код и отправить его в плату? Ок, попробую, там вроде даже примеры есть.

n1l
() автор топика
Ответ на: комментарий от anonymous

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

n1l
() автор топика
Ответ на: комментарий от anonymous

Скажите пожалуйста, вот этот компилятор(arm-none-linux-gnueabi-gcc) может скомпилировать простенкое qt приложение? Если да, то правильно ли я понимаю, что это впринципе обыцчный gcc и доки о нем можно найти на сайте gcc?

PS Попробовал скомпилить простенькую вещь, но он не скушал.

n1l
() автор топика
Ответ на: комментарий от anonymous

Начал. Идея какая, собрать кьют эмбеддед, что бы компилировать с помощью него мои приложения для моей платы? Я правильно понимаю? Т.е. собирать его надо для архитектуры, которую поддерживает моя плата. Если я все правильно понял, не могли бы вы подсказать: При выполнении комманды make я получаю ошибку о том, что отсутствует команда arm-linux-g++. Т.е. компилятор g++ для arm'a. Поиск дал какие-то невнятные результаты, которые как бы указывают, что нужно установить EmbeddedToochain. Или что-то не так? Установил вроде как EmdebianToolchain, но ошибка не ушла.

n1l
() автор топика
Ответ на: комментарий от anonymous

Да, но вы хоть что-то о том, что было изложено выше, можете сказать? arm-linux-g++, где он может быть?

n1l
() автор топика
Ответ на: комментарий от n1l

вы хоть что-то о том, что было изложено выше, можете сказать?

Детский сад. Что я тебе должен был сказать на это?

получаю ошибку

Я тебе уже сказал. Печально. Хочешь получить ответ, хотя бы знак вопроса поставь. Хочешь получить нормальный ответ, пиши, что делал и что получил. Чем полнее, тем лучше.

arm-linux-g++, где он может быть?

Ты ведь выше написал, что хеловолд написал и выполнил. Как ты это сделал?

alexku
()
Ответ на: комментарий от alexku

Детский сад. Что я тебе должен был сказать на это?

Ну в том сообщении я ментально ссылался на сообщение которое находится сразу выше.

получаю ошибку

Так пост выше же все объясняет, нет?

Ты ведь выше написал, что хеловолд написал и выполнил. Как ты это сделал?

Хеллоуворлд был на чистых сях и спокойно скомпилился компилятором который мне предоставил производитель. PS Я кажется уже нашел ошибку и решение, позже отпишусь.

n1l
() автор топика
Ответ на: комментарий от alexku

Да, я таки понял в чем была проблема, в общем оказывается(неожиданно для меня), что архитектура arm бывает нескольких видов(пока что знаю только о двух), это arm и arm-gnuebi. Так вот мой компилятор и производитель записали на диск тулчэйны для архитектуры arm-gnuebi, а я пытался собрать для arm просто, и получал конечно же ошибку об отсутствии компиляторов. Так же еще пришлось отключить в конфигурации сборку webkit, потому, что она отказывалась собираться моими тулчэйнами. qt-embedded вроде бы наконец-то я поставил. Теперь ясмогу тем компилятором, которым компилировал свой первый хелловорлд, откомпилировать второй хелловорлд с кьютом и зашить его на плату, да?

n1l
() автор топика
Ответ на: комментарий от Krieger_Od

Я на днях напоролся на это дело. Конпелял модули под малинку, а ядро при их загрузке зависало.

anonymous
()
Ответ на: комментарий от n1l

да. Не забудь скопировать скомпилированную библиотеку на свою плату и указать к ней путь в переменной QTDIR перед запуском программы.

alexku
()
Ответ на: комментарий от Krieger_Od

Ну пропустил буковку с кем не бывает? :3

n1l
() автор топика
Ответ на: комментарий от alexku

А компилить то как? Опять же тем компилятором? Просто там инструкции только для си. arm-none-linux-gnueabi-gcc -o file.c file, получаем бинарник. А с си++ и кьютом как быть? так же?

n1l
() автор топика
Ответ на: комментарий от anonymous

Спасибо вам большое, я разобрался во всем. Откомпилировал и собрал проектик на кьюте и запустил его на своем арме. Впринципе все легко, действительно, если понимать, что нужно делать. Еще раз спасибо. Если кому нужно я могу рассказать как все сделал, но думаю, что не понадобятся мои знания :)

n1l
() автор топика
Ответ на: комментарий от n1l

но думаю, что не понадобятся мои знания

Почему ты так решил? Спросит кто-нибудь о кьюте на арме, будешь с умным видом поучать. :-)

Пара вопросов вдогонку.

Ты пробовал запускать проект без кьютопии?

Какую версию кьюта использовал? Просто любопытно.

И пара советов. Сделай два сборочных скрипта (или профиля в креаторе) для сборки проекта под арм и х86. Гуи проще на хосте отлаживать.

Сделай разные проекты для гуи и аппаратной части. Всё, что относится к аппаратной части (всякие каны, джипио, джипиэсы) собирай в динамические библиотеки и линкуй их к гуи на этапе сборки.

alexku
()
Ответ на: комментарий от alexku

Спросит кто-нибудь о кьюте на арме, будешь с умным видом поучать. :-)

Ну если только так :)

Ты пробовал запускать проект без кьютопии?

На десктопе? Да, он не смог запустить.

Какую версию кьюта использовал? Просто любопытно.

До этого хотел занятся кьютом и уже стояла последняя версия 5.1.1. Эмбедед поставил тоже последний, 4.8.5.

Первый совет, я так понимаю про qvfb? Если так, то я пока еще не ставил его, но думаю поставить. А вообще спасибо за советы.

n1l
() автор топика
Ответ на: комментарий от n1l

На десктопе? Да, он не смог запустить.

Нет, не на десктопе. На арме. На арме в стартовом скрипте /etc/init.d/rcS в самом конце должен быть вызов скрипта, запускающего кьютопию. Посмотри этот скрипт. Всё, что тебе нужно сделать - в этом скрипте заменить строку запуска кьютопии на запуск своего поделия с параметром -qws. Тогда при старте вместо кьютопии будет запускаться твоя прога.

Ещё есть смысл изучить содержимое самого rcS и убрать лишнее. Он там простой, строк 20. У меня там был запуск мигания светодиодов на плате и http сервер со страницей управления ими. Очень нужные вещи в стартовом скрипте.

Только не убирай запуск сетевого сервиса, а то придётся перепрошивать. В твоей кьютопии, как я понял, терминала нет и восстановить rcS ты не сможешь.

А на десктопе оно и не должно запускаться. Арм - не х86.

Чтобы запускать на десктопе, нужно собрать кьют для десктопа. Распакуй кьют из архива ещё раз в другую папку (не в ту же, где компилил для арма) и скомпилируй с параметром -embedded x86. Ну и установи (make install). В креаторе должна появиться ещё одна конфигурация для embedded х86. Вот её и нужно использовать для запуска на десктопе.

alexku
()
Ответ на: комментарий от alexku

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

n1l
() автор топика
Ответ на: комментарий от alexku

PS Вот скрипт, но что-то я не вижу тут вызова кьютопии

# Start all init scripts in /etc/init.d
# executing them in numerical order.
#
for i in /etc/init.d/S??* ;do

     # Ignore dangling symlinks (if any).
     [ ! -f "$i" ] && continue

     case "$i" in
        *.sh)
            # Source shell script for speed.
            (
                trap - INT QUIT TSTP
                set start
                . $i
            )
            ;;
        *)
            # No sh extension, so fork subprocess.
            $i start
- /etc/init.d/rcS 1/27 3%

n1l
() автор топика
Ответ на: комментарий от n1l

У тебя запускаются скрипты /etc/init.d/S<номер>... Кьютопия скорее всего запускается в последнем. Но точно этого сказать не могу. Изучай. В моём случае скрипт rcS был был другим.

Я бы хотел от этого избавится и запускать свои терминалы без sudo

chmod a+rw /dev/tty...

Если хочешь, чтобы права прописывались при старте системы, пропиши эту строку в /etc/profile

alexku
()
Ответ на: комментарий от alexku

Спасибо, только не в /etc/profile а в /etc/rc.local(покрайней мере в дебиане так)

n1l
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.