Espruino:Примеры/Сборка кастомной прошивки

Материал из Онлайн справочника
Перейти к навигации Перейти к поиску

Перевод: Максим Кузьмин (Cubewriter) Контакты:</br>* Skype: cubewriter</br>* E-mail: cubewriter@gmail.com</br>* Максим Кузьмин на freelance.ru
Проверка/Оформление/Редактирование: Мякишев Е.А.


Сборка кастомной прошивки[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 }

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

См.также

Ссылки на полезные ресурсы

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