Операционная система Linux на отладочной плате BeagleBoard
Плата дает возможность собрать недорогое рабочее место для проектирования устройств на базе двухъ-ядерных процессоров TI семейства OMAP3. Пример такого рабочего места показан на рис. 1. Хотелось бы заметить, что при покупке отладочной платы разработчик получает только плату и ничего больше. Поэтому необходимо докупать необходимые компоненты.
Рис. 1. Пример полнофункционального рабочего места на базе BeagleBoard
Провести общую проверку платы можно следующим образом: соединить 5-пиновым Mini-USB кабелем плату и компьютер. Если все в порядке, то загорается сначала один све-тодиод, а затем, чуть позже, еще два. Кроме того, если подключить спикер или наушники к звуковому выходу, должен быть слышен шум, имитирующий взрыв при включении платы (заметим, на платах ревизии «С» шума нет). Для более полной проверки аппаратных средств можно воспользоваться рекомендациями, приведенными в [2].
Рассмотрим, как запустить операционную систему Linux, расположенную на SD-карте. Для этого, кроме самой отладочной платы, необходимо купить SD-карту, USB-разветвитель c блоком питания, кабель DVI-HDMI, кабель COM-COM для подключения к персональному компьютеру и, последнее, переходник с 10-пинового разъема на плате на COM-порт — AT/Everex. В качестве переходника AT/Everex может быть использован так называемый «вынос» COM-порта с материнской платы на заднюю панель компьютера. Впрочем, его можно изготовить самостоятельно, как это сделать, показано в BeagleBoard System Reference Manual [3] в разделах 10.2 и 13.3. При подготовке данного материала был доработан и БП: выход 5 В был «раздвоен» для того, чтобы иметь возможность питать не только USB-разветвитель, но и непосредственно саму отладочную плату.
Вначале необходимо создать загрузочную SD-карту. Можно использовать любую SD/ SDHC-карту. Автор использовал карту формата SD объемом 2 Гбайт. Следует заметить, что OMAP3 — не x86 процессор, он имеет совершенно другую архитектуру — ARM, поэтому нельзя инсталлировать на карточку обычный дистрибутив Linux.
При создании загрузочной SD/MMS-кар-ты с Linux для OMAP3 необходимо сформировать специальную геометрию в таблице разделов (partition table). Это можно выполнить утилитой fdisk в режиме Expert. Данная утилита запускается в среде Linux. Для программирования цифровых сигнальных процессоров компании TI предназначена отладочная среда Code Composer Studio, работающая в Windows. Поэтому для того чтобы не использовать еще одну машину с системой Linux или не устанавливать еще одну операционную систему на ПК с уже установленной Windows, можно применить виртуальную машину (ВМ). При написании статьи использовалась ВМ VirtualBox [4] с гостевой операционной системой (OC) Ubuntu 9.04 [5]. Описание процесса установки ВМ и запуска в ней операционной системы Ubuntu выходит за рамки статьи, но они просты и хорошо документированы. Достаточное количество информации по данному вопросу можно найти в Интернете при поиске по ключевому слову VirtualBox. Особое внимание следует обратить на подключение к виртуальной машине USB-накопителей, а также на использование общих (для основной и гостевой ОС) папок.
Необходимо подключить к персональному компьютеру (ПК) карт-ридер с вставленной в него SD-картой, запустить VitrualBox, установить в нее гостевую операционную систему, подключить к ВМ карт-ридер с SD-картой (это делается через меню ВМ), затем запустить в ней гостевую ОС. В гостевой ОС (в качестве которой, напомним, мы использовали Ubuntu 9.04) запустить терминал.
Первой командой в терминале запускаем утилиту fdisk для SD-карты:
sudo fdisk /dev/sdb
Слово sudo показывает, что команда запускается от имени пользователя root, при этом может понадобиться введение пароля суперпользователя для первого запуска команды. При введении пароля он не отображается даже звездочками, а после его введения необходимо нажать клавишу Enter. Результат работы показан на рис. 2.
Рис. 2. О чистка таблицы разделов
Следующая команда — «p». Ввести ее необходимо там, где мигает курсор — «Команда (m для справки): _». Нажмите соответствующую клавишу, а затем Enter. Команда предназначена для получения информации о карте. Результат ее работы показан на рис. 3. Запомните размер карты в байтах (в нашем примере — 2013265920). Это значение нам пригодится чуть позже.
Рис. 3. Информация о SD-карте
Переведем утилиту fdisk в режим Expert. Для этого вводим команду «x». Результат показан на рис. 4.
Рис. 4. Перевод утилиты fdisk в режим Expert
Необходимо установить следующую гео метрию таблицы разделов:
- количество головок — 255;
- количество секторов — 63;
- количество цилиндров, рассчитанное по формуле:
C = B/255/63/512,
где В — размер карты в байтах; 512 — количество байтов на сектор.
В рассматриваемом примере количество цилиндров равно 244,76, округляем в меньшую сторону и получаем 244.
Требуемая геометрия формируется последовательным вводом команд «h», «s» и «c», соответственно, для головок, секторов и цилиндров. После каждой команды вводится соответствующее число. Как это сделать, показано на рис. 5.
Рис. 5. Формирование требуемой геометрии таблицы разделов
Теперь необходимо создать два раздела: один для загрузочного образа (boot image), второй — для файловой системы (root file system). Первый необходим в формате FAT32, второй — это раздел Linux, его конкретный тип будет указан позднее при форматировании.
Вначале перейдем в основное меню утилиты fdisk, для чего введем команду «r». Так как наша SD-карта уже содержит раздел, то необходимо его уничтожить. Это выполняется командой «d». Затем необходимо создать новый раздел — команда «n». Определяем, что это основной раздел — команда «p», с номером «1», номер первого цилиндра создаваемого раздела — «1», номер последнего — «+50». Следующий шаг — определение типа файловой системы: вводим команду «t», выбираем первый раздел и указываем тип раздела — команда «c». Последнее — делаем данный раздел загрузочным: вводим команду «a» и указываем номер раздела. Последовательность действий показана на рис. 6.
Рис. 6. Формирование раздела FAT32
Небольшое замечание. Введя команду «m», можно получить краткую справку по всем командам. Результат выполнения этой команды показан на рис. 7. Следует понимать, что наборы команд в различных режимах работы утилиты fdisk отличаются друг от друга. Например, введя команду «L» вместо команды «с» (рис. 6), можно получить полный перечень возможных типов файловой системы.
Рис. 7. Краткая справка по командам утилиты fdisk в обычном режиме
Теперь создадим второй раздел. Поступаем аналогичным образом, как и при создании первого раздела. Последовательность действий показана на рис. 8. Обратите внимание, что номер раздела — «2», явно не определяется тип раздела (по умолчанию он будет тем, который нам необходим). Кроме того, если вводимое значение совпадает со значением по умолчанию, можно просто нажимать клавишу Enter (это видно на примере определения номеров первого и последнего цилиндров на рис. 8).
Рис. 8. Формирование раздела Linux
Теперь необходимо сохранить запись о новой геометрии таблицы разделов SD-карты. Вначале введем команду «p», чтобы убедиться в создании правильной таблицы разделов, а затем команду «w» для ее записи на SD-карту. Очень важно! Все, что было записано на SD-карте, будет уничтожено. До этого момента все изменения носили виртуальный характер: всегда можно было выйти из утилиты fdisk без сохранения результатов работы при помощи команды «q». Результат выполнения данного шага показан на рис. 9.
Рис. 9. Запись таблицы разделов на SD-карту
Следующий шаг — форматирование созданных разделов. Прежде всего, необходимо перегрузить гостевую ОС Ubuntu 9.04 и вновь запустить терминал. Теперь, используя команды mkfs.msdos и mkfs.ext3, проведем форматирование разделов. Эта операция показана на рис. 10. Опции команд достаточно очевидны: sudo — запуск от имени суперпользователя, -F 32 — тип файловой системы FAT32, -n BOOT и -L LINUX — метки разделов, /dev/sdb1 и /dev/sdb2 — форматируемые разделы.
Рис. 10. Форматирование разделов SD-карты
Снова перегрузите гостевую ОС. При повторной ее загрузке произойдет автоматическое монтирование двух созданных разделов. Они будут отображаться на рабочем столе гостевой системы. Это показано на рис. 11.
Рис. 11. Вид гостевой OC Ubuntu 9.04 с подключенными разделами SD-карты
Щелкните правой кнопкой мыши на подключенном разделе SD-карты (например, на разделе BOOT), в контекстном меню выберите пункт «Свойства» и в появившемся окне перейдите на вкладку Volume. Этот шаг показан на рис. 12. Здесь можно посмотреть точку подключения раздела. Повторите аналогичную процедуру для другого раздела SD-карты.
Рис. 12. Определение точки подключения раздела BOOT на SD-карте
Для описываемого примера разделы BOOT и LINUX подключены в точках /media/BOOT и /media/LINUX соответственно. Необходимо скопировать на эти разделы загрузочный образ и файловую систему. Понадобятся следующие файлы:
- Angstrom-Beagleboard-demo-image-X.X.X.X.bz2;
- MLO;
- u-boot.bin;
- uImage.
Последние версии этих файлов можно найти в [6].
На рис. 13 показана страница загрузки и отмечены файлы, которые использовались при написании статьи.
Рис. 13. Страница загрузки образа и файловой системы
Указанные файлы необходимо скачать и перенести в гостевую OC. Для этого существует такой механизм виртуализации, как общие папки. Такая папка будет видна и в главной машине, и в виртуальной. Или можно записать скаченные файлы на USB-Flash, подключить ее к виртуальной машине, как это было сделано для карт-ридера с SD-картой. При написании статьи использовался механизм общих папок (с точкой подключения /mnt/SHARE).
В терминале гостевой ОС необходимо перейти в общую папку со всеми необходимыми файлами (это выполняется командой cd /mnt/SHARE) и скопировать их на разделы SD-карты (команда sudo cp с именем копируемого файла и указанием места, куда необходимо скопировать). Файлы MLO, u-boot.bin и uImage копируются на раздел BOOT, и именно в той последовательности, как они перечисляются, — это очень важно, так как MLO должен быть в первых секторах карты. Архив Angstrom-Beagleboard-demo-image-X.X.X.X.bz2 копируется на раздел LINUX, а затем распаковывается командой sudo tar…. Необходимо распаковывать его непосредственно на SD-карте, нельзя это делать где-то в другом месте и затем скопировать на карту. Данный этап формирования загрузочной SD-карты показан на рис. 14.
Рис. 14. Окончательное формирование загрузочной SD-карты
При запуске команды sudo tar… в терминале отображается процесс распаковки, когда он завершится, можно удалить исходный архив командой sudo rm…, как это показано на рис. 15.
Рис. 15. Процесс распаковки и удаление исходного архива
На этом формирование загрузочной SD-карты с требуемой для процессоров семейства OMAP3 геометрией разделов завершено. Следующий шаг — это установка на отладочной плате BeagleBoard режима загрузки с SD-карты.
Вначале нужно собрать минимальную конфигурацию рабочего места. Для этого необходимы сама отладочная плата BeagleBoard, блок питания (БП) для нее, кабель COM-COM для подключения к ПК, переходник AT/Everex. На ПК требуется любая программа для работы с COM-портом. При написании статьи использовалась Tera Term Pro. Эта программа написана на языке C+ программистом из Японии. Программа работает стабильно и довольно распространена. Скачать можно с сайта разработчика [7].
Ознакомиться с основными возможностями программы можно на русскоязычной страничке Википедии [8].
Скачайте и установите программу. При первом запуске установите подключение к COM-порту, как это показано на рис. 16, и нажмите кнопку OK для сохранения настроек.
Рис. 16. Первый запуск программы Tera Term Pro
После этого производится настройка подключения по последовательному порту: в главном меню программы Tera Term Pro нужно выбрать пункт Setup, а в выпадающем меню — Serial port.. Появится окно, где необходимо установить следующие параметры: Port — COM1, Baunt rate — 115200, Data — 8, Parity — none, Stop — 1, Flow control — none, Transmit delay — 0 и 100 в первом и втором окне соответственно. Данный этап работы показан на рис. 17. Отметим, что выбор номера COM-порта определяется конкретной конфигурацией ПК. В рассматриваемом примере подключение отладочной платы произ водилось к порту COM1
Рис. 17. Настройка последовательного подключения программы Tera Term Pro
Чтобы не вводить настройки при последующих запусках программы, сохраните их через главное меню — Setup->Save setup.. Появится окно с предложением указать имя файла настроек (рис. 18). Не меняйте предложенное имя TERATERM.ini, тогда введенные параметры будут настройками по умолчанию.
Рис. 18. Сохранение настроек программы Tera Term Pro
Теперь необходимо собрать рабочее место на основе отладочной платы BeagleBoard, подключив ее кабелем COM-COM через переходник AT/Everex к COM1 компьютера, и включить, подсоединив БП. К этому времени программа Tera Term Pro должна быть уже запущена на ПК. В окне Tera Term Pro отобразится информация о загрузке. Для перехода в режим настройки начальной загрузки в момент появления сообщения Hit any key to stop autoboot: необходимо нажать любую клавишу на клавиатуре ПК до того, как закончится обратный отсчет. Обратный отсчет остановится, и появится приглашение для работы — OMAP3 beagleboard. org #. Описанный процесс показан на рис. 19.
Рис. 19. Режим настройки начальной загрузки платы BeagleBoard
Теперь можно настроить загрузку с SD-карты. Для этого необходимо определить две переменные: bootargs и bootcmd. Определяются переменные командой setenv. Для переменной bootargs необходимо установить значение ‘console=ttyS2,115200n8 root=/dev/mmcblk0p2 rw rootwait’, а для переменной bootcmd — ‘mmc init;fatload mmc 0 80300000 uImage;bootm 80300000’. Обратите внимание! Значение переменных вводится в одинарных кавычках. Если произошла ошибка при вводе значения переменной, то можно удалить переменную при помощи все той же команды setenv, указав в качестве параметра только имя удаляемой переменной. Чтобы не вводить параметры каждый раз при включении отладочной платы, необходимо сохранить их в памяти NAND Flash. Эту операцию выполняет команда saveenv. Процесс настройки начальной загрузки показан на рис. 20.
Рис. 20. Настройка начальной загрузки платы BeagleBoard с SD-карты
Теперь необходимо вставить в соответствующий разъем отладочной платы BeagleBoard подготовленную ранее загрузочную карту SD с операционной системой Linux и нажать кнопку RESET на плате, удерживая при этом кнопку USER. Данные кнопки являются единственными на плате, к тому же они имеют соответствующие надписи, поэтому найти их несложно. Процесс загрузки показан на рис. 21.
Рис. 21. Загрузка ОС Linux на плате BeagleBoard с SD-карты
Удерживание кнопки USER меняет порядок загрузки и устанавливает начальную загрузку с SD-карты. Так как в памяти NAND Flash отладочной платы BeagleBoard изначально нет никакой операционной системы, можно было просто нажать кнопку RESET, но тогда загрузка произошла бы чуть медленнее, так как вначале плата попыталась бы загрузить ОС из памяти NAND Flash.
При загрузке слышен звук из динамиков ПК, а по окончании процесса должно появиться приглашение ввести пароль пользователя. Необходимо ввести только имя root и нажать клавишу Enter. Пароль пользователя root изначально отсутствует (пустой пароль). Этот этап отражен на рис. 22.
Рис. 22. Приглашение ввести пароль пользователя root
Может произойти сбой терминальной программы Tera Term Pro, который проявляется в том, что после загрузки ОС искажаются символы. Эта ситуация показана на рис. 23. Сбой связан с конкретной сборкой ядра и файловой системы. Если перезапустить терминал или произвести программный сброс терминала через меню Control программы Tera Term Pro, а затем нажать Enter на клавиатуре ПК, то правильное отображение символов восстановится.
Рис. 23. Сбой программы Tera Term Pro
Дальнейшие эксперименты с отладочной платой и установленной на ней операционной системой Linux связаны с подключением монитора, клавиатуры и мыши. Мышь, клавиатура и другие USB-устройства подключаются к USB-порту отладочной платы через USB-концентратор с отдельным блоком питания, так как мощности самого USB-порта может не хватить.
Соберите рабочее место на основе отладочной платы BeagleBoard, включающее саму плату, мышь и клавиатуру, подключенные через USB-концентратор, а также монитор с DVI-входом и колонки, имеющие свой блок питания. Подключение через COM-порт к ПК необязательно. Включите питание BeagleBoard, монитора, USB-концентратора и колонок. Теперь можно наблюдать экран загрузки, показанный на рис. 24.
Рис. 24. Экран загрузки ОС Linux
Затем появляется экран определения нового пользователя (рис. 25), где необходимо ввести имя и пароль. В дальнейшем появится возможность входить или как пользователь root, или как простой пользователь, имя и пароль которого сейчас определяются.
Рис. 25. Определение нового пользователя
Необходимо отметить, что изначально пользователь root не имеет пароля, и при входе в качестве пользователя root это поле нужно оставлять пустым.
После нажатия кнопки OK (рис. 25) появится рабочий стол Linux (рис. 26). Это полноценная среда с графическим интерфейсом, позволяющая обрабатывать офисные документы, изображения, просматривать фильмы, слушать музыку, заниматься интернет-серфингом (при наличии дополнительного модуля, позволяющего подключить Интернет на USB-порт) и т. д.
Рис. 26. Рабочий стол Linux
На этом краткое описание процесса инсталляции операционной системы Linux на отладочную плату BeagleBoard окончено.
Литература
- http://dkc1.digikey.com/us/en/mkt/beagleboard.html
- http://code.google.com/p/beagleboard/wiki/BeagleboardRevCValidation
- http://beagleboard.org/static/BBSRMJatest.pdf
- www.virtualbox.org
- www.ubuntu.com
- http://www.angstrom-distribution.org/demo/beagleboard/
- http://ttssh2.sourceforge.jp
- http://ru.wikipedia.org/wiki/TeraTermPro