Raspberry PI и JAVA: пристальный взгляд

    Недавно на хабрахабре вышла статья о java на raspberry pi, увидев название которой было много ожиданий, а под катом оказался банальный Hello World!

    Дело в том, что ко мне как раз ехала моя малинка и хотелось получить ответы на следующие вопросы:

    1. Сравнима ли скорость работы java на малинке и настольном компьютере?
    2. Насколько удобно работать с java на raspberry?
    3. Есть ли адекватные библиотеки для работы с GPIO?

    Вот на эти вопросы я и попробую дать ответы в этой статье.

    Кому интересно: добро пожаловать под кат (графики и фотографий обнаженной малинки там не будет)

    Настройка доступа к Raspberry PI по ssh без пароля


    Я очень люблю свой родной ноутбук и предпочитаю работать на других линукс-машинах через ssh.
    Поэтому, в первую очередь, ради удобства настраиваем доступ к малинке по ключу.
    Для этого на компьютере, с которого будет осуществляться подключение генерируем пару ключей при помощи команды ssh-keygen.
    Затем копируем открытый ключ на малинку

    $ scp /home/user1/.ssh/id_rsa.pub pi@raspberry_server:~/
    $  ssh  pi@raspberry_server
    $ mkdir .ssh
    $ cat ~/id_rsa.pub >> ~/. ssh /authorized_keys
    

    Нажимаем Ctrl-D для выхода из сеанса. Пытаемся снова подключиться — профит. Подключение происходит без запроса пароля.

    Заглядываем под капот


    Прежде всего меня интересует, что же за оборудование мне досталось. Можно, конечно, посмотреть в документацию, но всей правды она не всегда скажет.
    Поэтому, подключаемся и вводим команду
    $ cat /proc/cpuinfo
    


    Заинтересовала следующая строка:
    Features: swp half thumb fastmult vfp edsp java tls

    Что-ж уже интересно. Можно надеяться, что малинка меня порадует.

    Установка JAVA SE Embedded


    В предыдущей статье был описан способ установки openJDK. Кому интересно — посмотрит.

    Но мне было интересно установить java от оракла (все равно java-код я люблю компилировать на любимом ноутбуке в любимой IDE), что и я сделал:
    Итак, идем на сайт оракла, скачиваем пакет java se embedded (ARMv6/7 Linux — Headless — Client Compiler EABI, VFP, HardFP ABI, Little Endian) и заливаем его в папку /home/pi.

    Заходим в консоль малинки и
    1. Распаковываем архив в папку /opt
    $ sudo tar -xvf ejre-7u45-fcs-b15-linux-arm-vfp-hflt-client_headless-26_sep_2013.tar.gz -C /opt
    

    2. Далее добавляем путь к файлу java в переменную PATH и устанавливаем переменную JAVA_HOME
    $ sudo chmod a+w /etc/profile
    $ echo 'export PATH=/opt/ejre1.7.0_45/bin:$PATH' >> /etc/profile 
    $ echo 'export JAVA_HOME=/opt/ejre1.7.0_45' >> /etc/profile 
    $ sudo chmod a-w /etc/profile
    

    Перезаходим по ssh и командой
    $ java -version
    

    убеждаемся, что виртуальная машина установлена.

    Тестируем скорость работы


    Теперь настало время выяснить насколько медленна/быстра java на малинке. Тест не претендует на какую-либо всеобъемлющую объективность, а лишь призван показать приблизительный порядок разницы скорости работы виртуальной машины на малинке и настольном компьютере.
    Для теста был выбран мой нетбук с процессором AMD E-300 APU с тактовой частотой 1,3 Гц (т. е. Почти в два раза большей, чем у малинки).
    Для теста используем программу поиска простых чисел при помощи решета Эратосфена.

    Кому интересно, может посмотреть исходный код:
    public class RaspTest {
        public static void main(String[] args) {
            int maxPrimesCount = 40000;
            int currentPrimesCount = 1;
            long prevTime, execTime;
            prevTime = System.currentTimeMillis();
    
    
            long[] primes = new long[maxPrimesCount];
            long currentNumber = 3;
    
            boolean isPrime = false;
    
            primes[0]=2;
    
            while (currentPrimesCount < maxPrimesCount) {
                isPrime = true;
                for (int i = 0; i < currentPrimesCount; i++) {
                    if (currentNumber % primes[i] == 0) {
                        isPrime = false;
                        break;
                    }
                }
                if (isPrime) {
                    primes[currentPrimesCount] = currentNumber;
                    currentPrimesCount++;
                }
                currentNumber++;
            }
    
            execTime = System.currentTimeMillis() - prevTime;
            System.out.println(execTime);
            System.out.print(currentNumber-1);
    
    
        }
    }
    



    Итого:
    Нетбук показал результат 89 секунд, а raspberry — 444 секунды.
    Итого: на малинке почти в пять раз медленнее. Что-ж вполне ожидаемо учитывая разницу в тактовой частоте и архитектуре.
    Неожиданность нас постигнет, если мы изменим тип чисел с long на int.
    При этом нетбук показал результат 38 секунд, а raspberry — 65 секунд.
    Я был приятно удивлен.

    Вывод: скорость работы виртуальной машины на raspberry pi сравнима с таковой на настольных компьютерах.

    Работа с GPIO


    В одном из докладов на конференции Joker докладчики программировали GPIO на Java Embedded ME (micro edition).
    Standart Edition, к сожалению, не имеет соответствующих классов, поэтому я обратился к гуглу и нашел проект Pi4J (www.pi4j.com). Стабильная версия сейчас 0.0.5, но проект развивается и версия 1 разрабатывается в данный момент.
    Тем не менее я рекомендую пользоваться стабильной версией, ибо на версии 1 у меня не все заработало.
    Следует также отметить, что номера портов несколько отличаются от стандартных, поэтому рекомендую ознакомиться с документацией на сайте Pi4J.

    Цепляю на первый порт светодиод, на второй кнопку, пишу следующий код:

    public class Test1 {
        public static void main(String[] args) throws InterruptedException {
            GpioController gpioController = GpioFactory.getInstance();
            GpioPinDigitalOutput gpioPinDigitalOutput = gpioController.provisionDigitalOutputPin(RaspiPin.GPIO_01, "MyLED", PinState.HIGH);
            GpioPinDigitalInput gpioPinDigitalInput = gpioController.provisionDigitalInputPin(RaspiPin.GPIO_02,PinPullResistance.PULL_DOWN);
            gpioPinDigitalInput.addListener(new GpioPinListenerDigital() {
                @Override
                public void handleGpioPinDigitalStateChangeEvent(GpioPinDigitalStateChangeEvent gpioPinDigitalStateChangeEvent) {
                    System.out.println("GPIO Pin changed" + gpioPinDigitalStateChangeEvent.getPin() + gpioPinDigitalStateChangeEvent.getState());
                    System.out.println("Sleeping 5s");
                    try {
                        Thread.sleep(5000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    System.out.println("Unsleep");
                }
            });
    
            while (true) {
                gpioPinDigitalOutput.toggle();
                Thread.sleep(500);
            }
    
    
        }
    }
    
    


    Собираю пакет, копирую jar файл и библиотеки на raspberry pi, запускаю и… Не работает.
    Оказывается, для управления портами ввода/вывода необходимы права администратора.
    Но для того, чтобы сработала команда
    $ sudo java
    

    в каталоге /bin должна быть символическая ссылка на исполняемый файл java-машины. Создаем ее:

    ln -s /opt/ejre1.7.0_45/bin/java /bin/java
    


    Снова запускаем — работает. Лампочка мигает, при нажатии на кнопку и засыпании потока обработки лампочка мигать продолжает, т.е. обработка события от кнопки запускается асинхронно.

    Выводы:
    1. Raspberry pi — это не игрушка, а компьютер с производительностью и возможностями, подходящими для решения многих задач.
    2. Производительности виртуальной машины java сравнима с производительностью в настольных системах, хотя и несколько ниже.
    3. Управление внешним оборудованием при помощи java и raspberry pi — реальная и вполне легко решаемая задача (чем я и собираюсь заняться в дальнейшем).

    Спасибо за внимание.
    Поделиться публикацией

    Комментарии 62

      0
      > cat ~/id_rsa.pub >> ~/. ssh /authorized_keys

      Сдается мне, тут есть пара лишних пробелов. Ну и к тому же, можно же просто cp/mv сделать (у вас же в authorized_keys на RPi ключей других нет? т.е. файл либо пустой, либо его вообще нет там.).
        0
        Можно, конечно, и скопировать. Привычка, просто. На реальных серверах добавлять приходится.
          +1
          Мне, кстати, еще и запуск sudo java не очень нравится… Неужели в RPi нельзя просто добавить пользователя в нужные группы, и нужен рут?
          +8
          А еще есть замечательная команда ssh-copy-id, которая копирует указанный (или дефолтный) публичный ключ на указанную машину в правильное место.
            0
            Увы, она есть не везде.
            Да и на целевой машине подразумевает только openssh, и её «правильное место» — это захардкоденное ~/.ssh/
            Но в очень многих случаях — да, срабатывает.
              0
              ssh-copy-id должен присутствовать на клиенте. Для целевой машины он не нужен.

              По сути он выполняет следующее:
              umask 077
              test -d ~/.ssh || mkdir ~/.ssh
              cat >> ~/.ssh/authorized_keys && (test -x /sbin/restorecon && /sbin/restorecon ~/.ssh ~/.ssh/authorized_keys >/dev/null 2>&1 || true)" || exit 1
              

              Т. е. дописывает публичный ключ в ~/.ssh/authorized_keys и устанавливает корректный контекст selinux и права на директорию и файл, если их не существовало до этого.
                0
                Да, речь именно про клиента.
                Не на всех системах, поддерживающих openssh, есть ssh-copy-id (а тут не только linux, но и та же макось, к примеру)
                И не на всех целевых системах ключи должны лежать в ~/.ssh/authorized_keys (например, могут лежать в /etc/dropbear/authorized_keys).
                Поэтому эту команду можно выполнять с мыслью «если повезёт — получится сразу», будучи готовым вручную копировать нужные ключи.
          +4
          Хм… Нетбук — настольная система?
            0
            Ну, у меня не было другой системы с частотой близкой к 1 Гц.
              +4
              Ну тут дело не только в частоте, но и в архитектуре тоже, и нетбук сам по себе на настольную систему мягко говоря не катит.
                0
                <irony>Тут такие нетбуки пошли, у меня вот в планшете количество кеша L2 2 мегабайта(Atom Z3470, 1.86GHz), а в настолке(AMD A6 5400k, разогнанный до 4.3GHz) — только один метр.</irony> Правда настолка ощутимо быстрее, с этим ничего не поделаешь.
            0
            Очень интересует работа с usb bluetooth адаптером из под java на Pi. Может кто нибудь сталкивался?
              0
              В Raspbian оракловую jdk можно поставить из репо: apt-get install oracle-java7-jdk
              Пруф www.raspberrypi.org/archives/4920
                –16
                Простите мой хранцузский, но по-моему крутить Java на Raspberry Pi — это шиза. Даже нет, шЫза. Вы же всю производительность на нет сводите. Зачем?
                  +4
                  Обычный средний VDS на 512 Mb ничем не мощнее. С такой логикой там тоже Java не надо ставить.
                    –3
                    Вообще-то, не надо. А Вы сомневались?
                      +1
                      У меня на VDS c 512М вполне себе неплохо работает Tomcat и пара приложений (ок, это оффтопик, но оно работает). А насчет Raspberry — как ее владелец говорю — НЕОЖИДАННО! Т.е. ожидал от статьи с таким заголовком в финале увидеть что-то вроде: «Вердикт: деццкая игрушка годная лишь для моргания светодиодами». И хотел было уже начать опровергать, спорить, доказывать… Но нет. Точнее, да. Это действительно работает, и работает, черт побери, отлично (разумеется, с учетом того, на каком железе оно работает).
                        0
                        Я знаю что работает и отлично работает. У меня несколько проектов на Java тоже крутятся на VDS 512M и никаких тормозов я не замечаю.
                          +3
                          Моим первым компьютером был 486-ой, 66 Мгц с 8Мб памяти. И проработал я на нем несколько лет, учился программировать тоже на нем.
                          И этот компьютер отлично справлялся со многими задачами.
                          Плюс однажды пришлось программировать микроконтроллер на ассемблере. Там знаешь цену каждому такту. А так-как программа была не сложная, то оказалось, что 20 МГц — это тоже очень много. Но этот контроллер управлял вполне реальным оборудованием.
                          Поэтому оценить 700 МГц у RPi — это я могу))), то что это очень мощное оборудование, вполне с вами согласен.
                            0
                            Таки может оказаться что на таких ресурсах можно и видео с 2-3-х камер в реальном времени сжимать в h264 (если написать на ассемблере). Только тсс.., надо ведь и более мощные конфигурации продавать
                              0
                              и тут мы вспоминаем, что 700 мгц арма и 700 мгц пентиума, немного разные величины
                              0
                              Тоже сравнил Tomcat на XS виртуалке Azure и Raspberry, разницы в работе нет, но в цене явный выигрыш, либо 15$ в месяц за облако, либо 35$, но один раз и Raspberry навсегда твоя собственность. Хотя Tomcat всё-таки до памяти прожорлив, сейчас пробую заменить его Jetty.
                                0
                                Скажите честно, а каков «overhead» по сравнению со скомпилированным C++ кодом? 100%, 1000%?
                                На десктопах, соглашусь, неважно за 0.01 секунду «деньги переведутся со счёта на счёт» или за 10 -клиент обождёт, главное — безопасность.
                                Но на встраиваемом решении, где главное выжать из железяки всё возможное в условиях экономии питания — не проще ли будет заплатить (программисту или вложив в себя покупкой курсов)?
                                Нет, академическую ценность статья имеет несомненно, вон люди и ubuntu запускали на ATMEGA-процессоре…
                                Просто разработчики процессоров всячески оптимизируют каждый милливатт, каждый микрон, а тут бац — python с java-ой (не в обиду поклонникам этих языков) — ой, малинка много «кушает»…
                                  0
                                  Не выдумывайте оверхед в 1000% процентов, там JIT компиляция. Да, она сама по себе сожрет ваты на старте, но у вас какое-то ложное представление об устройстве java
                                    0
                                    Нет, академическую ценность статья имеет несомненно, вон люди и ubuntu запускали на ATMEGA-процессоре…
                                    Точнее сказать, linux там запускался на arm, который эмулировался на atmega, т. к. у последнего нет mmu и он чуток восьмибитный.
                                +5
                                И кстати, еще. Raspberry Pi позиционировали как одноплатный дешевый компьютер для обучения? Так вот, насчет Java и т.п… В середине 90-х я работал на первой своей работе (сорри за тавтологию) в качестве программиста. Только-только после школы. И основной парк машин в нашем отделе составляли 486-е. Был даже один P-I (ежу понятно, у насяльника). Мне же этот самый насяльника выдал… AT286 (весь софт наш узкоспециализированный писался под DOS, так что это неважно). Я же, естественно, попытался противиться такой дискриминации. НО! Сэнсей, как и положено сэнсею, огрел меня бамбуковой палкой по тыкве и сказал: там, на 486 и пнях работают просветленные. Да, там все то же самое — но отладка быстрее. А там, где быстрее отладка — меньше думаешь над кодом.

                                К чему это? Java-кодеров — таки да, нужно учить на RPi. Быстрее придет понимание «как там внутри байтики шевелятся».
                                  +3
                                  Главное, чтобы когда научили, не забыли воды в бассейн налить
                                    0
                                    Если у человека есть интерес к тому, «как шевелятся байтики», он разберется в этом хоть на суперкомпьютере. А если интереса к этому нет, то совершенно точно это вызовет только снижение его собственной эффективности как разработчика — я очень хорошо помню, какое это было «удовольствие» — делить Android Framework на куски для того, чтобы на машине с 1Гб оперативки Эклипс вообще загрузил хоть что-то. И ловить ошибки компиляции из-за опечатки в имени недогруженного класса… Я в тот момент этот Андроид почти ненавидел. Интересно мне стало, когда памяти в машине стало 4 Гб :)

                                    Метафора в тему: я сегодня учил трехлетнюю дочь ножницами пользоваться. У нее есть «безопасные» пласмассовые ножницы, которые больше рвут, чем режут, и есть более опасные — металлические. Так вот, нравиться ей стало только когда я ей позволил резать металлическими. Потому что инструмент должен быть удобным. Иначе даже самая интересная работа — чистая пытка.
                                    0
                                    Производительность Java при грамотно написанной программе отличается от нативно компилированного кода процентов на 10.
                                    +3
                                    У меня на 6 распберрях вполне шевелится Hadoop с HDFS, проблема с долгим стартом решается реюзом JVM. Так что вполне можно там жабу гонять. Более того — я на этом всем запускал PhantomJS, и гонял сборку видеороликов для нашего проекта — и тоже работало более чем ок.
                                    • НЛО прилетело и опубликовало эту надпись здесь
                                        0
                                        это на генетическом уровне, да ;)

                                        пан Стецько побіг до сусіда на страшне волання й бачить — той пиляє мотузкою шию москалеві. То пан Стецько й каже сусідові:
                                        — Пане Вуйко, це ж можна зробити швидше сокиркою тюк — й все!
                                        — Ні, пане Стецько, а чого б не попилять, якщо маю час та натхнення?
                                      +1
                                      1. Oracle Java SE Embedded (в отличие от OpenJDK), действительно, представляет собой оптимизированный под ARM порт JDK, включая С1 (aka Client) JIT компилятор. Тот же самый, что на «большой» Java, только с ARM бэкендом. Поэтому и производительность соответствующая.
                                      Не знаю, как сейчас, но раньше он обгонял Dalvik VM в 2-3 раза на идентичном железе.

                                      2. На слово «java» в cpu features даже не смотрите, оно ничего не значит. Вернее, оно означает, что процессор поддерживает технологию Jazelle DBX, которая безнадежно устарела еще лет 8 назад. Никакая JVM с JIT компилятором ее не использует.
                                        +2
                                        Последние версии Oracle Java SE Embedded уже включают в себя и С2.
                                        Так что всё как у больших. ;)

                                          0
                                          Согласно этой статье, в C2 под Paspberry PI всё-таки есть некоторые проблемы.
                                            +1
                                            устарело
                                              0
                                              круть, чо! А для чего делали? Для кластеров армовых?

                                              В статье сказано, что проблемы именно с ARMv6, а с ARMv7 всё ок.

                                              Ещё вопрос: ты не знаешь, бывает ли HotSpot С1/C2 в OpenJDK для ARM?
                                        +1
                                        1. Не игнорируйте InterruptedException. Восстановите статус прерывания с помощью Thread.currentThread().interrupt();
                                        Почитать об этом можно в статье «Теория и практика Java: Работа с InterruptedException».

                                        2. Пробовали запускать tomcat на raspberry pi.
                                        Запуск с установленным приложением (war-файл примерно 40 MB: wicket, spring etc) — 1 час.

                                        К примеру,
                                        на cubieboard2 запуск того же war-файла — 2 минуты.
                                        wandboard или odroud u2 — 1 минуту
                                        Intel процессор — 30 секунд.

                                          0
                                          что-то вы не то говорите
                                          я свой проект на спринге стартую на своей малинке примерно за 120 секунд на оракловой жабе 8, на опенждк время увеличивается в 4 раза до 450 секунд
                                          попробуйте поставить на свою малинку оракловую jdk
                                            0
                                            Проверил конфиги, видимо, по запарке не ту jdk указал.

                                            На rapsberry pi jdk:
                                            java version «1.7.0_07»
                                            OpenJDK Runtime Environment (IcedTea7 2.3.2) (7u7-2.3.2a-1+rpi1)
                                            OpenJDK Zero VM (build 22.0-b10, mixed mode)

                                            На других платах:
                                            java version «1.7.0_40»
                                            Java(TM) SE Embedded Runtime Environment (build 1.7.0_40-b43, headless)
                                            Java HotSpot(TM) Embedded Server VM (build 24.0-b56, mixed mode)

                                            Спасибо, попробую прогнать тесты еще раз.
                                            С другой стороны, для наших задач Odroid на Exynos 4412 лучше подходит.
                                          0
                                          3. Управление внешним оборудованием при помощи java и raspberry pi — реальная и вполне легко решаемая задача (чем я и собираюсь заняться в дальнейшем).

                                          А что за оборудование? Мне просто кажется, что если чем-то в реальном времени управлять, то GC будет преподносить неприятные сюрпризы.
                                          В общем будет интересно узнать чем дело кончится.
                                            0
                                            Датчики, контроллеры, электродвигатели, камера.
                                            В общем хочется сделать свой «умный дом». Очередной велосипед, конечно, но интересно.
                                            К времени отклика подобная система не критична.
                                            Да и вообще управление портами ввода/вывода обычно это операция, которая не требует динамического выделения памяти. Разве что, в данном случае, для обработки Action'ов от портов ввода, но это надо проверить.
                                              +1
                                              Для работы с внешними устройствами с I2C, SPI, UART интерфейсами, а также с GPIO пинами гораздо удобнее использовать Java ME Embedded, у которой есть DAPI (Device Access API) У Oracle есть отличный Getting Started Guide для версии Java ME Embedded 3.3 docs.oracle.com/javame/config/cldc/rel/3.3/rasp/gs/pdf/getstart_raspi.pdf. Во первых, в Java ME уже давно есть Hard Float, во вторых размер рантайма в 10 раз меньше чем у Java SE и VM оптимизирована для гораздо более слабого железа. Java SE Embedded имеет смысл использовать, если вы хотите сделать клиентское приложение на Java FX например.
                                          0
                                          В принципе с GPIO из Java можно работать как с обычными файлами. А Pi4J без поддержки 1-wire довольно бесполезен, даже простой термодатчик не повесить.
                                          Ещё вопрос по GPIO, может кто поможет? У Raspbian'а не хватает одного модуля для работы 1-wire почему-то, который есть в других сборках. Исходники я нашёл, а вот как собрать и добавить в ядро я не знаю, OS я знаю только как пользователь. Может быть кто-то может помочь? Я тогда напишу подробнее.
                                            0
                                            A Pi4J и не нужен на само деле чтобы работать с термодатчиками.
                                            Смотри мой ответ на их форуме:
                                            groups.google.com/d/msg/pi4j/FqLf15sW6EM/b5qOEk5yERsJ
                                              0
                                              Я об этом и говорил в общем, но там есть одна проблема, в этой сборке поддерживается только один пин для 1-wire — GPIO-4, т.к. он там жутко захардкожен, хотя причин для этого нет. Есть более изящное решение, с настраиваемым пином или несколькими пинами. Но его нужно собрать, а я не умею и даже не знаю где почитать.
                                                0
                                                Ну а для разумного числа термодатчиков только один он и нужен. Они же все в параллель включаются. Например, у меня сейчас 6 датчиков и буду ещё добавлять. Там, конечно, важно как именно проводку для них делать, но это уже другая история. Резюме: для термодатчиков в доме одного пина вполне достаточно. А для плат с реле я повесил платку расширения на I2C и в итоге у меня управляемых 32 реле, хотя можно и больше сделать. Кстати, такое решение ещё и не требует запуска джавы под рутом (ну не люблю я, когда приложения под рутом бегут).
                                            0
                                            Здравствуйте!
                                            У меня нет пока такой штуки… Но чтобы не покупать её зря, не могли бы люди, у которых она есть мне кое-что подсказать?
                                            На ней есть порт ввода-вывода. Торренты, датчики температуры и мигания светодиодами это конечно хорошо…
                                            Но на какой максимальной скорости с ним можно работать? Например, из под той же Java… То есть, можно ли туда подцепить быстродействующий АЦП и обрабатывать в Pi данные в режиме реального (или почти..) времени? Или всё быстродействие уходит на Линукс..?
                                            Простите за вопрос, если что)
                                              0
                                              Первая ссылка в google для «raspberrypi gpio performance».

                                              Получается на C — 5 — 20 Mhz, на Python, bash, perl — 30-40 khz

                                              На java:
                                              Java + OpenJDK 7 + ZeroVM = 5 kHz
                                              Java + OpenJDK 7 + JamVM = 10.75 kHz
                                              Java + OpenJDK 7 + Avian = Error; untested
                                              Java + OracleJDK 8 (ea) + HotspotVM = 153 kHz
                                              Java + OracleJDK 7u10 + HotspotVM = 161 kHz (on soft-float Debian «Wheezy»)
                                              Native C + WiringPi = 7 MHz

                                              Можно еще по UART или SPI данные передать/принимать — будет быстрее и меньше нагрузки.
                                                0
                                                Спасибо! Гугл — хорошо, но хотелось услышать лично от владельцев…
                                                Маловато будет… Разочарован, если честно.
                                                Неужели из ГигаГерцовой мощи нельзя выделить хотя бы 50-100 МГц на порты…
                                                А если снести все надстройки, Линуксы и т.д., и писать код непосредственно контроллера, тоже такая засада?
                                                  0
                                                  На hackaday была статья как из rapsberry сделать FM-трансмитер. hackaday.com/2012/12/10/transmit-fm-using-raspberry-pi-and-no-additional-hardware/
                                                  Там как раз частота 100Mhz.

                                                  Кстати, а для чего вам такая? Может проще воспользоваться SPI или специализированную микросхему подключить.
                                                    0
                                                    Вот это уже другое дело!)
                                                    Подумываю потихоньку собирать свой SDR приёмник, заодно поучиться.
                                                    Там надо быстродействующиее АЦП и быстро перемножать.
                                                    Не знаю, заменит ли эта штука по быстродействию хоть как-то ПЛИС, от этого и интересно стало)
                                                    Для меня это было бы оптимальным вариантом. Когда надо — слушаешь эфир. Вставил флэшку и вот тебе качалка торрентов, например…
                                                    А если бы таких скоростей можно было бы добиться в Java программе, да на Линуксе, да с остальными плюшками типа передачи на большой комп по сети — вообще сказка!)
                                                    Я, кстати, из статьи не понял немного — там можно только одним пином дёргать или менять произвольные данные на всём порту? И как там дела с приёмом данных от порта?
                                                    Вообще, я всё больше хочу эту штуку..;)
                                                      0
                                                      Можно попробовать для таких целей Beagleboard-xM beagleboard.org/Products/BeagleBoard-xM, у нее на борту как раз DSP процессор есть.
                                                        0
                                                        И цена…
                                                        Сейчас вот наткнулся на такой вариант — www starterkit ru/html/index.php?name=shop&op=view&id=99
                                                        По совсем демократичной цене…
                                                        Изучаю)
                                                          0
                                                          Не поверите, я эту плату сегодня утром заказал. :)
                                                          На Freescale iMX6Solo помимо кучи интерфейсов, есть еще и e-ink интерфейс.
                                                            0
                                                            Значит это судьба) надо брать!
                                                            А где заказывали? У этих же ребят? Когда обещается доставка? Ещё какие-нибудь дополнительные модули не заказывали?
                                                              0
                                                              Первый раз заказываю на www.starterkit.ru
                                                              Пока пришло только подтверждение, т.к. заказывал в субботу.

                                                              Интересно, когда HolaDuo-PC, SK-iMX6-SODIMM и модули появятся в продаже.
                                                              — Freescale iMX6Solo (2 ядра ARM Cortex-A9 1000МГц) DDR3-1066 1024Мбайт SATA разъем
                                                              — SK-iMX6-SODIMM (формат sodimm)
                                                              — Hola-IEB – интерфейсный модуль расширения
                                                              — Hola-FEB – FPGA модуль расширения
                                                              — Hola-VCEB – модуль расширения видео захвата
                                                              — Hola-AEEB – модуль расширения дополнительных Ethernet подключений

                                                                0
                                                                Да. Тоже читал про вторую плату. Но, думаю, ещё не скоро они её выпустят… Пока изготовление, пока отладка…
                                                                Да и цена конечно будет выше.
                                                                Как раз пока потренируемся на этой платке, а там и видно будет, стоит ли покупать другую…
                                                                Я бы Вам с удовольствием плюсов наставил за такое терпение к новичку, но у меня кармы нет (:
                                                  0
                                                  Java + JNI + Native C = ??

                                                  Думаю, что каждый язык должен решать свою задачу. Дрыгать ногой по GPIO — это не Java должна делать. Натив отлично справится. А вот управлять этм процессом на высоком уровне успеет и Java.
                                                  0
                                                    0
                                                    Ох, как много воды утекло. Теперь появилась 9-ка и даже 10-ка уже:
                                                    Liberica JDK for Raspberry Pi:
                                                    www.bell-sw.com/java-for-raspberry-pi.html
                                                    www.bell-sw.com/liberica-release-notes.html

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

                                                    Самое читаемое