Espruino:Примеры/Сборка кастомной прошивки: различия между версиями

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
(Новая страница: «{{Espruino/Панель перехода}} {{Перевод от Сubewriter}} {{Myagkij-редактор}} =<ref>[ www.espruino.com - ]</ref>= <syntaxhighligh...»)
 
Нет описания правки
Строка 3: Строка 3:
{{Myagkij-редактор}}
{{Myagkij-редактор}}


=<ref>[ www.espruino.com - ]</ref>=
=Сборка кастомной прошивки<ref>[https://www.espruino.com/Building+Custom+Firmware  www.espruino.com - Building Custom Firmware]</ref>=


Допустим, вам для вашего проекта понадобилась плата [https://www.espruino.com/WiFi Espruino WiFi] (или какая-то другая плата) с такой прошивкой, где функции отличаются от тех, что есть в официальной прошивке Espruino. Например, вы хотите добавить какие-то функции или, наоборот, удалить их, чтобы освободить больше места для хранения данных.
Сделать это можно при помощи создания собственного файла '''BOARD.py'''.
Итак, для начала (предполагается, что плата [[Espruino WiFi]] у вас уже есть):
* Настраиваем среду сборки [[Espruino]] как описано [https://github.com/espruino/Espruino/blob/master/README_BuildProcess.md тут] и [https://github.com/espruino/Espruino/blob/master/README_Building.md тут].
* Локально клонируем [https://github.com/espruino/Espruino GitHub-репозиторий Espruino].
* Копируем boards/ESPRUINOWIFI.py в boards/ESPRUINOWIFI_CUSTOM.py
== Вносим изменения в ESPRUINOWIFI_CUSTOM.py ==
Итак, теперь мы можем удалить ненужный код и вписать код, который добавит поддержку нужного нам типа [[LCD]]-дисплея. Более подробно о [https://www.espruino.com/LCD_SPI_UNBUF LCD_SPI_UNBUF] читайте тут.
Обратите внимание на комментарии:


<syntaxhighlight lang="javascript" enclose="div">
<syntaxhighlight lang="javascript" enclose="div">
info : {
    ....
    # Даём плате новое название, например, `MYESPRUINOWIFI`,
    # или даём вашему файлу платы ESPRUINOWIFI_CUSTOM.py
    # то же название, что и у существующего файла ESPRUINOWIFI.py,
    # выбрав 'ESPRUINOWIFI'...
    'boardname' : 'MYESPRUINOWIFI',
    ....
    # Уменьшаем количество переменных,
    # чтобы освободить место в куче/стеке:
    'variables' : 4000,
    ....
    # Создаём файлы двоичного кода с кастомизированными названиями:
    'binary_name' : 'espruino_%v_wifi_MYESPRUINOWIFI.bin',
    'binaries' : [
      { 'filename' : 'espruino_%v_wifi_MYESPRUINOWIFI.bin', 'description' : "Custom Espruino WiFi build"},
    ],
    'build' : {
        .....
        'libraries' : [
            'USB_HID',
            'NET'
            'GRAPHICS',
    # Удаляем ненужные библиотеки:
            # 'TV' – если не используете вывод PAL TV.
            # 'FILESYSTEM' – если не нужно использовать SD-карты.
            'CRYPTO', 'SHA256', 'SHA512',
            'TLS',
            'NEOPIXEL'
    # Добавляем LCD_SPI_UNBUF для работы
    # с 16-битными дисплеями типа TFT LCD:
            'LCD_SPI_UNBUF'
        ],
    'makefile' : [
        ....
    # Удаляем WIZNET (Ethernet через SPI),
    # если не планируем использовать Ethernet.       
          # 'WIZNET=1' добавляет поддержку W5500 по умолчанию
        ....


    # Задаём размер SPI-буфера для передачи данных (для LCD_SPI_UNBUF)
        'DEFINES+=-DSPISENDMANY_BUFFER_SIZE=64',
    # Добавляем шрифт 6x8 – приятный 255-символьный шрифт:
        'DEFINES+=-DUSE_FONT_6X8',
        ....
      ],
      .....
</syntaxhighlight>
</syntaxhighlight>
== Сборка прошивки для кастомной платы ==
Просто запускаем следующие команды:
<syntaxhighlight lang="javascript" enclose="div">
export BOARD=ESPRUINOWIFI_CUSTOM
export RELEASE=1
make clean
make
</syntaxhighlight>
Это создаст вот эти файлы:
* espruino_2v06.83_wifi_MYESPRUINOWIFI.elf
* espruino_2v06.83_wifi_MYESPRUINOWIFI.bin
* espruino_2v06.83_wifi_MYESPRUINOWIFI.lst
Вы также можете запустить make serialflash или make flash (в зависимости от платы) – чтобы записать файлы с двоичным кодом прямо на плату.
== Запись и проверка кастомной прошивки ==
<syntaxhighlight lang="javascript" enclose="div">
>process.env.BOARD
="MYESPRUINOWIFI"
>process.env.MODULES.split(',')
=[
  "Flash",
  "Storage",
  "heatshrink",
  "net",
  "dgram",
  "http",
  "NetworkJS",
  "crypto",
  "neopixel",
  "Wifi",
  "AT"
]
process.memory()
={ free: 6950, usage: 50, total: 7000, history: 33,
  gc: 0, gctime: 6.34193420410, blocksize: 16, "stackEndAddress": 536987904, flash_start: 134217728,
  "flash_binary_end": 379352, "flash_code_start": 134283264, flash_length: 524288 }
</syntaxhighlight>
Вот и всё, кастомизированная прошивка готова!


=См.также=
=См.также=

Версия от 18:37, 3 марта 2021

Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.


Сборка кастомной прошивки[1]

Допустим, вам для вашего проекта понадобилась плата Espruino WiFi (или какая-то другая плата) с такой прошивкой, где функции отличаются от тех, что есть в официальной прошивке Espruino. Например, вы хотите добавить какие-то функции или, наоборот, удалить их, чтобы освободить больше места для хранения данных.

Сделать это можно при помощи создания собственного файла BOARD.py.

Итак, для начала (предполагается, что плата Espruino WiFi у вас уже есть):

Вносим изменения в ESPRUINOWIFI_CUSTOM.py

Итак, теперь мы можем удалить ненужный код и вписать код, который добавит поддержку нужного нам типа LCD-дисплея. Более подробно о LCD_SPI_UNBUF читайте тут.

Обратите внимание на комментарии:

info : {
    ....
    # Даём плате новое название, например, `MYESPRUINOWIFI`,
    # или даём вашему файлу платы ESPRUINOWIFI_CUSTOM.py
    # то же название, что и у существующего файла ESPRUINOWIFI.py, 
    # выбрав 'ESPRUINOWIFI'...
    'boardname' : 'MYESPRUINOWIFI',
    ....
    # Уменьшаем количество переменных,
    # чтобы освободить место в куче/стеке:
    'variables' : 4000,
    ....
    # Создаём файлы двоичного кода с кастомизированными названиями:
    'binary_name' : 'espruino_%v_wifi_MYESPRUINOWIFI.bin',
    'binaries' : [
      { 'filename' : 'espruino_%v_wifi_MYESPRUINOWIFI.bin', 'description' : "Custom Espruino WiFi build"},
    ],
    'build' : {
        .....
        'libraries' : [
            'USB_HID',
            'NET'
            'GRAPHICS',
    # Удаляем ненужные библиотеки:
            # 'TV'  если не используете вывод PAL TV.
            # 'FILESYSTEM'  если не нужно использовать SD-карты.
            'CRYPTO', 'SHA256', 'SHA512',
            'TLS',
            'NEOPIXEL'
    # Добавляем LCD_SPI_UNBUF для работы
    # с 16-битными дисплеями типа TFT LCD:
            'LCD_SPI_UNBUF'
        ],
     'makefile' : [
         ....
    # Удаляем WIZNET (Ethernet через SPI),
    # если не планируем использовать Ethernet.         
          # 'WIZNET=1' добавляет поддержку W5500 по умолчанию
         ....

    # Задаём размер SPI-буфера для передачи данных (для LCD_SPI_UNBUF)
         'DEFINES+=-DSPISENDMANY_BUFFER_SIZE=64',
    # Добавляем шрифт 6x8  приятный 255-символьный шрифт:
         'DEFINES+=-DUSE_FONT_6X8',
         ....
      ],
      .....

Сборка прошивки для кастомной платы

Просто запускаем следующие команды:

export BOARD=ESPRUINOWIFI_CUSTOM
export RELEASE=1

make clean

make

Это создаст вот эти файлы:

  • espruino_2v06.83_wifi_MYESPRUINOWIFI.elf
  • espruino_2v06.83_wifi_MYESPRUINOWIFI.bin
  • espruino_2v06.83_wifi_MYESPRUINOWIFI.lst

Вы также можете запустить make serialflash или make flash (в зависимости от платы) – чтобы записать файлы с двоичным кодом прямо на плату.

Запись и проверка кастомной прошивки

>process.env.BOARD
="MYESPRUINOWIFI"

>process.env.MODULES.split(',')
=[
  "Flash",
  "Storage",
  "heatshrink",
  "net",
  "dgram",
  "http",
  "NetworkJS",
  "crypto",
  "neopixel",
  "Wifi",
  "AT"
 ]

process.memory()
={ free: 6950, usage: 50, total: 7000, history: 33,
  gc: 0, gctime: 6.34193420410, blocksize: 16, "stackEndAddress": 536987904, flash_start: 134217728,
  "flash_binary_end": 379352, "flash_code_start": 134283264, flash_length: 524288 }

Вот и всё, кастомизированная прошивка готова!

См.также

Внешние ссылки