Отладочная плата HawkBoard на базе процессора OMAP-L138. Часть 3
Напомним, что все действия будут проводиться в ОС Ubuntu 10.04, которая установлена как гостевая операционная система. В качестве базовой ОС используется Windows XP, а виртуализация осуществляется программой VirtualBox.
Для того чтобы пересобрать ядро Linux для отладочных плат на базе процессора OMAP-L138, необходимо выполнить следующие шаги:
- Установить комплект ПО для процессоров OMAP-L138 (так называемый SDK) компании Texas Instruments (TI), а также инструменты кросс-компиляции CodeSourcery. Эти вопросы были рассмотрены в предыдущей части статьи [2].
- Создать загрузчик U-Boot. Это необходимо сделать в первую очередь, так как создание ядра Linux требует наличие утилиты mkimage, которая получается вместе с созданием U-Boot.
- Создать образ ядра и файловой системы uImage. Как только образ будет создан, можно скопировать его в отладочную плату по TFTP-протоколу. Как это сделать, описано в первой части статьи [1].
Рассмотрим второй и третий шаги более подробно и вначале создадим загрузчик U-Boot. Предполагается, что в гостевой ОС Linux установлены SDK и кросс-компилятор CodeSourcery, кроме того, в переменной окружения $PATH присутствуют все необходимые пути. Если были выполнены рекомендации предыдущей статьи, эти условия выполнены. Убедиться в наличии требуемых значений переменной $PATH (рис. 1, сноска 2) можно выполнив команду echo $PATH (рис. 1, сноска 1) в терминальной программе (консоли) гостевой ОС.

Рис. 1. Проверка переменной $PATH
Исходные файлы для создания U-Boot должны находиться в одной из папок каталога, куда был установлен пакет SDK. В рассматриваемом примере это папка OMAP-L138_arm_1_00_00_11/ DaVinci-PSP-SDK-03.20.00.11/src/u-boot/ в директории пользователя ubuntu. Необходимо запустить консоль и перейти в эту папку. Как это сделать, показано на рис. 2.

Рис. 2. Переход в папку с исходными файлами U-Boot
Выполнив команду ls -l (рис. 3, сноска 1), можно просмотреть содержимое каталога u-boot (рис. 3, сноска 2).

Рис. 3. Содержимое папки u-boot
Необходимо распаковать архив u-boot-03.20.00.11.tar.gz. Данная операция может быть выполнена командой tar, как это показано на рис. 4.

Рис. 4. Запуск распаковки архива с исходными файлами U-Boot
После запуска команды tar в терминале будет отображаться процесс распаковки архива (рис. 5, сноска 1). Когда процесс завершится, можно ввести команду ls -l (рис. 5, сноска 2) и убедиться, что появился новый каталог uboot-03.20.00.11 (рис. 5, сноска 3), где и расположены исходные файлы для создания U-Boot. Теперь требуется перейти в созданный каталог, используя команду cd (рис. 5, сноска 4). Его содержание также можно просмотреть командой ls -l (рис. 5, сноска 5).

Рис. 5. Архив с исходными файлами U-Boot
Для создания загрузчика U-Boot выполняются следующие команды:
make distclean CROSS_COMPILE=arm-none-linux-gnueabi- make da850_omapl138_evm_config CROSS_COMPILE=arm-none-linux-gnueabi- make all CROSS_COMPILE=arm-none-linux-gnueabi- |
Первая команда очищает результаты предыдущих компиляций U-Boot (рис. 6, сноска 1), вторая — конфигурирует новый процесс создания U-Boot (рис. 6, сноска 2) и, наконец, третья — запускает процесс создания U-Boot (рис. 6, сноска 3).

Рис. 6. Создание U-Boot
Результатом является создание файла u-boot.bin, который будет размещен в каталоге uboot-03.20.00.11, то есть в том же каталоге, куда были распакованы исходные файлы для создания U-Boot. Убедиться в том, что файл загрузчика создан, можно выполнив команду ls -l. Результат ее работы показан на рис. 7.

Рис. 7. Результат создания файла загрузчика U-Boot
Выше был описан процесс создания загрузчика U-Boot с настройками по умолчанию. Можно изменить настройки в зависимости от конфигурации отладочной платы и требований ПО. Для этого необходимо скорректировать файл da850_evm.h, который расположен в папке include/configs/ директории uboot-03.20.00.11.
После компиляции утилита mkimage будет присутствовать в папке исходных файлов U-Boot. В рассматриваемом примере это папка /home/ubuntu/OMAP_L138_arm_1_00_00_11/DaVinci-PSP-SDK-03.20.00.11/src/u-boot/uboot-03.20.00.11/tools. Необходимо добавить путь к указанной папке в переменную $PATH, выполнив следующую команду:
export PATH=home/ubuntu/OMAP_L138_arm_1_00_00_11/DaVinci-PSP-SDK-03.20.00.11/src/u-boot/uboot-03.20.00.11/tools:$PATH |
Лучше всего добавить эту строчку в файл ~/.bashrc (рис. 8, сноска 1) и сохранить его (рис. 8, сноска 2). Как это сделать, подробно рассказано в предыдущей части статьи [2].

Рис. 8. Модификация файла “~/.bashrc”
После этого можно задать настройки с помощью команды source ~/.bashrc (рис. 9, сноска 1) и убедиться в том, что путь в переменную $PATH добавлен, с помощью команды echo $PATH (рис. 9, сноска 2).

Рис. 9. Настройка и проверка переменной $PATH
Архив с исходными файлами для создания образа ядра и файловой системы uImage (в рассматриваемом примере это linux-03.20.00.11.tar.gz) располагаются в папке kernel каталога OMAP-L138_arm_1_00_00_11/DaVinci-PSP-SDK-03.20.00.11/src/ домашней директории пользователя ubuntu. Поэтому переходим в папку kernel, используя команду cd (рис. 10, сноска 1), затем убеждаемся в наличии требуемого архива командой ls -l (рис. 10, сноски 2, 3) и распаковываем его командой tar (рис. 10, сноска 4).

Рис. 10. Извлечение исходных файлов для построения образа uImage
После распаковки архива появится новая папка linux-03.20.00.11, где и располагаются исходные файлы. Необходимо перейти в эту папку, используя команду cd (рис. 10, сноска 5), и просмотреть ее содержание командой ls -l (рис. 10, сноски 6, 7).
В зависимости от чипа и используемой отладочной платы возможно изменение конфигурационных установок ядра и файловой системы. Большинство из этих установок включены в файл make, предоставляемый компанией TI, который может служить базовым для создания конфигураций образа uImage. Для начала можно использовать все настройки без изменений.

Рис. 11. Подготовка к созданию образа uImage
Дальнейшие команды создания образа uImage аналогичны командам, используемым при создании загрузчика U-Boot. Вначале необходимо удалить результаты предыдущих компиляций (рис. 11, сноска 1):
make distclean ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- |
Затем производится конфигурация нового процесса создания образа (рис. 11, сноска 2) в зависимости от выбранного типа процессора (в рассматриваемом примере это OMAP-L138):
make da850_omapl138_defconfig ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- |
Следующий шаг — запуск утилиты конфигурации ядра и файловой системы:
make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- menuconfig |
или
make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- xconfig |
При первоначальном знакомстве с процессом компиляции нового образа ядра и файловой системы можно все настройки оставить без изменения. Этим настройкам планируется посвятить отдельную статью, так как этот процесс предполагает установку достаточно большого количества различных опций. И потому сейчас этот шаг пропускается.

Рис. 12. Запуск процесса создания образа uImage
И последнее: запускается процесс создания образа ядра и файловой системы (рис. 12, сноска 1):
make uImage ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- |
Созданный образ uImage размещается в папке arch/arm/boot (рис. 12, сноска 2). Теперь необходимо скопировать образ в место, где его можно использовать для загрузки в отладочную плату по протоколу TFTP. Эти процедуры были описаны в первой части статьи [1].
На этом краткий обзор процесса создания загрузчика, образа ядра и файловой системы закончен. Получить более подробную информацию можно здесь [3].
- Гук И. Отладочная плата HawkBoard на базе процессора OMAP-L138. Часть1 // Компоненты и технологии. 2010. № 7.
- Гук И. Отладочная плата HawkBoard на базе процессора OMAP-L138. Часть 2 // Компоненты и технологии. 2010. № 10.
- http://processors.wiki.ti.com/index.php/GSG:_Building_Software_Components_for_OMAP-L1/AM1x