Wiren Board 5: Build an image to download in USB Mass-Storage mode: различия между версиями
Lexszero (обсуждение | вклад) (Новая страница: «Эта инструкция описывает, как собрать bootstream для загрузки Linux с USB Mass Storage Gadget. При этом сод…») |
|||
(не показано 17 промежуточных версий 7 участников) | |||
Строка 1: | Строка 1: | ||
Эта инструкция описывает, как собрать bootstream для загрузки Linux с USB Mass Storage Gadget. При этом содержимое SD-карты становится доступно по USB как обычная флешка. | Эта инструкция описывает, как собрать bootstream для загрузки Linux с USB Mass Storage Gadget. При этом содержимое SD-карты становится доступно по USB как обычная флешка. | ||
Структура bootstream: | Структура bootstream: | ||
* '''U-Boot SPL''' - первичный загрузчик, проводит начальную инициализацию | * '''U-Boot SPL''' - первичный загрузчик, проводит начальную инициализацию | ||
Строка 22: | Строка 9: | ||
** '''DTB''' - информация о периферии, необходимая для работы ядра. Дописывается в конец '''zImage''', в конфиге должна быть включена опция ''CONFIG_ARM_APPENDED_DTB'' | ** '''DTB''' - информация о периферии, необходимая для работы ядра. Дописывается в конец '''zImage''', в конфиге должна быть включена опция ''CONFIG_ARM_APPENDED_DTB'' | ||
== Сборка Linux == | |||
* Получить исходники ядра из git, нужна ветка ''v3.19-imx5-x0.1'' | |||
* Получить исходники ядра из git,'' | |||
<nowiki> | <nowiki> | ||
$ git clone https://github.com/contactless/linux.git | $ git clone https://github.com/contactless/linux.git | ||
$ cd linux | $ cd linux | ||
$ git checkout | $ git checkout v3.19-imx5-x0.1</nowiki> | ||
* Скачать | * Скачать и распаковать содержимое initramfs в директорию с исходниками | ||
<nowiki> | <nowiki> | ||
$ | $ wget http://lexs.blasux.ru/dump/initramfs_usbgadget.tar.gz | ||
$ sudo tar xvf initramfs_usbgadget.tar</nowiki> | $ sudo tar xvf initramfs_usbgadget.tar.gz</nowiki> | ||
* Инициализировать окружение для сборки ядра. При необходимости, изменить в этом файле переменные ''DT'' и ''CROSS_COMPILE'' | * Инициализировать окружение для сборки ядра. При необходимости, изменить в этом файле переменные ''DT'' и ''CROSS_COMPILE'' | ||
<nowiki> | <nowiki> | ||
$ . ./scripts/kbuild-env.sh | $ . ./scripts/kbuild-env.sh</nowiki> | ||
* Задать конфиг ядра | * Задать конфиг ядра | ||
<nowiki>$ make mxs_usbgadget_defconfig</nowiki> | <nowiki>$ make mxs_usbgadget_defconfig</nowiki> | ||
Строка 48: | Строка 30: | ||
<nowiki>$ ./scripts/kbuild-dtb.sh</nowiki> | <nowiki>$ ./scripts/kbuild-dtb.sh</nowiki> | ||
== Сборка U-Boot == | == Сборка U-Boot == | ||
* Получить исходники U-Boot из git. Нужна ветка ''wb_v2015.07'' | * Получить исходники U-Boot из git. Нужна ветка ''wb_v2015.07'' | ||
<nowiki> | <nowiki> | ||
Строка 58: | Строка 39: | ||
$ git checkout wb_v2015.07</nowiki> | $ git checkout wb_v2015.07</nowiki> | ||
* Задать конфиг U-Boot | * Задать конфиг U-Boot | ||
<nowiki>$ make | <nowiki>$ make mx28evk_usbgadget_defconfig</nowiki> | ||
* Скопировать ранее собранный образ '''[[ | * Скопировать ранее собранный образ '''[[kernel+initramfs]+DTB]''' в директорию U-Boot | ||
$ cp ../linux/zImage-imx28-evk ./ | <nowiki>$ cp ../linux/zImage-imx28-evk ./</nowiki> | ||
* Собрать совмещенный образ '''[U-Boot+[[kernel+initramfs]+DTB]]''', пригодный для загрузки по USB (bootstream) | * Собрать совмещенный образ '''[U-Boot+[[kernel+initramfs]+DTB]]''', пригодный для загрузки по USB (bootstream) | ||
<nowiki>$ | <nowiki>$ make -j4 u-boot.sb</nowiki> | ||
== Сборка mxsldr == | == Сборка mxsldr == | ||
Эта утилита нужна для загрузки полученного образа по USB. | Эта утилита нужна для загрузки полученного образа по USB. | ||
Требуется установленная библиотека ''libusb-1.0'' (<nowiki>apt-get install libusb-1.0-0-dev</nowiki>) | Требуется установленная библиотека ''libusb-1.0'' (<nowiki>apt-get install libusb-1.0-0-dev</nowiki>) | ||
<nowiki> | |||
<nowiki> | |||
$ cd .. | $ cd .. | ||
$ git clone http://git.denx.de/mxsldr.git | $ git clone http://git.denx.de/mxsldr.git | ||
Строка 79: | Строка 56: | ||
$ make</nowiki> | $ make</nowiki> | ||
== Загрузка собранного образа с помощью mxsldr == | == Загрузка собранного образа с помощью mxsldr == | ||
<nowiki>$ ./mxsldr ../u-boot/u-boot.sb</nowiki> | |||
<nowiki>$ ./mxsldr ../u-boot/u-boot.sb</nowiki | |||
Версия 02:45, 5 августа 2015
Эта инструкция описывает, как собрать bootstream для загрузки Linux с USB Mass Storage Gadget. При этом содержимое SD-карты становится доступно по USB как обычная флешка.
Структура bootstream:
- U-Boot SPL - первичный загрузчик, проводит начальную инициализацию
- U-Boot - собственно загрузчик, запускает Linux
- Образ ядра Linux, состоит из нескольких частей
- zImage - cобственно ядро
- initramfs - файловая система с модулями для поддержки USB gadget, входит в zImage
- DTB - информация о периферии, необходимая для работы ядра. Дописывается в конец zImage, в конфиге должна быть включена опция CONFIG_ARM_APPENDED_DTB
Сборка Linux
- Получить исходники ядра из git, нужна ветка v3.19-imx5-x0.1
$ git clone https://github.com/contactless/linux.git $ cd linux $ git checkout v3.19-imx5-x0.1
- Скачать и распаковать содержимое initramfs в директорию с исходниками
$ wget http://lexs.blasux.ru/dump/initramfs_usbgadget.tar.gz $ sudo tar xvf initramfs_usbgadget.tar.gz
- Инициализировать окружение для сборки ядра. При необходимости, изменить в этом файле переменные DT и CROSS_COMPILE
$ . ./scripts/kbuild-env.sh
- Задать конфиг ядра
$ make mxs_usbgadget_defconfig
- Собрать ядро и модули, установив их в распакованную initramfs
$ INSTALL_MOD_PATH=./initramfs_usbgadget/ ./scripts/kbuild.sh
- Собрать ядро с appended DTB и initramfs
$ ./scripts/kbuild-dtb.sh
Сборка U-Boot
- Получить исходники U-Boot из git. Нужна ветка wb_v2015.07
$ cd .. $ git clone https://github.com/contactless/u-boot.git $ cd u-boot $ git checkout wb_v2015.07
- Задать конфиг U-Boot
$ make mx28evk_usbgadget_defconfig
- Скопировать ранее собранный образ [[kernel+initramfs]+DTB] в директорию U-Boot
$ cp ../linux/zImage-imx28-evk ./
- Собрать совмещенный образ [U-Boot+[[kernel+initramfs]+DTB]], пригодный для загрузки по USB (bootstream)
$ make -j4 u-boot.sb
Сборка mxsldr
Эта утилита нужна для загрузки полученного образа по USB. Требуется установленная библиотека libusb-1.0 (apt-get install libusb-1.0-0-dev)
$ cd .. $ git clone http://git.denx.de/mxsldr.git $ cd mxsldr $ make
Загрузка собранного образа с помощью mxsldr
$ ./mxsldr ../u-boot/u-boot.sb