About me
Разработчик ОС:
• > 8 лет опыта разработки микроядерных ОС
• участвую в открытых и закрытых проектах
Slide 3
Slide 3 text
Цель
Использование "обычных" устройств для
прототипов/экспериментов
• проверить идею на уже существующем устройстве, например, мобильном
телефоне
• для маргинальных ОС нет драйверов от вендоров
• реализация отладочной печати должна быть очень простой
Slide 4
Slide 4 text
UART
Мобильные устройства:
• USB (Samsung, MTK)
• Audio Jack (Google Nexus, Asus)
• https://wiki.postmarketos.org/wiki/Serial_debugging
Иногда можно найти на UART плате:
https://www.xda-developers.com/patch-this-barnes-and-noble-nook-tablet-hardware-protection-compromised/
Slide 5
Slide 5 text
Другие интерфейсы
LCD:
• легко реализовать
• мало информации и она "теряется"
USB device:
• доступны в Linux/Android
• трудно использовать на ранних этапах загрузки
USB host (xHCI debug port):
• опциональная поддержка в контроллере
• на мобильных устройствах пока не встречал
Slide 6
Slide 6 text
SD/MMC ?
SD/MMC:
• простой синхронный последовательный интерфейс
• скорость: ~100 kHz - 25 MHz
• достаточно использовать только 2 пина: CMD, CLK
• пакет 48 бит: код команды, аргумент, CRC
Slide 7
Slide 7 text
Реализация
Железо для приема:
• прототип был на HydraBus с полингом:
◦ низкая скорость
◦ терял пакеты
• вариант на FPGA (IceStick)
Slide 8
Slide 8 text
Реализация
Slide 9
Slide 9 text
Дальнейшие идеи
TODO:
• опубликовать код для FPGA
• двусторонний обмен
• полноценная эмуляция SD-карты:
◦ на FPGA обрабатывать только команды и возвращать результат
◦ обработку SD/MMC команд производить на хосте
Варианты использования эмуляции:
• загрузка устройств с SD карты без передергивания и копирования
• тестирование драйверов на устройстве