U-Boot и uClinux.

Старт MPU ARM. SAMA5D3 — Xplained.

U-Boot и uClinux.

U-Boot.

U-Boot — универсальный загрузчик ориентированный на встраивание систем на базе архитектур ARM, NIOS II, MIPS и других. Может быть установлен в загрузочную ПЗУ и от туда запущен, является загрузчиком второго уровня (в основном). U-boot ориентирован на запуск Linux, для микроконтроллеров uClinux(может быть использован для загрузки обычных прошивок).

Статья посвящена U-Boot и uClinux. Основной тип операционных систем используемых для микроконтроллеров остается RTOS. При наличии большой бизнес логики используют Linux. Для обеспечения реального времени применяют AMP, RTLinux и др. U-Boot (Universal bootloader) — универсальный загрузчик.

Запуск U-boot на одной из поддерживаемых им плат обычно не требует редактирования исходного кода. Зная, что файл настроек include/configs/»Платформа.h» уже составлен, необходимо выбрать нужную конфигурацию, скомпилировать и записать получившийся образ на загрузочный носитель (NAND, NOR т.д.).

Что касается микроконтроллеров, необходимо значительный объем памяти на микроконтроллере, или поддержка нативной адресации ПЗУ (ROM) со стороны внешней памяти микроконтроллера, в случае отсутствии последнего, bin файл загружается из внешней памяти (NOR, SD и др.) в RAM с нативной адресацией.

Важность Das U-Boot в Embedded Linux системах достаточно лаконично изложена в книге Embedded Linux системы, Карим Ягмур. Текст о U-Boot начинается словами: «Хотя существует довольно много других загрузчиков, Das U-Boot, универсальный загрузчик, возможно, является самым богатым, самым гибким и наиболее активно развивающимся из загрузчиков с открытым исходным кодом». U-boot может использовать следующие файловые системы:

  • Cramfs
  • ext2
  • ext3
  • ext4
  • FAT
  • FDOS
  • JFFS2
  • ReiserFS
  • UBIFS

Для работы с U-Boot и uClinux для микроконтроллеров понадобиться репозиторий с github u-boot.

Все эксперименты будут происходит на базе данного репозитория, в качестве отладочной платы используется stm32f746g-disco и операционная система ubuntu 14.04 (можно использовать иные дистрибутивы Linux).

Для сборки u-boot нам понадобиться GNU Cross-Build Tools (возможно вам придется еще установить ia32-libs).

Распаковываем Cross-Build Tools и добавляем его в PATH.

В конце файла добавляем строку.

Основные директории для нашей отладочной платы:

Для примера изменим файл board.c функцию checkboard.

В директории lib-arm нужно открыть файл config.mk и изменить компилятор на arm-uclinuxeabi (можно передать как аргумент при сборке системы).

Сохраняем файл и в корне каталога выполняем следующею команду.

Затем находим необходимый VCP(COM-порт).

Затем bin файл зашиваем в плату с помощью openocd.

Запускаем sudo minicom -s или запускаем sudo gtkterm и

Embedded Linux для микроконтроллеров. U-Boot.
подключить VCP к Serial 6.

Для читателей которые еще не использовали openocd, переходим по ссылке openocd и скачиваем данный репозиторий к себе на компьютер.

или

uClinux.

Следующим моментом будет настройка tftp сервера.

Настройка tftpd.

Аргумент /srv/tftp команды in.tftpd указывает на каталог в котором будут храниться файлы TFTP сервера. Заменим /srv/tftp на /tftpboot.

Создадим директорию /tftpboot:

Чтобы новые настройки вступили в силу, перезапустим службу inetd:

нужно записать в директорию с проектом networking.uImage (скачиваемым образ с emcraft) и настраиваем окружение для u-boot (нужно воспользоваться командой setenv, saveenv, printenv).

U-Boot и uClinux.

U-Boot и uClinux.

U-Boot и uClinux.

Итого: установили U-Boot и uClinux, собрали исполняемый bin файл и запустили uClinux.