
Эмулятор CD-ROM из Raspberry Pi Pico W, использующий образы из сети
artyomsoft 14 минут назад Эмулятор CD-ROM из Raspberry Pi Pico W, использующий образы из сети Средний 7 мин 736 Блог компании RUVDS.com Linux * DIY или Сделай сам Программирование микроконтроллеров * Raspberry Pi *...
<5 — 2026'da uzaya kaç SpaceX Starship fırlatması ulaşacak?
Значимый прорыв формирует отрасль ИИ: artyomsoft 14 минут назад Эмулятор CD-ROM из Raspberry Pi Pico W, использующий образы из сети Средний 7 мин 736 Блог компании RUVDS. com Linux * DIY или Сделай сам Программирование микроконтроллеров * Raspberry Pi * Туториал В одной из своих статей я уже рассказывал, как из Raspberry Pi Pico сделать USB CD-ROM. Так как размер флеш-памяти Pico ограничен, поместить что-то серьёзное в образ, который будет находиться во флеш-памяти невозможно.
Можно попробовать разместить образ на флеш-карте и использовать модуль для неё, но я нашёл более интересное с точки зрения используемых технологий решение. Эмулировать образ, который находится в интернете. Образа многих дистрибутивов Linux доступны для загрузки с сайта.
Технические детали
Raspberry Pi Pico не имеет сетевого интерфейса, а вот Pico W оснащена модулем Wi-Fi, благодаря которому можно получать данные напрямую с HTTP-сервера. Если реализовать чтение ISO-образа не из локальной памяти, а через сеть, то ограничение в 2 МБ флеш-памяти практически исчезает. Во внутренней памяти устройства потребуется хранить только прошивку и параметры подключения к сети.
Идея довольно проста. Компьютер обращается к виртуальному CD-ROM, отправляя команды чтения определённых секторов. Вместо того чтобы извлекать их из локального файла, микроконтроллер определяет смещение внутри ISO-образа и выполняет HTTP-запрос с заголовком Range, получая только необходимые байты.
Что потребуетсяДля реализации проекта понадобится совсем немного оборудования:Raspberry Pi Pico W,USB-кабель,точка доступа Wi-Fi,любой HTTP-сервер, на котором размещён ISO-образ. В качестве сервера можно использовать как собственный веб-сервер, так и официальный сайт дистрибутива Linux, если сервер поддерживает HTTP Range Requests. Как всё работаетУкрупнённый алгоритм выглядит следующим образом:Компьютер отправляет команду READ(10).
Отраслевые последствия
TinyUSB вызывает callback чтения. Pico вычисляет смещение внутри ISO. Отправляется HTTP GET с Range.
Полученные 2048 байт копируются в USB-буфер. TinyUSB возвращает данные компьютеру. HTTPХотя сейчас везде используется HTTPS, я, чтобы не усложнять статью и ухудшать производительность программы, использовал HTTP.
HTTP RangeНапример, сектор CD-ROM имеет размер 2048 байт. Если операционная система запрашивает сектор с номером 12345, то необходимо получить диапазон:12345 × 2048 = 25282560 Следовательно, HTTP-запрос будет выглядеть примерно так:GET /debian. org Range: bytes=25282560-25284607 Если сервер поддерживает частичную выдачу файлов (HTTP Range Requests), он вернёт только один нужный сектор вместо передачи всего ISO-файла объёмом несколько гигабайт.
Этот прогресс даёт важные сигналы о будущем отрасли, и технологический мир внимательно наблюдает.





