Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Ivan Loskutov - Poor man’s serial debugging

Moscow 2600
October 04, 2019

Ivan Loskutov - Poor man’s serial debugging

Moscow 2600

October 04, 2019
Tweet

More Decks by Moscow 2600

Other Decks in Research

Transcript

  1. About me Разработчик ОС: • > 8 лет опыта разработки

    микроядерных ОС • участвую в открытых и закрытых проектах
  2. Цель Использование "обычных" устройств для прототипов/экспериментов • проверить идею на

    уже существующем устройстве, например, мобильном телефоне • для маргинальных ОС нет драйверов от вендоров • реализация отладочной печати должна быть очень простой
  3. 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/
  4. Другие интерфейсы LCD: • легко реализовать • мало информации и

    она "теряется" USB device: • доступны в Linux/Android • трудно использовать на ранних этапах загрузки USB host (xHCI debug port): • опциональная поддержка в контроллере • на мобильных устройствах пока не встречал
  5. SD/MMC ? SD/MMC: • простой синхронный последовательный интерфейс • скорость:

    ~100 kHz - 25 MHz • достаточно использовать только 2 пина: CMD, CLK • пакет 48 бит: код команды, аргумент, CRC
  6. Реализация Железо для приема: • прототип был на HydraBus с

    полингом: ◦ низкая скорость ◦ терял пакеты • вариант на FPGA (IceStick)
  7. Дальнейшие идеи TODO: • опубликовать код для FPGA • двусторонний

    обмен • полноценная эмуляция SD-карты: ◦ на FPGA обрабатывать только команды и возвращать результат ◦ обработку SD/MMC команд производить на хосте Варианты использования эмуляции: • загрузка устройств с SD карты без передергивания и копирования • тестирование драйверов на устройстве
  8. Q&A