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

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


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

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