LinuxForum.Fans
Тема

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

Автор: Lupo_Alberto 17 сообщений 2584 просмотров
#242319

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.

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

#242350

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

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

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

#242453

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

#242472

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

#242550
Nomad_id написал:
однозначно интересно, на что только не способны ядро линукс и подобные интузиасты :)

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

#242575

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

#242617

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

#242618

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

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

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

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

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

#242628

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

#243335

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

#243338

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

#243421

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

#243618

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

#243636

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

Войдите или зарегистрируйтесь, чтобы ответить.