Статьи

Пример модификации и загрузки образа uImage для SOM-AM180X

Процесс установки и использования программного обеспечения рассматривается на примере операционной системы Ubuntu 12.04 LTS.

1. Настройка конфигурации ядра

Вначале необходимо настроить переменные среды, для чего нужно запустить терминал и выполнить команду:

export PATH=/home/am138/CodeSourcery/Sourcery_G++_Lite/bin:$PATH

Следующий шаг — переход в папку linux-2.6.37-psp03.21.00.04.sdk:

cd ti-dvsdk_omapl138-evm_04_03_00_06/psp/linux-2.6.37-psp03.21.00.04.sdk/

Обратите внимание, команда перехода cd выполняется из директории пользователя. В рассматриваемом примере — это папка am138.

Затем выполняется команда создания конфигурации ядра по-умолчанию:

make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- som_am180x_defconfig

Данные шаги показаны на рис. 1.

Рис. 1. Создание конфигурации ядра по-умолчанию.

Процедура создания конфигурации ядра по-умолканию выполняется сразу после установки комплекта программного обеспечения для работы с отладочным модулем компании Inmys: кросс-компилятора Sourcery G++ Lite 2009q1-203 for ARM и комплекта DVSDK для процессора OMAP L138. Кроме этого, данная процедура может выполняться в случае необходимости восстановить начальную, заданную производителем, конфигурацию ядра.

Теперь требуется установить дополнительный программный пакет libncurses-dev, который необходим для запуска программы конфигурации ядра. Его установка выполняется командой:

sudo apt-get install libncurses-dev

Процесс установки иллюстрирует рис. 2

Рис. 2. Установка пакета libncurses-dev.

Все готова для запуска конфигуратора ядра. Это (см. рис. 3) выполняет команда:

make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- menuconfig

Рис. 3.Запуск конфигурации ядра.

После выполнения команды появится окно конфигуратора ядра, где можно выбрать требуемые опции ядра. Вид окна показан на рис. 4.

Рис. 4. Окно программы конфигурации ядра.

При помощи клавиш курсора и кнопки Enter включаются/выключаются требуемые опции ядра. Выбирая различные пункты меню можно познакомится с настройками ядра по-умолчанию. Анализ критериев выбора выходит за рамки данного примера. Вид терминала после завершения работы с программой конфигурации приведен на рис. 5.

Рис. 5. Вид терминального окна после завершение конфигурации ядра.

2. Сборка нового образа uImage

После того, как была сформирована требуемая конфигурация ядра, можно запустить процесс создания образа uImage при помощи следующей команды:

make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- uImage

Процесс сборки нового образа представлен на рис. 6.

Рис. 6. Процесс создания нового образа uImage.

Наличие нового ядра uImage можно проверить в папке arch/arm/boot/, которая расположена в директории linux-2.6.37-psp03.21.00.04.sdk.

Обратите внимание, если был запущен терминал и в ходе дальнейшей работы предполагается использование кросс-компилятора Sourcery G++ Lite 2009q1-203 for ARM, например для конфигурации ядра по-умолчанию, или для сборки нового ядра, требуется один раз, до использования кросс-компилятора, настроить переменные среды:

export PATH=/home/am138/CodeSourcery/Sourcery_G++_Lite/bin:$PATH

3. Загрузка нового образа uImage в модуль SOM-L138

По-умолчанию, ядро Linux находится nand-памяти, и модуль настроен на загрузку из nand. Для использования нового ядра необходимо загрузить его в память отладочной платы с host-машины, стереть старое ядро и записать на его место новое. Выполнение этого алгоритма требует установки на host-машину какую-либо терминальной программы, а так же tftp-сервера. В рассматриваемом примере — это PuTTY и tftpd-hpa, соответственно. Как установить и использовать указанные программы описано в «Обмен файлами между SOM-L138 и host-машиной».

В начале необходимо подать питание на отладочный модуль, а затем подключить com-кабелем к host-машине, где запустить сервер tftpd-hpa и подключиться к плате по интерфейсу COM при помощи программы PuTTY:

sudo service tftpd-hpa restart

putty &                               

Последовательность выполнения команд и полученный результат показан на рис. 7. В терминале (см. рис. 7 поз. 1) вначале запускается tftp-сервер. В появившемся окне PuTTY (см. рис. 7 поз. 2) загружаются настройки подключения по COM интерфейсу (процесс создание настроек для подключения рассматривался в «Обмен файлами между SOM-L138 и host-машиной») и открывается терминальное окно для этого подключение (см. рис. 7 поз. 3). В нём вводятся логин и пароль для отладочной платы (root и root, соответственно).

Рис. 7. Подключение к SOM-модулю и запуск tftp-сервера.

Следующий шаг — разместить в папке tftp-сервера (в рассматриваемом примере — это /home/tftp/) файл образа uImage. Его можно получить, выполнив рекомендации пунктов 1 и 2 данной статьи, либо запросив соответствующие файлы на сайте разработчиков отладочного модуля. На рис. 8 показано размещение в папке tftp-сервера двух файлов с образами ядра:

  • uImage-def – ядро от разработчиков платы,
  • uImage-new – образ, сформированный в соответствии с п.п. 1 и 2 данной статьи.

Рис. 8. Размещение образов uImage в папке tftp-сервера.

К файлам образов необходимо предоставить полный доступ. Это делается командами (см. рис. 9):

chmod 777 uImage-def

chmod 777 uImage-new

Рис. 9. Предоставление полного доступа к файлам uImage.

Для загрузки нового образа в модуль требуется перевести его в режим u-boot. Выполняется данная процедура перегрузкой платы и остановкой процесса загрузки в требуемый момент. Вначале в терминале подключения к SOM-модулю по интерфейсу COM вводится команда (см. рис. 10 поз. 1):

reboot

Затем, при появлении сообщения «Hit any key to stop autoboot» с обратным отсчётом времени (см. рис. 10 поз. 2), нажимается произвольная кнопка на клавиатуре. Модуль переходит в режим u-boot.

Рис. 10. Переход в режим u-boot.

Теперь требуется соединить отладочную плату и host-машину Eth-кабелем, подключиться к плате по интерфейсу Eth (см. рис. 11 поз. 1), убедиться в подключении (см. рис. 11 поз. 2) и проверить доступность host-машины по сети из SOM-модуля (см. рис. 11 поз. 3). Более подробно работа с модулем по сетевому интерфейсу была рассмотрена в статье «Обмен файлами между SOM-L138 и host-машиной».

Рис. 11. Подключение по интерфейсу Eth.

В терминальном окне подключения к модулю по COM-интерфейсу необходимо ввести команду для проверки переменных окружения (см. рис. 12 поз. 1):

printenv

Рис. 12. Проверка переменных окружения u-boot.

Следует обратить внимание на значения параметров bootfile и serverip. В примере необходимо установить значения uImage-new и 192.168.1.1, соответственно. Это выполняется командами (см. рис. 13. поз. 1):

setenv serverip 192.168.1.1

setenv bootfile uImage-new

После установки переменных проверяется их значения (см. рис. 13. поз. 2):

printenv

Рис. 13.Изменение переменных окружения u-boot.

Обратите внимание, на изменение значений bootfile и serverip (см. рис. 13. поз. 3 и 4).

Следующий шаг — это загрузка образа в память модуля. Загрузка проводится в соответствии со значением переменных окружения bootfile (имя файла с загружаемым образом) и fileadd (адрес памяти модуля, куда будут загружены данные из файла образа). Выполняется командой (см. рис. 14. поз. 1):

tftpboot

Рис. 14. Загрузка образа ядра в память модуля.

Затем необходимо стереть память nand (см. рис. 14. поз. 2):

nand erase 0xa0000 0x400000

где 0xa0000 — начальный адрес памяти,

0x400000 — размер стираемой памяти.

Теперь всё готова для записи образа в память nand. Данное действие определяется командой (см. рис. 14. поз. 3):

nand write.e 0xc0700000 0xa0000 ${filesize}

где 0xc0700000 — адрес памяти, куда был загружен образ из host-машины,

0xa0000 — адрес, куда нужно записать образ,

${filesize} — размер загружаемых данных, определяемый переменной окружения filesize, значение которой автоматически изменяется в соответствии с размером файла при использовании команды tftpboot.

Всё готово. Можно выполнить загрузку Linux с новым ядром (см. рис. 15. поз. 1):

boot

Рис. 15. Загрузка Linux с новым ядро из режима u-boot.

По окончанию загрузки появится приглашение ввести логин и пароль (root и root, соответственно). После авторизации (см. рис. 15. поз. 2) появится приглашение работать в консоли SOM-модуля.

На этом описание создания и загрузки нового образа ядра Linux в SOM-модуль закончено.