А почему нет? Единственное что может помешать, так это firewall. Но на отладочной Малинке можно разрешить нужные соединения. Вот только не помню в Распбиан firewall вообще поднимается (в том смысле правила настраиваются или нет) или "всем всё можно" (устанавливал давно и больше не обновлял и не перенастраивал, т.к. Малинка используется только для опытов и поэтому мог всю секьюрность поотключать). Или вы думаете, что посмотреть регистры процессора и/или память приложения требует каких-то привилегий?
Блин, что-то не получается толком поставить компилятов под винду для еклипса Пробовал отсюда взять, http://gnutoolchains.com/но что-то не выходит настройить пути...
Кросс-компиляция в Windows это ещё та головная боль. Что касается компиляторов серии GCC, то копните в сторону MinGW или MSys (они обычно в паре идут), но прийдётся чуток помучаться. А так если есть конкретный компилятор под WIndows, то можно в настройках Eclipse указать пути к исполняемым файлам. Либо использовать системы сборки Make, Scons (на питоне), Gradle (на яве), Maven (тоже на яве) и т.п. и в скриптах сборки использовать нужный компилятор и порядок компиляции. Eclipse поддерживает все эти системы сборок.
Проект наверно основан на собственном Makefile? Eclipse не может обрабатывать эти файлы, поэтому в таком случае инклуды нужно прописывать ручками в настройках проекта. Если использовать такой вид проекта, при котором Eclipse сам генерирует Makefile'ы, то тогда он всё будет видеть. Eclipse парсит вывод компилятора для отображения ошибок в файлах исходников -- что компилятор выдал, то Eclipse и отобразил.
Кажется удалось TCF побороть, но не очень понял, он что бинарник все равно кидает на сторону малины? т.е на сд карту малины? Пока придумал сделать ramdisk на малине и туда класть программу
Так объясни мне, как записывать в регистры арм малины, если там сверху операционка? В мк не в тот регистр записал в асм вставке и все по ппппп пошло. А тут как? ОС же должна распределять ресурсы.
Ну и что, что там операционка? Думаете она следит за тем какие регистры (имеются ввиду РОН) использует программа? Операционка, точнее не операционка, а процессор может ограничивать доступ к специальным регистрам или портам ввода/вывода, но при желании можно получить доступ и к таким регистрам/портам. ОС распределяет процессорное время и память, так же может контролировать доступ к устройствам. Регистрами ОС не управляет.
Кидает, его же надо запустить. По умолчанию -- да. Но можно и: По крайней мере один скомпилированный бинарник занимает места меньше, чем результаты компиляции программы. И можно обойтись RAM-диском гораздо меньшего объёма. А можно попытаться найти способ удалённой загрузки программы в память Малинки минуя какие-либо диски/флешки. По крайней мере с Java-программами я такой фокус делал. На малинку один раз записывал специальную программку-загрузчик, которая в последствии принимала бинарники классов с основного компьютера, загружала сразу в память и запускала на выполнение, все дополнительные классы (библиотеки) опять же запрашивались по сети с основного компа. Очень удобно было для отладки и флешка ресурс свой сохраняла. Надо покопаться в TCF вполне вероятно он может такие фокусы и с нативными бинарниками выкидывать. Теоретически-то задача выполнима, да и исходники на TCF есть, можно такой функционал при необходимости добавить.
Так как Еклипс 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.. Открывается окошко: Нажимаем кнопку Add.. Вводим в поле Name TCF, в поле Location: http://download.eclipse.org/tools/tcf/releases/1.5 Проставляем обе галки и нажимаем Next> до конца соглашаясь со всем что нам предложат.
Часть 3. Hello Raspberry Создадим проект Hello World File->New->C/C++Project В открывшемся окне выбираем C++ Managed Build Вводим имя проекта, выбираем Executable и Empty Project для пустого проекта и Hello World C++ Project для проекта с заглушкой. Во вкладке Toolchains выбираем Cross GCC. Нажимаем Next. В случае если выбрали Hello World C++ Project попросят ввести фразу как приветствовать мир, автора и имя папки с исходным кодом. В случае пустого проекта это придется делать руками. На экране выбора конфигурации Нажимаем Advanced settings В поле prefix вводимминус в конце важен!!) arm-linux-gnueabihf- Открываем ветку Cross GCC Compiller->Includes Добавляем паку C:\SysGCC\raspberry\include тоже самое делаем с Cross G++ Compiller Для Cross G++ Linker подключаем папку с библиотеками C:\SysGCC\lib Нажимаем Apply and Close чтобы вернуться на предыдущий экран Нажимаем Next> Эклипс попросит ввести ему путь к компилятору вводим в поле prefix arm-linux-gnueabihf- и путь к компилятору Нажимаем Финиш и проект создан. Выбираем Project->Build project чтобы собрать проект.
Часть 4. Запускаем проект на малине Выбираем в меню Window-Perspective->other и выбираем Target Explorer В дереве он отразит найденые агенты ( тот что поставили на малину в первой части) Выбираем в списке нужную малину, и нажимаем Connect Вводим в окне имя соединения и нажимаем финиш Далее выбираем Run->Run configurations Выбираем Target Communication Framework и в контекстном меню нажимаем New Configuration Вводим имя конфигурации и на первой вкладке убираем галку Use local host as the target открываем вкладку Application Выбираем наш проект, путь к исполняемому фаилу в качестве Remote File Path указываем путь к ramdisk на малине: /mnt/tmpfs (ну или куда устанавливать) Нажимаем ок Теперь проект можно запустить нажав зеленую кнопку:
Вот тут чуток не понял. Как можно сделать так, чтобы это хозяйство дружило "из коробки"? Т.е. должен быть единый установщик, который всё установит и на Малине и на рабочем компе? С этим пунктом не совсем согласен. Зачем добавлять новый UpdateSite, если в стандартных уже есть: Практика показывает, что в первую очередь лучше использовать расширения с сайта обновлений того или иного релиза, а не из сайтов конкретных расширений.
Примерно. Еклипс из коробки вообще не скомпилирует ничего. даже без учета TCF. Скачав Arduino IDE мы качаем и текстовый редактор, и avr-gcc и дудку. И сразу можем кодить без проблем. Скачав Вижуал Студио от мелкомягких мы сразу можем кодить из коробки. Скачав эклипс кодить не можем
Ступил) Я эклипс последний раз видел лет 5 назад. Кодил тогда на джаве, поставил, мне не понравился ( IDEA лучше имхо). Так что я его плохо знаю
В этом плане согласен. Eclipse не заточен под конкретный компилятор как Arduino IDE или Atmel Studio, поэтому компилятор, который больше всего нравиться пользователю, придётся ставить самому. Для Ардуино есть расширение AVR-Eclipse (https://raw.githubusercontent.com/mnlipp/avr-eclipse-fork/updatesite/ -- это UpdateSite, не пытайтесь в браузере открывать).Можно ставить в тот же Eclipse, что для малины настроили. Сможете одновременно кодить и для Малины и для Ардуины, так сказать, "в одном флаконе". Но опять же придётся настраивать кросс-компиляцию для avr-gcc. Я немного доработал это расширение -- добавил поддержку Ардуиновских библиотек. Но доработанный UpdateSite смогу дать только после того как доберусь до основного компа (если, конечно, интересно).
в последней версии (Фотон) они добавили вроде как поддержку ардуино У меня в списке проектов есть ардуино в предыдущей( оксиген) не было