Espruino:Примеры/Сборка кастомной прошивки
Сборка кастомной прошивки[1]
Допустим, вам для вашего проекта понадобилась плата Espruino WiFi (или какая-то другая плата) с такой прошивкой, где функции отличаются от тех, что есть в официальной прошивке Espruino. Например, вы хотите добавить какие-то функции или, наоборот, удалить их, чтобы освободить больше места для хранения данных.
Сделать это можно при помощи создания собственного файла BOARD.py.
Итак, для начала (предполагается, что плата Espruino WiFi у вас уже есть):
- Настраиваем среду сборки Espruino как описано тут и тут.
- Локально клонируем GitHub-репозиторий Espruino.
- Копируем boards/ESPRUINOWIFI.py в boards/ESPRUINOWIFI_CUSTOM.py
Вносим изменения в 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 }
Вот и всё, кастомизированная прошивка готова!
См.также
Внешние ссылки