virt2real - есть ли жизнь в железе?
TRANSCRIPT
План
● Что такое Виртурилка?● Как вообще работает разработка и
производство электроники?● История Виртурилки и собранные грабли● Как программировать под Виртурилку● Что вообще из нее можно сделать
Размеры - 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 (эксперимерты)
География на рынке
● 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
Проблемы и их решения● Т-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
Легкое подключение сервоприводов
Больше информации
● 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