39

Virt2real - есть ли жизнь в железе?

Embed Size (px)

Citation preview

План

● Что такое Виртурилка?● Как вообще работает разработка и

производство электроники?● История Виртурилки и собранные грабли● Как программировать под Виртурилку● Что вообще из нее можно сделать

Размеры - 70 х 42 х 10 ммВес - 25 грамм

ПроцессорTexas Instruments DaVinci DM365 SOC — TMS320DM365, 65nmARM9 300Mhz (ARM926EJ-S rev 5) DSP (720p 30 fps, On-Screen Display (OSD))

Память DDR2 RAM 128MbNAND ROM 256Mb

Питание2.8-15 Вольт. Потребляемый ток (основная плата) — 220mA (при напряжении >= 5В)

ИнтерфейсыGPIO (3.3В и 1.8В) — 51 штPWM — 4 штI2CSPI — 5 штUART — 2 штDAC — 3 штADC — 6 штUSB 2.0 High-Speed host port OTGUSB-клиентmicroSDАналоговый компонентный видеовыходАудиовыход (моно, 300 mV на нагрузке 8 Ом)Аналоговый микрофонный аудиовход10/100Mb RJ45 EthernetВход для цифровой камерыMcBSP интерфейс (Multi-Channel Buffered Serial Port)

Видео-входы

Сенсоры:- OV2643 (стандарт)- OV5642 (через переходник)

Модули сопряжения:- аналоговые SD-камеры (TVP5150)- HDMI (эксперимерты)

Платы расширения

Мезонин Wi-FiRJ-45 коннектор

Плата разработкиРелейный модульМоторный модуль

Создатели

География на рынке

● Arduino / AVR / PIC / Cortex-M0● MIPS + WiFi (Carambola, VoCore)● Virt2Real● BeagleBone, HummingBoard, Olimex A*● Raspberry Pi, Orange Pi, Banana Pi,

CubieBoard● Jetson Tegra K1

Процесс производства электроники

Инженер-системотехник: выбор платформы- Документация / SDK- Development board - Reference design + Bill of materials (BOM)- Программные компоненты и IPВыход: принципиальная схема

Инженер-схемотехник: разводка печатной платы- Особенности разводки на высоких частотах- Много практикиВыход: файлы для производства (макеты слоев, карты сверлений и металлизации, маски контактных площадок и т.д.)

Процесс производства электроники - 2

● Производство печатной платыКоличество слоев Плотность упаковки

● Монтаж компонентовручной полуавтоматизированныйавтоматизированный

● Тестирование и отбраковкаавтоматизированная проверка стенды для приемного тестирования

Электроника — наука о контактах

● Непропай и КЗ● Паразитная емкость и индуктивность● Помехи и наводки / Мало земли● Дребезг контактов / Переходные процессы● Неправильная коммутация / Термо эффекты● Ошибки проектирования● Ошибки монтажа / Брак производства / Пересортица● Ошибки эксплуатации / Вибрация / Окисление● MTBF / Закон больших чисел

Тиражи Virt2real

Три тиража:● Т-10 (экспериментальная партия)● T-100 (предтиражный заказ для проверки

внесенных изменений)● Т-1000 (продаваемый тираж)

На каждом из них были свои сложности и проблемы...

T-10

● WiFi на основной плате, а microSD и консоль — на мезонине

● Родной Ethernet● Аппаратный патч для UART● Клеммные колодки для питания и моторов● Нет зазора и возможна неправильная установка плат

расширения (как раз на фото)

T-100

Конструктивные изменения:

- Wi-Fi переместился на мезонин, а microSD — на основную плату

- добавлен чип Ethernet для экономии прерываний

- поменялась контактная группа питания и мезонина

- появилась защита от неправильного крепления плат расширения

- microUSB на плате выполняет роль не только питания, но и USB OTG

T-1000

Проблемы и их решения● Т-10

- на пятом слое перепутали дорожки TX/RX консоли, пришлось накладывать аппаратный патч- выбранный чип Wi-Fi оказался с закрытыми драйверами и не поддерживающий AP

● T-100- перепутаны дорожки на NAND (аппаратный патч)- вместо резисторов номиналом порядка мОм впаяли резисторы порядка МОм (ошиблись в миллиард раз, лечится пайкой)- перепутаны дорожки на плате сенсора (не лечили)

● Т-1000- отбраковка 25% тиража Wi-Fi (не проверили на месте)- SEPIC-схема греется больше заявленного (предположительно — брак компонента, не критично)- нашли аппаратную ошибку в процессоре (программное исправление в ядре)- процессор может быть «разогнан» (дает заметный прирост производительности)- особенности реализации видеоподсистемы: на каждый тип устройства захвата требуется по своему ядру

Особенности разработки

● Кросс-компиляция и toolchains● Всего мало (мало памяти, мало постоянного

хранилища, мало производительности процессора)● Приемы из HPC● Оптимизация по размеру и скорости, в т.ч.

низкоуровневые● Аппаратные ускорители● Аппаратные ошибки

Загрузка и карта памяти

● Загрузка происходит с - microSD- NAND Flash- через UART

● Основные разделы:- загрузчик (UBL + Uboot)- ядро (Linux kernel)- файловая система (UBIFS, UnionFS: cramfs+jffs2)

Языки программирования

● Интерпретируемые:PHP, Python, Ruby, JavaScript/NodeJSLua (RT = 139kB)

● КомпилируемыеC, C++, ObjectiveCVala, GoJava, Mono/C#Erlang

SDK — и что дальше?

● make getsdk; make build; make install ● Собирает

UbootЯдро (2.9.0rc2-davinci)FS (buildroot)DaVinci SDK (аппаратные ускорения)АдминкаУтилиты (прошивка Flash, развертывание образа microSD)

Что из этого всего можно сделать

IP/PTZ/Live-камера

Питание от широкого диапазона напряжений

Контроль разряда батареи

Малый вес и компактные размеры

Низкое энергопотребление

Поддержка 3G и 4G модемов

Множество протоколов вещания — RTP, RTSP, RTMP

Легкое подключение сервоприводов

Трансляция игр в сеть

Управляемая машинка

Управляемый танк

Снегоуборщик

Самолет

Робот-манипулятор

Удаленное включение-выключение устройств

Управление светодиодной лентой

Управление фотоаппаратом

Метеостанция

Системы навигации

IP KVM

Новые потребительские продукты

Больше информации

● http://virt2real.ru/● http://forum.virt2real.ru/● http://wiki.virt2real.ru/● http://github.com/virt2real● http://g0l.ru/● http://twitter.com/virt2real● http://youtube.com/virt2real

Спасибо за внимание

Готов ответить на вопросы

Максим Крентовскийhttp://devimpress.com/@mkrentovskiy на Twitter и GitHub