Skip to content

Latest commit

 

History

History
269 lines (232 loc) · 14.3 KB

Imx53Mainline.wiki

File metadata and controls

269 lines (232 loc) · 14.3 KB

  1. summary u-boot-2013.07, linux-3.9 для плат SK-iMX53

Table of Contents

Введение

Описание для плат SK-iMX53 ревизии V3.B. Ядро взято из BSP tqma53 с патчами Pengutronix, которые не входят в настоящий момент в ванильное ядро (поддержка GPU, LDB, CSI).

  • Внимание* При замене u-boot и ядра на NAND будут утеряны все старые данные, потребуется заново создать ФС.

Настройка переменных окружения

Для кросскомпиляции u-boot и ядра Linux требуется указать кросскомпилятор который будет использоваться и целевую архитектуру. Если вы будете делать в одном терминале - это достаточно сделать один раз.

Если путь к КК не прописан в переменной окружения PATH, укажите полный путь, например для КК Linaro armel который распакован у меня в директории /home/sasa/imx/mainline

imx-usb-loader

Чтобы избавиться от Windows и MFG-tools можно использовать утилиту imx-usb-loader которая позволяет загружать код через USB-OTG работая в Linux. Перед сборкой нужно установить пакет libusb с файлами для разработки, в случае Ubuntu 10.04

для других дистрибутивах - уточните в соответствующих руководствах. Сборка

U-boot

На данный момент u-boot разрабатываемый сообществом намного мощней и гибче устаревшей версии 2009.08 которая поставляется с BSP Freescale, к тому же для полноценной работы для актуальных ядер с kernel.org требуется поддержка Device tree - унифицированный метод описания устройств и конфигурации аппаратных ресурсов.

  • Внимание* С новым u-boot ядро Freescale 2.6.35 стартовать не будет, возможна загрузка нового ядра со старым загрузчиком, это будет описано далее
Сборка образа для загрузки из NAND

копируем его в корень 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

Ядро Linux

Скачиваем и распаковывем архив ванильного ядра с kernel.org, предварительно установите архиватор LZMA, в случае Ubuntu 10.04


Архив с патчами Pengutronix и поддержкой плат Starterkit

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

Конфиг по умолчанию для платы SK-IMX53 (находится в arch/arm/configs/sk_imx53_defconfig)

Сборка

-j2 указывает сколько параллельных потоков при сборке проекта может использовать утилита make. После окончания сборки копируем сжатый образ ядра и блоб device tree с описанием и конфигурацией устройств платы в корень tftp-сервера

  • Примечания*
По умолчанию в dts прописаны тайминги для 7" панели SK-ATM0700D4-Plug, графический вывод через LDB (lvds). Для SDMA и VPU потребуются фирмвари, *фирмвари из BSP Freeacale с новым ядром работать не будут*, взять их можно тут

Их нужно распаковать в директорию /lib корневой системы, например

где rootfs_mnt_point - директория к которой примонтирована корневая ФС. Мне не удалось их подгрузить используя mdev или udev с корневой собранной в buildroot, при этом если использовать systemd в качестве системы инициализации - все работает. Чтобы избавиться от systemd, можно собрать ядро с встроенными прошивками

В опициях конфигуратора выберите такие пункты

После этого пересобрать ядро.

  • Чтобы загрузить новое ядро старым загрузчиком* нужно подготовить специальный образ, необходимые опции включены в конфиге по умолчанию. После сборки ядра, выполните
Предполагается что утилита mkimage есть в путях переменной окружения PATH, например в ubuntu 10.04 можно установить командой

Прошивка u-boot

Для прошивки загрузчика в 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