Как разрабатывать ПО для Wiren Board: различия между версиями

Материал из Wiren Board
(не показано 9 промежуточных версий 5 участников)
Строка 1: Строка 1:
== Общая информация ==
<languages/>
'''Замечание:''' эта статья про то, как создавать новое программное обеспечение для Wiren Board, и предназначена для программистов:
<translate>
* Читайте описание стандартного ПО Wiren Board на странице [[Программное обеспечение Wiren Board|Программное обеспечение Wiren Board]],
<!--T:1-->
* Используйте [[Движок правил wb-rules|встроенную систему правил]] для написания правил и сценариев.
''Замечание'': эта статья про то, как создавать новое программное обеспечение для Wiren Board, и предназначена для программистов;
* Используйте [[Ansible]] для быстрого развёртывания однотипных инсталляций.
*стандартное программное обеспечение Wiren Board - [[Special:MyLanguage/Программное обеспечение Wiren Board|Программное обеспечение Wiren Board]],
*для написания правил и сценариев воспользуйтесь [[Special:MyLanguage/Движок правил wb-rules|встроенной системой правил]].


== Окружение ==  
=== Окружение === <!--T:2-->


<!--T:3-->
Все контроллеры 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.


<!--T:4-->
Установку ПО рекомендуется производить с помощью пакетного менеджера Debian, и упаковывать ПО в deb-пакеты
Установку ПО рекомендуется производить с помощью пакетного менеджера Debian, и упаковывать ПО в deb-пакеты


== Общие соображения ==  
=== Общие соображения === <!--T:5-->


В зависимости от комплектации контроллеры Wiren Board 6 имеют 512 или 1024 MB оперативной памяти, контроллеры Wiren Board 7 — 512, 1024 или 2048 MB. Это значит, что необходимо учитывать потребление памяти при разработке своих программ. Про то, как контролировать потребление памяти в Linux читайте на сайте http://www.linuxatemyram.ru/.
<!--T:6-->
Контроллеры Wiren Board имеют, в зависимости от модели, от 64 до 512MB оперативной памяти. Это значит, что необходимо учитывать потребление памяти при разработке своих программ. Про то, как контролировать потребление памяти в Linux, см. сайт http://www.linuxatemyram.ru/.


== Сборка пакетов и программ ==  
=== Сборка пакетов и программ === <!--T:7-->


Сборку программ рекомендуется производить на компьютере с Linux, используя специальное окружение для разработки.
<!--T:8-->
Компиляция и разработка непосредственно на контроллерах Wiren Board не рекомендуется из-за маленького объёма оперативной памяти.
Сборку программ рекомендуется производить на компьютере с Linux, используя специальное разработческое окружение.
Компиляция и разработка непосредственно на Wiren Board 5 не рекомендуется из-за маленького объёма RAM.


=== Тулчейн (toolchain) ===  
==== Разработческое окружение ==== <!--T:9-->


Если ваша программа не имеет внешних зависимостей от библиотек операционной системы, то для её сборки можно установить тулчейн.
<!--T:10-->
Разработческое окружение предоставляется в виде Docker-контейнера.
Для его использования в Linux существует удобный скрипт wbdev.
При использовании окружения, кросс-компиляция не нужна. Скрипт wbdev автоматически запускает соответствующие команды в виртуализованном окружении с архитектурой armel, соответствующей архитектуре процессора Wiren Board.


Название тулчейна:
<!--T:11-->
Сборка пакетов производится с помощью вызова wbdeb, например так:


* для Wiren Board 6 и выше: '''AArch32 target with hard float (arm-linux-none-gnueabihf)'''
<!--T:12-->
* для Wiren Board 5 и ниже: ''' arm-linux-none-gnueabi '''
<pre>
 
$ wbdev chroot #запустить виртуализованное qemu сhroot окружение с Debian 7 архитектуры armel
Скачать тулчейн для вашей операционной системы можно на сайте [https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-a/downloads ARM.COM]
$ wbdev make # вызвать make в виртуализованном qemu chroot окружении
 
$ wbdev cdeb # собрать пакет, написанный на C++ в виртуализованном qemu chroot окружении
В дистрибутивах Linux необходимые тулчейны обычно уже доступны как пакеты. Например, для Ubuntu или Debian тулчейн можно установить командой:
$ wbdev gdeb # собрать пакет, написанный на Go, с использованием кросс-компиляции Go
 
$ wbdev ndeb # собрать архитектурно-независимый пакет, например содержащий проект на Python
<syntaxhighlight lang="bash">
</pre>
apt install gcc-arm-linux-gnueabihf
</syntaxhighlight>
 
=== Окружение для разработки ===


Окружение для разработки удобно использовать для сборки программ с внешними зависимостями от системных библиотек, для упаковки программ как Debian-пакетов и для удобной сборки под несколько версий Wiren Board. Это рекомендуемый и самый удобный способ.
<!--T:13-->
Полное описание работы с окружением - в [https://github.com/contactless/wirenboard/blob/master/README.md документации].


Окружение предоставляется в виде Docker-контейнера, а для его использования в Linux существует удобный скрипт <code>wbdev</code>.
=== Другие статьи === <!--T:14-->


При использовании окружения, кросс-компиляция не нужна. Скрипт <code>wbdev</code> автоматически запускает соответствующие команды в виртуализованном окружении с архитектурой armel, соответствующей архитектуре процессора в контроллере Wiren Board.
<!--T:15-->
[[Special:MyLanguage/Сборка ядра|Сборка ядра]]


Сборка пакетов производится с помощью вызова <code>wbdev</code>, например так:
<!--T:16-->
[[Special:MyLanguage/Сборка образов прошивки|Сборка образов прошивки]]


<syntaxhighlight lang="bash">
<!--T:17-->
$ wbdev chroot #запустить виртуализованное qemu сhroot окружение с Debian 7 архитектуры armel
[[Special:MyLanguage/Уникальные идентификаторы|Уникальные идентификаторы]] - для идентификации устройства, привязки софта
$ wbdev make # вызвать make в виртуализованном qemu chroot окружении
$ wbdev cdeb # собрать пакет, написанный на C++ в виртуализованном qemu chroot окружении
$ wbdev gdeb # собрать пакет, написанный на Go, с использованием кросс-компиляции Go
$ wbdev ndeb # собрать архитектурно-независимый пакет, например содержащий проект на Python
</syntaxhighlight>


Полное описание работы с окружением смотрите в [https://github.com/wirenboard/wirenboard/blob/master/README.md документации на Github].
<!--T:18-->
[[Special:MyLanguage/eMMC flash storage wear level|Узнать степень износа внутреннего накопителя]]  


== Полезные ссылки ==
<!--T:19-->
[[Special:MyLanguage/Пересборка Device Tree|Пересборка Device Tree]]


* [[Сборка ядра|Сборка ядра]]
</translate>
* [[Сборка образов прошивки|Сборка образов прошивки]]
* [[WB_Firmware_Update_Details| Обновление прошивки для разработчиков]] — структура разделов eMMC и сборка собственного fit-файла.
* [[Уникальные идентификаторы|Уникальные идентификаторы]] — для идентификации устройства, привязки софта
* [[CryptodevATECCx08 Auth|Использование встроенного чипа ATECCx08]] — аппаратное хранилище ключей
* [[eMMC flash storage wear level|Узнать степень износа внутреннего накопителя]]
* [[Пересборка Device Tree|Пересборка Device Tree]]

Версия 10:11, 5 июня 2020

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

Замечание: эта статья про то, как создавать новое программное обеспечение для Wiren Board, и предназначена для программистов;

Окружение

Все контроллеры Wiren Board поставляются с полноценным Debian Linux. Архитектура процессора: armhf (Wiren Board 6) или armel (Wiren Board 5 и раньше). На контроллере используется libc версии 2.13.

Установку ПО рекомендуется производить с помощью пакетного менеджера Debian, и упаковывать ПО в deb-пакеты

Общие соображения

Контроллеры Wiren Board имеют, в зависимости от модели, от 64 до 512MB оперативной памяти. Это значит, что необходимо учитывать потребление памяти при разработке своих программ. Про то, как контролировать потребление памяти в Linux, см. сайт http://www.linuxatemyram.ru/.

Сборка пакетов и программ

Сборку программ рекомендуется производить на компьютере с Linux, используя специальное разработческое окружение. Компиляция и разработка непосредственно на Wiren Board 5 не рекомендуется из-за маленького объёма RAM.

Разработческое окружение

Разработческое окружение предоставляется в виде Docker-контейнера. Для его использования в Linux существует удобный скрипт wbdev. При использовании окружения, кросс-компиляция не нужна. Скрипт wbdev автоматически запускает соответствующие команды в виртуализованном окружении с архитектурой armel, соответствующей архитектуре процессора Wiren Board.

Сборка пакетов производится с помощью вызова wbdeb, например так:

$ wbdev chroot #запустить виртуализованное qemu сhroot окружение с Debian 7 архитектуры armel
$ wbdev make # вызвать make в виртуализованном qemu chroot окружении
$ wbdev cdeb # собрать пакет, написанный на C++ в виртуализованном qemu chroot окружении
$ wbdev gdeb # собрать пакет, написанный на Go, с использованием кросс-компиляции Go
$ wbdev ndeb # собрать архитектурно-независимый пакет, например содержащий проект на Python

Полное описание работы с окружением - в документации.

Другие статьи

Сборка ядра

Сборка образов прошивки

Уникальные идентификаторы - для идентификации устройства, привязки софта

Узнать степень износа внутреннего накопителя

Пересборка Device Tree