Ubuntu Linux удалось запустить на 8-битном микроконтроллере

Дмитрий Гринберг, российский программист, проживающий в США, опубликовал в своем блоге интересную заметку с объяснением того, как ему удалось запустить Linux-дистрибутив Ubuntu 9.04 с ядром 2.6.34 на микроконтроллере ATmega1284p с 8-битным процессором, лишенном блока управления памятью (MMU) и общим объемом встроенной оперативной памяти 16 Кб.

Чтобы добиться запуска ядра Linux на микроконтроллере пришлось применить несколько трюков, оснастив микроконтроллер дополнительным модулем памяти и SD-картой для хранения операционной системы. В качестве дополнительной памяти использован модуль SIMM объемом 16 Кб, чтение и запись ячеек которого осуществляется с помощью программного контроллера, позволяющего добиться производительности примерно в 300 Кб/с при потере около 3% процессорного времени на обновление ячеек памяти каждые 62 мс (эта операция требуется из-за особенностей работы SIMM-памяти).

В качестве хранилища для операционной системы использована SD-карта объемом 1 Гб, которая также управляется с помощью программного SPI-контрллера (мастера), позволяющего достичь производительности в 200 Кб/с. Аппаратный SPI-контроллер, установленный в ATmega1284p Дмитрию так и не удалось заставить работать корректно.

Особого внимания заслуживает метод, примененный для запуска Linux на 8-битном процессоре. Так как портировать ядро на 8-битную архитектуру не представляется возможным, Дмитрий написал эмулятор процессорной архитектуры ARMv5TE и системы на кристалле PXA255, способный работать на процессоре ATmega1284p и реализующий, кроме всего прочего модуль MMU, также необходимый для запуска ядра Linux. По прикидкам Дмитрия, производительность эмулятора оказалась в районе 6.5 Мгц, при производительности реального процессора ATmega1284p в 24 Мгц (разгон со штатных 20 Мгц). Во-многом этому поспособствовала реализация кэша инструкций с помощью встроенной в микроконтроллер оперативной памяти, производительностью 5 Мб/с.

С помощью описанных техник на получившейся системе удалось запустить Ubuntu 9.04, загрузка которого до приглашения bash (init=/bin/bash) заняла около двух часов, а загрузка полной версии ОС без X Window до приглашения входа в систему - 4 часа. При это оказалось возможным даже запустить X-сервер и окружение GNOME, но эта операция требует значительно больше времени. Интересно, что по окончанию загрузки система оказалась вполне пригодной к использованию; на выполнение стандартных команд терминала требовалось не больше одной минуты.

Все наработки проекта находятся в публичном доступе. Список используемых компонентов перечислен в самой статье, исходный код программных компонентов можно получить по этой ссылке. Также доступен полный образ диска, готовый к копированию на SD-карту. Видео-демонстрация процесса загрузки и работы опубликована на видео-хостинге vimeo.

Источник »
Главная ссылка к новости »

Был, был и весь вышел...

2

Прикольно, но бесполезно.
Всёравно, что ходить в туалет через игольное ушко ab

3

SkaarjZR пишет:

Прикольно, но бесполезно.Всёравно, что ходить в туалет через игольное ушко

через игольное ушко с эмулятором полноценного унитаза!

95% процентов проблем находятся между клавиатурой и стулом.

4

однозначно интересно, на что только не способны ядро линукс и подобные интузиасты ab

openSUSE 12.3 x86_64 KDE

5

Да уж, следующим будет Тини2313 ab

Истинный hotplug - это обычная электрическая розетка: воткнул - работает, и никаких драйверов.
Arch Linux/Xfce/Xiaomi Mi Notebook Pro 15.6 | Slackware64-current/Xfce/Lenovo G580

6

Nomad_id пишет:

однозначно интересно, на что только не способны ядро линукс и подобные интузиасты ab

Ну так. Можно с ходу целый ряд устройств назвать, куда энтузиасты успешно засунули Linux, при том, что у разработчиков устройств и в мыслях не было туда Linux пихать.
Самым успешным, пожалуй, из таких примеров является Dingux - Linux дистрибутив для Dingoo A320.

Fedora GNOME3

7

Моя жизнь никогда не станет прежней...
ИМХО ему заняться нечем

АХАХХАХААХАХАХХАХАХ!!!11
То есть "Мяу"

8

помоему это и не прикольно и бесполезно. кому нафиг надо чтобы система загружалась 4 часа..

9

Я понимаю, что пока практической пользы от подобных экспериментов никакой, но сама возможность установить Linux хоть на «чайник» — душу греет bx

Был, был и весь вышел...

10

lamazavr пишет:

помоему это и не прикольно и бесполезно. кому нафиг надо чтобы система загружалась 4 часа..

А что, удобно - уходишь на работу - включаешь компьютер, вернулся с работы - а он уже загружен.

11

D_Chu пишет:

А что, удобно - уходишь на работу - включаешь компьютер, вернулся с работы - а он уже загружен.

А пока запускается браузер, можно попить чайку ab

АХАХХАХААХАХАХХАХАХ!!!11
То есть "Мяу"

12

Чем бы дите не тешилось, лишь бы систему пилило нормально)))) xD

OS: Slackware 14.1
Torrent: Transmission 2.44
Browser: Firefox ESR

13

Молодец парень.

14

ИМХО он взял слишком новое ядро, нужно было из ветки 1.х брать, тогда б быстрее грузилось.

Истина ускользает от тех кто отказывается её видеть обоими глазами.
Талантам нужно помогать, бездарности пробьются сами.
В Туле настолько суровые парни, что вместо пены для бритья, используют пену монтажную.
cat /broken/hands > /dev/null

15

Vadimsky
Тогда бы ничего не загрузилось.

16

Darth Revan это почему? или старые ядра слишком стары для старого железа? Пардон за тафтологию.

Истина ускользает от тех кто отказывается её видеть обоими глазами.
Талантам нужно помогать, бездарности пробьются сами.
В Туле настолько суровые парни, что вместо пены для бритья, используют пену монтажную.
cat /broken/hands > /dev/null

17

Vadimsky
Нет, несовместимости могут быть на другом уровне.