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 Slide

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

    View Slide

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

    View 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 Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  10. Q&A

    View Slide