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. Poor man’s serial debugging Ivan Loskutov

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

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

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

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

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

    полингом: ◦ низкая скорость ◦ терял пакеты • вариант на FPGA (IceStick)
  8. Реализация

  9. Дальнейшие идеи TODO: • опубликовать код для FPGA • двусторонний

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