Если устройство с закрытым программным стеком (весь код собирается под конкретное устройство), то можно отобрать оптимальный набор расширений под конкретную задачу. Это сильная сторона RISC-V, позволяющая выпускать специализированные процессоры.
Если требуется открытая бинарная экосистема программ (пример с игрой), то RVI предлагает ориентироваться на Major RVA профили (сейчас это RVA23). Следующий RVA профиль (предположительно - RVA30) будет содержать новые обязательные расширения.
Предположу, что собранные под RVA23 программы запустятся на RVA30. То есть, mandatory расширения в новом профиле не будут исключать. Тогда условная игра под RVA23 запустится на новом RVA30 процессоре.
Мне кажется, VLA подход к векторизации лучше отражает ситуацию, когда длины векторов отличаются между процессорами для разных классов устройств. Например, мобильные - 128 bit, настольные - 256 bit, серверные - 512 bit. Причем длина вектора в классе устройств тоже не константа, меняется со временем. Библиотеки же могут использоваться одинаковые, так что требуется поддержать все длины векторов.
Цель у RVV 1.0 амбициозная, ждем высокопроизводительных реализаций.
Да, во многом Edison похож на маленький сервер с Linux. Хотя, в Edison есть еще MCU :)
Если стоит задача работать с ядром Linux, то возможно вас заинтересуют несколько пунктов из анонса IoT Developer Kit v1.5:
(1) New Intel Edison images + Open Source
Upgraded Yocto to 1.7.2 and new feature to read onboard battery level
Open sourced Intel Edison u-boot on Github*. For detailed information, please visit here
Open sourced Intel Edison kernel on Github*. For detailed information, please visit here
I2C поддерживается в MCU с помощью функций i2c_read и i2c_write (подробнее). В документации есть пример взаимодействия по I2C с сенсором MPU6050. Для инициализации I2C нужно будет запустить скрипт init_i2c8.sh из Linux.
Вы правы, код с использованием прерываний был бы теоретически более правильным для данной задачи. Данная заметка — это скорее «hello world» для MCU; простейший код, показывающий как с ним взаимодействовать.
Прерывания поддерживаются в MCU и настраиваются с помощью функции gpio_register_interrupt (подробнее, пример).
Edison Compute Module — вычислительная часть (CPU и MCU)
Edison Arduino Board — или другая плата расширения, которая даст возможность работать с логическим уровнем 5В.
плюс 4 проводка.
Вся программная часть для считывания расстояния — в программе для MCU SDK. Из-за специфики Edison Arduino Board еще нужно вызвать 2 команды ./init_DIG.sh для конфигурирования портов.
ADB может работать через TCP/IP. Если у виртуальной машины есть IP адрес, то с помощью adb connect <ip-адрес> её можно подключить. После этого виртуальная машина должна появится в списке, выдаваемом командой adb devices. Ну, а дальше как обычно: adb install file.apk.
Теоретически getevent/sendevent может записать и воспроизвести последовательность событий с акселерометра. На практике — зависит от устройства. Еще есть некий SensorSimulator, но на практике я его не пробовал.
Robolectric — это скорее инструмент для unit-тестов, а не функционального тестирования. Насколько я понял, Robolectric не позволяет запустить приложение на конкретном устройстве.
ADB и MonkeyRunner могут работать как с физическими устройствами, так и с эмуляторами. Поэтому большинство перечисленных способов должны работать применительно к эмулятору. На эмуляторе можно тестировать, например, какое-нибудь экзотическое разрешение экрана.
Если устройство с закрытым программным стеком (весь код собирается под конкретное устройство), то можно отобрать оптимальный набор расширений под конкретную задачу. Это сильная сторона RISC-V, позволяющая выпускать специализированные процессоры.
Если требуется открытая бинарная экосистема программ (пример с игрой), то RVI предлагает ориентироваться на Major RVA профили (сейчас это RVA23). Следующий RVA профиль (предположительно - RVA30) будет содержать новые обязательные расширения.
Предположу, что собранные под RVA23 программы запустятся на RVA30. То есть, mandatory расширения в новом профиле не будут исключать. Тогда условная игра под RVA23 запустится на новом RVA30 процессоре.
Рекомендую - RISC-V State of the Union - Krste Asanović (YouTube)
Какие сценарии не покрываются таким подходом?
Мне кажется, VLA подход к векторизации лучше отражает ситуацию, когда длины векторов отличаются между процессорами для разных классов устройств. Например, мобильные - 128 bit, настольные - 256 bit, серверные - 512 bit. Причем длина вектора в классе устройств тоже не константа, меняется со временем. Библиотеки же могут использоваться одинаковые, так что требуется поддержать все длины векторов.
Цель у RVV 1.0 амбициозная, ждем высокопроизводительных реализаций.
Если стоит задача работать с ядром Linux, то возможно вас заинтересуют несколько пунктов из анонса IoT Developer Kit v1.5:
i2c_read
иi2c_write
(подробнее). В документации есть пример взаимодействия по I2C с сенсором MPU6050. Для инициализации I2C нужно будет запустить скрипт init_i2c8.sh из Linux.Прерывания поддерживаются в MCU и настраиваются с помощью функции
gpio_register_interrupt
(подробнее, пример).плюс 4 проводка.
Вся программная часть для считывания расстояния — в программе для MCU SDK. Из-за специфики Edison Arduino Board еще нужно вызвать 2 команды
./init_DIG.sh
для конфигурирования портов.Например:
www.seeedstudio.com/depot/Intel-Edison-for-Arduino-p-2149.html?cPath=6_7 — $97.95
www.sparkfun.com/products/13097 — $99.95
www.linuxcenter.ru/shop/ops_hard/Edison/EDI2ARDUIN.AL.K — 8673 руб.
Grove starter kit plus – Intel IoT Edition for Intel Galileo Gen 2 and Edison — $79
www.seeedstudio.com/depot/Grove-starter-kit-plus-Intel-IoT-Edition-for-Intel-Galileo-Gen-2-and-Edison-p-1978.html
Итого: примерно $180 без учета доставки.
adb connect <ip-адрес>
её можно подключить. После этого виртуальная машина должна появится в списке, выдаваемом командойadb devices
. Ну, а дальше как обычно:adb install file.apk
.