А на чем вы кодите для малины?

Тема в разделе "Raspberry Pi", создана пользователем Mitrandir, 9 июл 2018.

?

Какой редактор кода вы используете?

  1. Только VIM, Только хардкор!

    14,3%
  2. Nano

    57,1%
  3. Emacs

    14,3%
  4. Geany

    28,6%
  5. NetBeans IDE

    0 голосов
    0,0%
  6. Python IDE

    0 голосов
    0,0%
  7. Другое..

    57,1%
Можно выбрать сразу несколько вариантов.
  1. parovoZZ

    parovoZZ Гуру

    А распбиан позволяет это делать? Не совсем понимаю для чего это, если мы крутимся в операционке.
     
    Mitrandir нравится это.
  2. AlexU

    AlexU Гуру

    А почему нет?
    Единственное что может помешать, так это firewall. Но на отладочной Малинке можно разрешить нужные соединения. Вот только не помню в Распбиан firewall вообще поднимается (в том смысле правила настраиваются или нет) или "всем всё можно" (устанавливал давно и больше не обновлял и не перенастраивал, т.к. Малинка используется только для опытов и поэтому мог всю секьюрность поотключать).
    Или вы думаете, что посмотреть регистры процессора и/или память приложения требует каких-то привилегий?
     
  3. Mitrandir

    Mitrandir Гуру

    Блин, что-то не получается толком поставить компилятов под винду для еклипса

    Пробовал отсюда взять, http://gnutoolchains.com/но что-то не выходит настройить пути...
     
  4. AlexU

    AlexU Гуру

    Кросс-компиляция в Windows это ещё та головная боль. Что касается компиляторов серии GCC, то копните в сторону MinGW или MSys (они обычно в паре идут), но прийдётся чуток помучаться. А так если есть конкретный компилятор под WIndows, то можно в настройках Eclipse указать пути к исполняемым файлам. Либо использовать системы сборки Make, Scons (на питоне), Gradle (на яве), Maven (тоже на яве) и т.п. и в скриптах сборки использовать нужный компилятор и порядок компиляции. Eclipse поддерживает все эти системы сборок.
     
  5. Mitrandir

    Mitrandir Гуру

    еклипс не видит инклудов и на компиляцию ругается в непонятной кодировке
     
  6. AlexU

    AlexU Гуру

    Проект наверно основан на собственном Makefile? Eclipse не может обрабатывать эти файлы, поэтому в таком случае инклуды нужно прописывать ручками в настройках проекта. Если использовать такой вид проекта, при котором Eclipse сам генерирует Makefile'ы, то тогда он всё будет видеть.
    Eclipse парсит вывод компилятора для отображения ошибок в файлах исходников -- что компилятор выдал, то Eclipse и отобразил.
     
  7. Mitrandir

    Mitrandir Гуру

    Скомпилировать получилось, осталось TCF побороть
     
    Последнее редактирование: 9 июл 2018
  8. Mitrandir

    Mitrandir Гуру

    Кажется удалось TCF побороть, но не очень понял, он что бинарник все равно кидает на сторону малины? т.е на сд карту малины?

    Пока придумал сделать ramdisk на малине и туда класть программу
     
    Последнее редактирование: 9 июл 2018
  9. parovoZZ

    parovoZZ Гуру

    Так объясни мне, как записывать в регистры арм малины, если там сверху операционка? В мк не в тот регистр записал в асм вставке и все по ппппп пошло. А тут как? ОС же должна распределять ресурсы.
     
  10. parovoZZ

    parovoZZ Гуру

    У меня вообще все переменное в рамдиск всунуто. Карта же не вечная)))
     
  11. AlexU

    AlexU Гуру

    Ну и что, что там операционка? Думаете она следит за тем какие регистры (имеются ввиду РОН) использует программа? Операционка, точнее не операционка, а процессор может ограничивать доступ к специальным регистрам или портам ввода/вывода, но при желании можно получить доступ и к таким регистрам/портам.
    ОС распределяет процессорное время и память, так же может контролировать доступ к устройствам. Регистрами ОС не управляет.
     
    Mitrandir нравится это.
  12. AlexU

    AlexU Гуру

    Кидает, его же надо запустить.
    По умолчанию -- да. Но можно и:
    По крайней мере один скомпилированный бинарник занимает места меньше, чем результаты компиляции программы. И можно обойтись RAM-диском гораздо меньшего объёма.
    А можно попытаться найти способ удалённой загрузки программы в память Малинки минуя какие-либо диски/флешки. По крайней мере с Java-программами я такой фокус делал. На малинку один раз записывал специальную программку-загрузчик, которая в последствии принимала бинарники классов с основного компьютера, загружала сразу в память и запускала на выполнение, все дополнительные классы (библиотеки) опять же запрашивались по сети с основного компа. Очень удобно было для отладки и флешка ресурс свой сохраняла.
    Надо покопаться в TCF вполне вероятно он может такие фокусы и с нативными бинарниками выкидывать. Теоретически-то задача выполнима, да и исходники на TCF есть, можно такой функционал при необходимости добавить.
     
    Mitrandir нравится это.
  13. Mitrandir

    Mitrandir Гуру

    Так как Еклипс TCF и Raspberry не дружат из коробки, решил написать небольшой гайд как все это запустьть под виндой.

    1 Часть. Подготовка Raspberry Pi
    Начнем с малины, так как это самое простое.
    Заходим через PuTTY на малину, обновляемся и устанавливаем необходимые пакеты:
    Код (Bash):

    sudo apt-get update
    sudo apt-get install git uuid uuid-dev libssl-dev
     
    далее сама установка агента TCF:

    Код (Bash):
    git clone git://git.eclipse.org/gitroot/tcf/org.eclipse.tcf.agent.git
    cd org.eclipse.tcf.agent/agent
    cp -R machine/arm machine/armv6l
    make
    make install

    sudo make install INSTALLROOT=
    sudo update-rc.d tcf-agent defaults
    sudo update-rc.d tcf-agent enable 2
     
    Далее подготавливаем ramdisk для временной загрузки программы агентом

    Код (Bash):
    sudo mkdir /mnt/tmpfs
    и создаем скрипт для подключения диска.
    makeram.sh
    Код (Bash):

    #!/bin/bash

    mount -t tmpfs -o size=5M tmpfs /mnt/tmpfs
     
    где 5M означает 5 мегабайт
    делаем chmod +x ./makeram.sh
    по необходимости добавляем в автозагрузку

    На этом малиновая часть окончена.

    2 Часть подготовка Eclipse
    2.1 Установка Eclipse

    Заходим на сайт https://www.eclipse.org/downloads/ и скачиваем последнюю версию Eclipse IDE.
    Устанавливаем редактор с++.

    2.2 Установка компилятора

    Для компиляции программ для ARM Raspberry Pi нам необходим компилятор.
    Заходим на сайт http://gnutoolchains.com/raspberry/
    и скачиваем набор утилит для компиляции под ARM.
    Устанавливаем для примера в папку C:\SysGCC\raspberry
    Прописываем C:\SysGCC\raspberry\bin в переменную OC PATH

    2.3 Установка TCF
    Запускаем Eclipcse.
    Выбираем Help->Install New Software..
    Открывается окошко:
    Screenshot_1.jpg
    Нажимаем кнопку Add..
    Вводим в поле Name TCF, в поле Location: http://download.eclipse.org/tools/tcf/releases/1.5
    Проставляем обе галки и нажимаем Next> до конца соглашаясь со всем что нам предложат.
     
    Последнее редактирование: 10 июл 2018
    parovoZZ и AlexU нравится это.
  14. Mitrandir

    Mitrandir Гуру

    Часть 3. Hello Raspberry
    Создадим проект Hello World
    File->New->C/C++Project
    В открывшемся окне выбираем C++ Managed Build
    Screenshot_2.jpg

    Вводим имя проекта, выбираем Executable и Empty Project для пустого проекта и Hello World C++ Project для проекта с заглушкой. Во вкладке Toolchains выбираем Cross GCC.
    Нажимаем Next.
    В случае если выбрали Hello World C++ Project попросят ввести фразу как приветствовать мир, автора и имя папки с исходным кодом. В случае пустого проекта это придется делать руками.
    На экране выбора конфигурации Нажимаем Advanced settings
    Screenshot_4.jpg
    В поле prefix вводим:(минус в конце важен!!)
    arm-linux-gnueabihf-

    Открываем ветку Cross GCC Compiller->Includes
    Screenshot_5.jpg
    Добавляем паку C:\SysGCC\raspberry\include
    тоже самое делаем с Cross G++ Compiller

    Для Cross G++ Linker
    подключаем папку с библиотеками C:\SysGCC\lib

    Нажимаем Apply and Close чтобы вернуться на предыдущий экран
    Нажимаем Next>
    Эклипс попросит ввести ему путь к компилятору вводим в поле prefix
    arm-linux-gnueabihf-
    и путь к компилятору
    Нажимаем Финиш и проект создан.
    Screenshot_6.jpg
    Выбираем Project->Build project чтобы собрать проект.
     
    parovoZZ и AlexU нравится это.
  15. Mitrandir

    Mitrandir Гуру

    Часть 4. Запускаем проект на малине
    Выбираем в меню Window-Perspective->other и выбираем Target Explorer
    В дереве он отразит найденые агенты ( тот что поставили на малину в первой части)

    Screenshot_7.jpg
    Выбираем в списке нужную малину, и нажимаем Connect
    Вводим в окне имя соединения и нажимаем финиш

    Далее выбираем Run->Run configurations
    Выбираем Target Communication Framework и в контекстном меню нажимаем New Configuration
    Screenshot_9.jpg
    Вводим имя конфигурации и на первой вкладке убираем галку Use local host as the target
    открываем вкладку Application
    Screenshot_11.jpg
    Выбираем наш проект, путь к исполняемому фаилу
    в качестве Remote File Path указываем путь к ramdisk на малине: /mnt/tmpfs
    (ну или куда устанавливать)
    Нажимаем ок

    Теперь проект можно запустить нажав зеленую кнопку:
    Screenshot_12.jpg
     
    ZAZ-965 и AlexU нравится это.
  16. AlexU

    AlexU Гуру

    Вот тут чуток не понял. Как можно сделать так, чтобы это хозяйство дружило "из коробки"? Т.е. должен быть единый установщик, который всё установит и на Малине и на рабочем компе?
    С этим пунктом не совсем согласен. Зачем добавлять новый UpdateSite, если в стандартных уже есть:
    updatesites.jpg
    Практика показывает, что в первую очередь лучше использовать расширения с сайта обновлений того или иного релиза, а не из сайтов конкретных расширений.
     
  17. Mitrandir

    Mitrandir Гуру

    Примерно. Еклипс из коробки вообще не скомпилирует ничего. даже без учета TCF.

    Скачав Arduino IDE мы качаем и текстовый редактор, и avr-gcc и дудку. И сразу можем кодить без проблем. Скачав Вижуал Студио от мелкомягких мы сразу можем кодить из коробки.

    Скачав эклипс кодить не можем
     
    Последнее редактирование: 10 июл 2018
  18. Mitrandir

    Mitrandir Гуру

    Ступил)
    Я эклипс последний раз видел лет 5 назад. Кодил тогда на джаве, поставил, мне не понравился ( IDEA лучше имхо). Так что я его плохо знаю
     
  19. AlexU

    AlexU Гуру

    В этом плане согласен. Eclipse не заточен под конкретный компилятор как Arduino IDE или Atmel Studio, поэтому компилятор, который больше всего нравиться пользователю, придётся ставить самому.
    Для Ардуино есть расширение AVR-Eclipse (https://raw.githubusercontent.com/mnlipp/avr-eclipse-fork/updatesite/ -- это UpdateSite, не пытайтесь в браузере открывать).Можно ставить в тот же Eclipse, что для малины настроили. Сможете одновременно кодить и для Малины и для Ардуины, так сказать, "в одном флаконе". Но опять же придётся настраивать кросс-компиляцию для avr-gcc. Я немного доработал это расширение -- добавил поддержку Ардуиновских библиотек. Но доработанный UpdateSite смогу дать только после того как доберусь до основного компа (если, конечно, интересно).
     
  20. Mitrandir

    Mitrandir Гуру

    в последней версии (Фотон) они добавили вроде как поддержку ардуино
    У меня в списке проектов есть ардуино
    в предыдущей( оксиген) не было