Slide 1

Slide 1 text

Poor man’s serial debugging Ivan Loskutov

Slide 2

Slide 2 text

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 карты без передергивания и копирования • тестирование драйверов на устройстве

Slide 10

Slide 10 text

Q&A