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

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


<!--T:6-->
В зависимости от комплектации контроллеры Wiren Board 6 имеют 512 или 1024 MB оперативной памяти, контроллеры Wiren Board 7 — 512, 1024 или 2048 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) ===  


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


* для Wiren Board 6 и выше: **AArch32 target with hard float (arm-linux-none-gnueabihf)**
* для Wiren Board 6 и выше: '''AArch32 target with hard float (arm-linux-none-gnueabihf)'''
* для 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 ARM.COM]


Скачать тулчейн для вашей операционной системы можно здесь: https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-a/downloads
В дистрибутивах Linux необходимые тулчейны обычно уже доступны как пакеты. Например, для Ubuntu или Debian тулчейн можно установить командой:


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


=== Окружение для разработки ===


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


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


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


<!--T:11-->
Сборка пакетов производится с помощью вызова <code>wbdev</code>, например так:
Сборка пакетов производится с помощью вызова wbdeb, например так:


<!--T:12-->
<syntaxhighlight lang="bash">
<pre>
$ wbdev chroot #запустить виртуализованное qemu сhroot окружение с Debian 7 архитектуры armel
$ wbdev chroot #запустить виртуализованное qemu сhroot окружение с Debian 7 архитектуры armel
$ wbdev make # вызвать make в виртуализованном qemu chroot окружении
$ wbdev make # вызвать make в виртуализованном qemu chroot окружении
Строка 61: Строка 54:
$ 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/wirenboard/wirenboard/blob/master/README.md документации на Github].
[[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:23, 14 апреля 2023

Общая информация

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

Окружение

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

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