Wiren Board 5: Build an image to download in USB Mass-Storage mode: различия между версиями

Материал из Wiren Board
 
(не показано 15 промежуточных версий 7 участников)
Строка 1: Строка 1:
<languages/>
<translate>
<!--T:1-->
{{DISPLAYTITLE: Сборка образа для загрузки в режиме USB Mass-Storage}}
== Совместимость ==
Инструкция актуальна только для контроллера [[Wiren Board 5]], информацию о прошивке других версий контроллера читайте на странице [[Wiren_Board_Software | Программное обеспечение Wiren Board]].
== Описание ==
Эта инструкция описывает, как собрать bootstream для загрузки Linux с USB Mass Storage Gadget. При этом содержимое SD-карты становится доступно по USB как обычная флешка.
Эта инструкция описывает, как собрать bootstream для загрузки Linux с USB Mass Storage Gadget. При этом содержимое SD-карты становится доступно по USB как обычная флешка.


Готовые собранные файлы и работа с ними описываются в [[Wiren Board 5: Восстановление прошивки]].
<!--T:2-->
Структура bootstream:
Структура bootstream:
* '''U-Boot SPL''' - первичный загрузчик, проводит начальную инициализацию
* '''U-Boot SPL''' - первичный загрузчик, проводит начальную инициализацию
Строка 9: Строка 22:
** '''DTB''' - информация о периферии, необходимая для работы ядра. Дописывается в конец '''zImage''', в конфиге должна быть включена опция ''CONFIG_ARM_APPENDED_DTB''
** '''DTB''' - информация о периферии, необходимая для работы ядра. Дописывается в конец '''zImage''', в конфиге должна быть включена опция ''CONFIG_ARM_APPENDED_DTB''


== Сборка Linux ==
<!--T:3-->
[https://github.com/contactless/wirenboard/tree/https://github.com/contactless/wirenboard/blob/master/contrib/u-boot/wb5_usbfw.sb Скачать готовый bootstream]


* Получить исходники ядра из git, нужна ветка ''v3.19-imx5-x0.1''
== Сборка Linux == <!--T:4-->
 
<!--T:5-->
* Получить исходники ядра из 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 v3.19-imx5-x0.1</nowiki>
$ git checkout dev/v4.1.15 </nowiki>
* Скачать initramfs по [https://github.com/contactless/linux/releases/download/untagged-549d7245be70b24d7b1e/initramfs_usbgadget.zip ссылке] и распаковать
* Скачать initramfs из [https://github.com/contactless/wirenboard/tree/master/initramfs_usbgadget репозитория] и распаковать
  <nowiki>
  <nowiki>
$ unzip initramfs_usbgadget.zip
$ unzip initramfs_usbgadget.zip
Строка 22: Строка 39:
* Инициализировать окружение для сборки ядра. При необходимости, изменить в этом файле переменные ''DT'' и ''CROSS_COMPILE''
* Инициализировать окружение для сборки ядра. При необходимости, изменить в этом файле переменные ''DT'' и ''CROSS_COMPILE''
  <nowiki>
  <nowiki>
$ . ./scripts/kbuild-env.sh</nowiki>
$ . ./scripts/kbuild-env.sh
$ set +e</nowiki>
* Задать конфиг ядра
* Задать конфиг ядра
  <nowiki>$ make mxs_usbgadget_defconfig</nowiki>
  <nowiki>$ make mxs_usbgadget_defconfig</nowiki>
Строка 30: Строка 48:
  <nowiki>$ ./scripts/kbuild-dtb.sh</nowiki>
  <nowiki>$ ./scripts/kbuild-dtb.sh</nowiki>


== Сборка U-Boot ==
== Сборка U-Boot == <!--T:6-->


<!--T:7-->
* Получить исходники U-Boot из git. Нужна ветка ''wb_v2015.07''
* Получить исходники U-Boot из git. Нужна ветка ''wb_v2015.07''
  <nowiki>
  <nowiki>
Строка 39: Строка 58:
$ git checkout wb_v2015.07</nowiki>
$ git checkout wb_v2015.07</nowiki>
* Задать конфиг U-Boot
* Задать конфиг U-Boot
  <nowiki>$ make mx28evk_usbgadget_defconfig</nowiki>
  <nowiki>$ make mx28_wirenboard5_usbgadget_defconfig</nowiki>
* Скопировать ранее собранный образ '''[[kernel+initramfs]+DTB]''' в директорию U-Boot
* Скопировать ранее собранный образ '''[[Special:MyLanguage/kernel+initramfs]+DTB]''' в директорию U-Boot
  <nowiki>$ cp ../linux/zImage-imx28-evk ./</nowiki>
  $ cp ../linux/zImage-imx28-evk ./zImage
* Собрать совмещенный образ '''[U-Boot+[[kernel+initramfs]+DTB|kernel+initramfs]+DTB]''' в директорию U-Boot
$ cp ../linux/zImage-imx28-evk ./zImage
* Собрать совмещенный образ '''[U-Boot+[[kernel+initramfs]+DTB]]''', пригодный для загрузки по USB (bootstream)
* Собрать совмещенный образ '''[U-Boot+[[kernel+initramfs]+DTB]]''', пригодный для загрузки по USB (bootstream)
  <nowiki>$ make -j4 u-boot.sb</nowiki>
  <nowiki>$ CROSS_COMPILE='arm-linux-gnueabi-' make -j4 u-boot.sb</nowiki>


== Сборка mxsldr ==
== Сборка mxsldr == <!--T:8-->


<!--T:9-->
Эта утилита нужна для загрузки полученного образа по 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>
  <!--T:10-->
<nowiki>
$ cd ..
$ cd ..
$ git clone http://git.denx.de/mxsldr.git
$ git clone http://git.denx.de/mxsldr.git
Строка 56: Строка 79:
$ make</nowiki>
$ make</nowiki>


== Загрузка собранного образа с помощью mxsldr ==
== Загрузка собранного образа с помощью mxsldr == <!--T:11-->


  <nowiki>$ ./mxsldr ../u-boot/u-boot.sb</nowiki>
  <!--T:12-->
<nowiki>$ ./mxsldr ../u-boot/u-boot.sb</nowiki>
</translate>

Текущая версия на 17:32, 20 декабря 2023

Другие языки:


Совместимость

Инструкция актуальна только для контроллера Wiren Board 5, информацию о прошивке других версий контроллера читайте на странице Программное обеспечение Wiren Board.

Описание

Эта инструкция описывает, как собрать bootstream для загрузки Linux с USB Mass Storage Gadget. При этом содержимое SD-карты становится доступно по USB как обычная флешка.

Готовые собранные файлы и работа с ними описываются в Wiren Board 5: Восстановление прошивки.

Структура bootstream:

  • U-Boot SPL - первичный загрузчик, проводит начальную инициализацию
  • U-Boot - собственно загрузчик, запускает Linux
  • Образ ядра Linux, состоит из нескольких частей
    • zImage - cобственно ядро
    • initramfs - файловая система с модулями для поддержки USB gadget, входит в zImage
    • DTB - информация о периферии, необходимая для работы ядра. Дописывается в конец zImage, в конфиге должна быть включена опция CONFIG_ARM_APPENDED_DTB

Скачать готовый bootstream

Сборка Linux

  • Получить исходники ядра из git,
$ git clone https://github.com/contactless/linux.git
$ cd linux
$ git checkout dev/v4.1.15 
$ unzip initramfs_usbgadget.zip
$ sudo tar xvf initramfs_usbgadget.tar
  • Инициализировать окружение для сборки ядра. При необходимости, изменить в этом файле переменные DT и CROSS_COMPILE
$ . ./scripts/kbuild-env.sh
$ set +e
  • Задать конфиг ядра
$ 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 mx28_wirenboard5_usbgadget_defconfig
  • Скопировать ранее собранный образ [[Special:MyLanguage/kernel+initramfs]+DTB] в директорию U-Boot
$ cp ../linux/zImage-imx28-evk ./zImage
  • Собрать совмещенный образ [U-Boot+[[kernel+initramfs]+DTB|kernel+initramfs]+DTB] в директорию U-Boot
$ cp ../linux/zImage-imx28-evk ./zImage
  • Собрать совмещенный образ [U-Boot+[[kernel+initramfs]+DTB]], пригодный для загрузки по USB (bootstream)
$ CROSS_COMPILE='arm-linux-gnueabi-' 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