- summary u-boot-2013.07, linux-3.9 для плат SK-iMX53
Описание для плат SK-iMX53 ревизии V3.B. Ядро взято из BSP tqma53 с патчами Pengutronix, которые не входят в настоящий момент в ванильное ядро (поддержка GPU, LDB, CSI).
- Внимание* При замене u-boot и ядра на NAND будут утеряны все старые данные, потребуется заново создать ФС.
Для кросскомпиляции u-boot и ядра Linux требуется указать кросскомпилятор который будет использоваться и целевую архитектуру. Если вы будете делать в одном терминале - это достаточно сделать один раз.
Если путь к КК не прописан в переменной окружения PATH, укажите полный путь, например для КК Linaro armel который распакован у меня в директории /home/sasa/imx/mainline
Чтобы избавиться от Windows и MFG-tools можно использовать утилиту imx-usb-loader которая позволяет загружать код через USB-OTG работая в Linux. Перед сборкой нужно установить пакет libusb с файлами для разработки, в случае Ubuntu 10.04
для других дистрибутивах - уточните в соответствующих руководствах. Сборка
На данный момент u-boot разрабатываемый сообществом намного мощней и гибче устаревшей версии 2009.08 которая поставляется с BSP Freescale, к тому же для полноценной работы для актуальных ядер с kernel.org требуется поддержка Device tree - унифицированный метод описания устройств и конфигурации аппаратных ресурсов.
- Внимание* С новым u-boot ядро Freescale 2.6.35 стартовать не будет, возможна загрузка нового ядра со старым загрузчиком, это будет описано далее
копируем его в корень tftp сервера чтобы была возможность обновить его по сети
Собираем образ u-boot для загрузки через USB-OTG порт
- Примечания*
Файлы cпецифичные для плат starterkit находятся в директории
Конфиг для платы SK-IMX53
Частоту ядра можно изменить в конфиге, возможные значения 800, 1000 и 1200 МГц
В конфиге прописаны переменные окружения, которые вы можете изменить под свои нужды.
По умолчанию параметры передаваемые ядру предполагают что корневая ФС находится в NAND
определяет границы разделов NAND для u-boot и читаемыые имена. Это удобно для написания загрузочных скриптов - не нужно помнить числа. Например скрипт обновления u-boot по tftp выглядит так
здесь mtdparts default делает "видимыми" имена разделов прописанных по умолчанию для команд работающих с подсистемой MTD, после этого к разделам можно обращаться по именам, в частности nand erase.part bootloader очищает раздел содержащий загрузчик. Я не нашел - можно ли эту таблицу разделов автоматически передать ядру, поэтому аналогичная таблица прописана в device tree, исходники которого находятся в ядре linux-3.9/arch/arm/boot/dts/imx53-sk.dts
Скачиваем и распаковывем архив ванильного ядра с kernel.org, предварительно установите архиватор LZMA, в случае Ubuntu 10.04
Архив с патчами Pengutronix и поддержкой плат Starterkit
для простоты в архиве есть скрипт для наложения серии патчей, запускаем его
Конфиг по умолчанию для платы SK-IMX53 (находится в arch/arm/configs/sk_imx53_defconfig)
Сборка
-j2 указывает сколько параллельных потоков при сборке проекта может использовать утилита make. После окончания сборки копируем сжатый образ ядра и блоб device tree с описанием и конфигурацией устройств платы в корень tftp-сервера
- Примечания*
Их нужно распаковать в директорию /lib корневой системы, например
где rootfs_mnt_point - директория к которой примонтирована корневая ФС. Мне не удалось их подгрузить используя mdev или udev с корневой собранной в buildroot, при этом если использовать systemd в качестве системы инициализации - все работает. Чтобы избавиться от systemd, можно собрать ядро с встроенными прошивками
В опициях конфигуратора выберите такие пункты
После этого пересобрать ядро.
- Чтобы загрузить новое ядро старым загрузчиком* нужно подготовить специальный образ, необходимые опции включены в конфиге по умолчанию. После сборки ядра, выполните
Для прошивки загрузчика в NAND специальная утилита Freescale kobs-ng больше не требуется. Это можно сделать двумя способами
1 Используя Linux и набор утилит mtdutils.
Включить плату и залогиниться в терминале. Загрузить образ по tftp
прошить образ
2 Используя u-boot загруженный через USB-OTG.
Этот способ позволяет восстановить содержимое NAND "с нуля". Для загрузки потребуется кабель USB AM-AM, патч-корд ethernet для загрузки файлов по tftp, для ввода команд u-boot - эмулятор терминала работающий через последовательный порт.
* Отключите питание платы * Разомкните перемычки J13, J14 чтобы изолировать цепь +5 В USB от БП * Разомкните перемычку J7 (NAND CS) чтобы активировать протокол последовательной загрузки через USB * Соедините кабелем USB AM-AM отладочную плату (разъем X16) c PC * Включите питание платы с БП * Проверьте, что процессор перешел в режим последовательной загрузки, для этого на PC с Linux просмотрите имеющиеся устройства USB
* Замкните перемычку J7 (NAND CS) * Выполните команду на PC с Linux
* в эмуляторе терминала должны появиться сообщения u-boot и 3 секундный отсчет перед загрузкой системы, нужно остановить загрузку нажатием любой клавиши * чтобы загрузить по tftp и прошить новый загрузчик в NAND, введите команду в консоли u-boot
этой же командой можно обновить u-boot если в NAND уже прошита новая версия.
Чтобы загрузить ядро по tftp и записать на NAND, выполните скрипт в u-boot
Для обновления бинарного файла device tree
Чтобы загрузить по tftp и записать имидж корневой ФС UBIFS, выполните скрипт в u-boot
предполагается что имидж имеет название rootfs.ubi. Чтобы получить его автоматически при сборке buildroot необходимо в конфигураторе buildroot укзать что нужно его создать
и указать параметры NAND
Для теста можно воспользоваться готовой корневой tqma53 Там есть патченый gstreamer-0.11 для работы с VPU, к сожалению мне не удалось вывести на экран видео как описано у них в wiki