Как разрабатывать ПО для Wiren Board: различия между версиями
Fizikdaos (обсуждение | вклад) |
|||
(не показано 9 промежуточных версий 4 участников) | |||
Строка 1: | Строка 1: | ||
== Общая информация == | |||
'''Замечание:''' эта статья про то, как создавать новое программное обеспечение для Wiren Board, и предназначена для программистов: | |||
* Читайте описание стандартного ПО Wiren Board на странице [[Программное обеспечение Wiren Board|Программное обеспечение Wiren Board]], | |||
''Замечание'' | * Используйте [[Движок правил wb-rules|встроенную систему правил]] для написания правил и сценариев. | ||
* | * Используйте [[Ansible]] для быстрого развёртывания однотипных инсталляций. | ||
* | |||
== Окружение == | |||
Все контроллеры Wiren Board поставляются с полноценным Debian Linux. Архитектура процессора: armhf (Wiren Board 6) или armel (Wiren Board 5 и раньше). | Все контроллеры Wiren Board поставляются с полноценным Debian Linux. Архитектура процессора: armhf (Wiren Board 6) или armel (Wiren Board 5 и раньше). | ||
На контроллере используется libc версии 2.13. | На контроллере используется libc версии 2.13. | ||
Установку ПО рекомендуется производить с помощью пакетного менеджера Debian, и упаковывать ПО в deb-пакеты | Установку ПО рекомендуется производить с помощью пакетного менеджера Debian, и упаковывать ПО в deb-пакеты | ||
== Общие соображения == | |||
В зависимости от комплектации контроллеры Wiren Board 6 имеют 512 или 1024 MB оперативной памяти, контроллеры Wiren Board 7 — 512, 1024 или 2048 MB. Это значит, что необходимо учитывать потребление памяти при разработке своих программ. Про то, как контролировать потребление памяти в Linux читайте на сайте http://www.linuxatemyram.ru/. | |||
== Сборка пакетов и программ == | |||
Сборку программ рекомендуется производить на компьютере с Linux, используя специальное окружение для разработки. | |||
Сборку программ рекомендуется производить на компьютере с Linux, используя специальное | Компиляция и разработка непосредственно на контроллерах Wiren Board не рекомендуется из-за маленького объёма оперативной памяти. | ||
Компиляция и разработка непосредственно на Wiren Board | |||
==== | === Тулчейн (toolchain) === | ||
Если ваша программа не имеет внешних зависимостей от библиотек операционной системы, то для её сборки можно установить тулчейн. | |||
Название тулчейна: | |||
< | * для Wiren Board 6 и выше: '''AArch32 target with hard float (arm-linux-none-gnueabihf)''' | ||
< | * для Wiren Board 5 и ниже: ''' arm-linux-none-gnueabi ''' | ||
Скачать тулчейн для вашей операционной системы можно на сайте [https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-a/downloads ARM.COM] | |||
В дистрибутивах Linux необходимые тулчейны обычно уже доступны как пакеты. Например, для Ubuntu или Debian тулчейн можно установить командой: | |||
<syntaxhighlight lang="bash"> | |||
apt install gcc-arm-linux-gnueabihf | |||
</syntaxhighlight> | |||
=== Окружение для разработки === | |||
Окружение для разработки удобно использовать для сборки программ с внешними зависимостями от системных библиотек, для упаковки программ как Debian-пакетов и для удобной сборки под несколько версий Wiren Board. Это рекомендуемый и самый удобный способ. | |||
Окружение предоставляется в виде Docker-контейнера, а для его использования в Linux существует удобный скрипт <code>wbdev</code>. | |||
При использовании окружения, кросс-компиляция не нужна. Скрипт <code>wbdev</code> автоматически запускает соответствующие команды в виртуализованном окружении с архитектурой armel, соответствующей архитектуре процессора в контроллере Wiren Board. | |||
Сборка пакетов производится с помощью вызова <code>wbdev</code>, например так: | |||
<syntaxhighlight lang="bash"> | |||
$ wbdev chroot #запустить виртуализованное qemu сhroot окружение с Debian 7 архитектуры armel | $ wbdev chroot #запустить виртуализованное qemu сhroot окружение с Debian 7 архитектуры armel | ||
$ wbdev make # вызвать make в виртуализованном qemu chroot окружении | $ wbdev make # вызвать make в виртуализованном qemu chroot окружении | ||
Строка 43: | Строка 54: | ||
$ wbdev gdeb # собрать пакет, написанный на Go, с использованием кросс-компиляции Go | $ wbdev gdeb # собрать пакет, написанный на Go, с использованием кросс-компиляции Go | ||
$ wbdev ndeb # собрать архитектурно-независимый пакет, например содержащий проект на Python | $ wbdev ndeb # собрать архитектурно-независимый пакет, например содержащий проект на Python | ||
</ | </syntaxhighlight> | ||
Полное описание работы с окружением смотрите в [https://github.com/wirenboard/wirenboard/blob/master/README.md документации на Github]. | |||
[ | |||
== Полезные ссылки == | |||
* [[Сборка ядра|Сборка ядра]] | |||
* [[Сборка образов прошивки|Сборка образов прошивки]] | |||
* [[WB_Firmware_Update_Details| Обновление прошивки для разработчиков]] — структура разделов eMMC и сборка собственного fit-файла. | |||
* [[Уникальные идентификаторы|Уникальные идентификаторы]] — для идентификации устройства, привязки софта | |||
* [[CryptodevATECCx08 Auth|Использование встроенного чипа ATECCx08]] — аппаратное хранилище ключей | |||
* [[eMMC flash storage wear level|Узнать степень износа внутреннего накопителя в Wiren Board 5]] | |||
* [[Пересборка Device Tree|Пересборка Device Tree]] |
Текущая версия на 08:45, 18 июля 2024
Общая информация
Замечание: эта статья про то, как создавать новое программное обеспечение для Wiren Board, и предназначена для программистов:
- Читайте описание стандартного ПО Wiren Board на странице Программное обеспечение Wiren Board,
- Используйте встроенную систему правил для написания правил и сценариев.
- Используйте Ansible для быстрого развёртывания однотипных инсталляций.
Окружение
Все контроллеры Wiren Board поставляются с полноценным Debian Linux. Архитектура процессора: armhf (Wiren Board 6) или armel (Wiren Board 5 и раньше). На контроллере используется libc версии 2.13.
Установку ПО рекомендуется производить с помощью пакетного менеджера Debian, и упаковывать ПО в deb-пакеты
Общие соображения
В зависимости от комплектации контроллеры Wiren Board 6 имеют 512 или 1024 MB оперативной памяти, контроллеры Wiren Board 7 — 512, 1024 или 2048 MB. Это значит, что необходимо учитывать потребление памяти при разработке своих программ. Про то, как контролировать потребление памяти в Linux читайте на сайте http://www.linuxatemyram.ru/.
Сборка пакетов и программ
Сборку программ рекомендуется производить на компьютере с Linux, используя специальное окружение для разработки. Компиляция и разработка непосредственно на контроллерах Wiren Board не рекомендуется из-за маленького объёма оперативной памяти.
Тулчейн (toolchain)
Если ваша программа не имеет внешних зависимостей от библиотек операционной системы, то для её сборки можно установить тулчейн.
Название тулчейна:
- для Wiren Board 6 и выше: AArch32 target with hard float (arm-linux-none-gnueabihf)
- для Wiren Board 5 и ниже: arm-linux-none-gnueabi
Скачать тулчейн для вашей операционной системы можно на сайте ARM.COM
В дистрибутивах Linux необходимые тулчейны обычно уже доступны как пакеты. Например, для Ubuntu или Debian тулчейн можно установить командой:
apt install gcc-arm-linux-gnueabihf
Окружение для разработки
Окружение для разработки удобно использовать для сборки программ с внешними зависимостями от системных библиотек, для упаковки программ как Debian-пакетов и для удобной сборки под несколько версий Wiren Board. Это рекомендуемый и самый удобный способ.
Окружение предоставляется в виде Docker-контейнера, а для его использования в Linux существует удобный скрипт wbdev
.
При использовании окружения, кросс-компиляция не нужна. Скрипт wbdev
автоматически запускает соответствующие команды в виртуализованном окружении с архитектурой armel, соответствующей архитектуре процессора в контроллере Wiren Board.
Сборка пакетов производится с помощью вызова wbdev
, например так:
$ wbdev chroot #запустить виртуализованное qemu сhroot окружение с Debian 7 архитектуры armel
$ wbdev make # вызвать make в виртуализованном qemu chroot окружении
$ wbdev cdeb # собрать пакет, написанный на C++ в виртуализованном qemu chroot окружении
$ wbdev gdeb # собрать пакет, написанный на Go, с использованием кросс-компиляции Go
$ wbdev ndeb # собрать архитектурно-независимый пакет, например содержащий проект на Python
Полное описание работы с окружением смотрите в документации на Github.
Полезные ссылки
- Сборка ядра
- Сборка образов прошивки
- Обновление прошивки для разработчиков — структура разделов eMMC и сборка собственного fit-файла.
- Уникальные идентификаторы — для идентификации устройства, привязки софта
- Использование встроенного чипа ATECCx08 — аппаратное хранилище ключей
- Узнать степень износа внутреннего накопителя в Wiren Board 5
- Пересборка Device Tree