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

    View full-size slide

  2. About me
    Разработчик ОС:
    • > 8 лет опыта разработки микроядерных ОС
    • участвую в открытых и закрытых проектах

    View full-size slide

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

    View full-size slide

  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/

    View full-size slide

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

    View full-size slide

  6. SD/MMC ?
    SD/MMC:
    • простой синхронный последовательный интерфейс
    • скорость: ~100 kHz - 25 MHz
    • достаточно использовать только 2 пина: CMD, CLK
    • пакет 48 бит: код команды, аргумент, CRC

    View full-size slide

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

    View full-size slide

  8. Реализация

    View full-size slide

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

    View full-size slide