Часто люди, только купившие себе новенький восьмибитный микроконтроллер интересуются, как запустить на нём Linux. Но обычно они становятся лишь объектом насмешек. А на форумах по Linux'у порой проскакивают вопросы, мол какие нужны минимальные харрактеристики для запуска операционки. Самый частый ответ — 32 битная архитектура, MMU и как минимум 1 мб оперативной памяти. Мой проект ломает эти стереотипы. Компьютер основан на ATmega1284p. Я даже сделал ещё один на ATmega644a, и он тоже работал. Нет больше никакого процессора или других спрятанных частей. Всё это работает на версии ядра 2.6.34, и даже (если у вас есть на это время), грузит полноценную Ubuntu, с X сервером и Gnome.
- Оперативная память
Да, LInux требует мегабайты оперативки и 32 битную архитектуру процессора с MMU. Тут всё это есть.
Мне пришлось использовать старинную тридцатипиновую планку SIMM типа. Для справки: такая память использовалась в 286'ых компьютерах.
Насколько она быстрая? Примерно 300 килобайт в секунду. Маловато, но всё же.
- Хранилище файлов
Это для меня проблемой не было. С SD карточками легко работать по SPI, и именно этот метод я и использовал. Карточка на 1 гигабайт работает нормально, но для Ubuntu Jaunty, может хватить и 512 мегабайт. У ATmega есть хардварный SPI модуль, и не составило трудов заставить карту работать. Довольно медленно — около 200 килобайт в секунду.
- Процессор
Как уже говорилось раньше, нам нужна 32-битная архитектура и поддержка MMU. А AVR восьмибитный, и MMU естественно тоже не поддерживает. Я написал эмулятор ARM. ARM довольно похож на AVR, и написать эмулятор было не так уж и сложно, несмотря на то, что подобных проектов я не нашел.
- Другие возможности
Компьютер связывается с внешним миром по serial порту. Сейчас я общаюсь при помощи minicom на моём компьютере, но я планирую подключить клавиатуру и символьный дисплей, чтобы сделать всё автономнее. Ещё у меня стоит два светодиода, которые показывают обращения к SD карте(один чтение, другой запись). Сам микроконтроллер со стандартных 20 разогнан до 24 мегагерц.
- Насколько же всё это медленное?!
Два часа на базовую загрузку(init=/bin/bash). Ещё 4, чтобы войти в Ubuntu(exec init), и потом залогиниться. Запуск иксов ещё дольше. Эмулированная скорость около 6.5 килогерц. Как ни странно, но после загрузки, система даже порой юзабельна. Ответ на команду в терминале приходит примерно через минуту. SD карточка форматировалась день. Я думаю, что это самый медленный, дешёвый и легкособираемый компьютер на Linux'е.
Теги: linux
© Хабрахабр