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

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


=== Окружение === <!--T:2-->
'''Замечание:''' эта статья про то, как создавать новое программное обеспечение для Wiren Board, и предназначена для программистов;
* читайте описание стандартного ПО Wiren Board на странице [[Программное обеспечение Wiren Board|Программное обеспечение Wiren Board]],
*используйте [[Движок правил wb-rules|встроенную систему правил]] для написания правил и сценариев.
 
=== Окружение ===  


<!--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-->
=== Общие соображения ===  


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


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


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


==== Тулчейн ====  
==== Тулчейн (toolchain) ====  


Если ваша программа не имеет внешних зависимостей от библиотек операционной системы, то для её сборки можно установить тулчейн.
Если ваша программа не имеет внешних зависимостей от библиотек операционной системы, то для её сборки можно установить тулчейн.
Название тулчейна:
Название тулчейна:


Строка 34: Строка 29:
* для Wiren Board 5 и ниже: ''' arm-linux-none-gnueabi '''
* для Wiren Board 5 и ниже: ''' arm-linux-none-gnueabi '''


Скачать тулчейн для вашей операционной системы можно здесь: https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-a/downloads
Скачать тулчейн для вашей операционной системы можно на сайте [https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-a/downloads ARM.COM]


В дистрибутивах Linux необходимые тулчейны обычно уже доступны как пакеты. Например, для Ubuntu или Debian:
В дистрибутивах Linux необходимые тулчейны обычно уже доступны как пакеты. Например, для Ubuntu или Debian тулчейн можно установить командой:
<pre>
 
<syntaxhighlight lang="bash">
apt install gcc-arm-linux-gnueabihf
apt install gcc-arm-linux-gnueabihf
</pre>
</syntaxhighlight>


==== Разработческое окружение ==== <!--T:9-->
==== Окружение для разработки ====  


Разработческое окружение удобно использовать для сборки программ с внешними зависимостями от системных библиотек, для упаковки программ как Debian-пакетов, для удобной сборки под несколько версий Wiren Board. Это рекомендуемый и самый удобный способ.
Окружение для разработки удобно использовать для сборки программ с внешними зависимостями от системных библиотек, для упаковки программ как Debian-пакетов и для удобной сборки под несколько версий Wiren Board. Это рекомендуемый и самый удобный способ.


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


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


<!--T:12-->
Сборка пакетов производится с помощью вызова <code>wbdev</code>, например так:
<pre>
 
<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 окружении
Строка 60: Строка 53:
$ wbdev gdeb # собрать пакет, написанный на Go, с использованием кросс-компиляции Go
$ wbdev gdeb # собрать пакет, написанный на Go, с использованием кросс-компиляции Go
$ wbdev ndeb # собрать архитектурно-независимый пакет, например содержащий проект на Python
$ wbdev ndeb # собрать архитектурно-независимый пакет, например содержащий проект на Python
</pre>
</syntaxhighlight>
 
<!--T:13-->
Полное описание работы с окружением - в [https://github.com/contactless/wirenboard/blob/master/README.md документации].
 
=== Другие статьи === <!--T:14-->
 
<!--T:15-->
[[Special:MyLanguage/Сборка ядра|Сборка ядра]]
 
<!--T:16-->
[[Special:MyLanguage/Сборка образов прошивки|Сборка образов прошивки]]
 
<!--T:17-->
[[Special:MyLanguage/Уникальные идентификаторы|Уникальные идентификаторы]] - для идентификации устройства, привязки софта


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


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


</translate>
* [[Сборка ядра|Сборка ядра]]
* [[Сборка образов прошивки|Сборка образов прошивки]]
* [[Уникальные идентификаторы|Уникальные идентификаторы]] — для идентификации устройства, привязки софта
* [[eMMC flash storage wear level|Узнать степень износа внутреннего накопителя]]
* [[Пересборка Device Tree|Пересборка Device Tree]]

Версия 21:05, 19 марта 2021

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

Окружение

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

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

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

В зависимости от модели контроллеры Wiren Board имеют от 64 до 1024 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.

Полезные ссылки