Espruino:Примеры/Сборка кастомной прошивки: различия между версиями
Myagkij (обсуждение | вклад) (Новая страница: «{{Espruino/Панель перехода}} {{Перевод от Сubewriter}} {{Myagkij-редактор}} =<ref>[ www.espruino.com - ]</ref>= <syntaxhighligh...») |
Myagkij (обсуждение | вклад) Нет описания правки |
||
Строка 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 у вас уже есть):
- Настраиваем среду сборки 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 }
Вот и всё, кастомизированная прошивка готова!
См.также
Внешние ссылки