Использование стандарта Ethernet для организации взаимодействия с устройствами, построенными на базе микроконтроллеров серии STM32F4 или аналогичными устройствами GD32, безусловно является прогрессивной и востребованной технологией как в рамках концепции IOT (Internet of Things), так и в узкоспециализированных проектах.
В частности, крайне эффективным средством обеспечения взаимодействия с пользователем является использование web-сервера и web-интерфейса на микроконтроллере, работающим под управлением «bare-metal» программного обеспечения, либо с использованием FreeRTOS.
Наша практика показывает, что bare-metal проект для микроконтроллеров STM32F407 и STM32F427 может иметь достаточно развитый web-интерфейс, обеспечивающий:
- разделяемые по логину и паролю пользовательскую и администраторские части;
- одновременное обслуживание до 10 клиентов;
- взаимодействие с устройством посредством запросов GET и Ajax;
- динамическое обновление результатов работы изделия без перезагрузки страницы посредством технологий Ajax и SSE (Server side events);
- графическое представление данных с использованием SVG. Таким образом, функционал, для использования которого чаще всего применяются мощные процессоры с OS Linux, может быть реализован на недорогом чипе, не требующем сложного технического процесса при монтаже. При этом время выхода на режим такого изделия к работе не превышает 5 сек (при получении IP адреса по DHCP), а эксплуатация возможна при температурах от минус 50 до 60 °С.
Реализация web-интерфейса для STM32 и GD32 основывается на библиотеке lwIP, работа с которой описана с снабжена официальными примерами от STMicroelectronics. В частности, для формирования файла ресурсов web-сайта и его интеграции в программные проект для микроконтроллера используется утилита “makefsdata – HTML to C source converter”, позволяющая создавать файл fsdata.c, используемый в стандартном примере.
В связи с тем, что вскоре после начала работ над web-интерфейсом для STM32 понадобился функционал, не поддерживаемый утилитой makefsdata, с уважением к разработчикам утилиты makefsdata: Jim Pettinato и Simon Goldschmidt, формат fsdata.c был взят за основу, а вместо утилиты makefsdata был создан инструмент IonMakeFs.
Программа IonMakeFs написана на языке C#, имеет графический интерфейс, развивается и дополняется по мере необходимости функционалом, необходимым для эффективной современной разработки.
Основными отличиями от makefsdata является:
- возможность «исключить файл» из проекта формирования fsdata.c без удаления файла из рабочей директории;
- наличие возможности минифицировать файлы html, css и js перед формированием fsdata.c.
- для удобства отладки степень минификации настраивается, а отдельные файлы могут быть исключены из минификации.
- высокая степень сжатия в режиме «полная минификация» достигается за счет использования библиотеки AjaxMin (https://www.nuget.org/packages/AjaxMin/), «вшитой» в исполняемый файл.
Данные особенности позволили ускорить и облегчить работу над проектом сложного и многофункционального web-интерфейса, файлы которого размещались в ПЗУ микроконтроллера.
Алгоритм работы с программой IonMakeFs
1. Для начала работы необходимо указать путь к «домашней папке» web-сайта, файлы которого микроконтроллеру предстоит выдавать. Это можно сделать через меню «Проект -> Открыть», либо перетащив в поле «дерево проекта» (Рис. 1).
2. После загрузки проекта, посредством контекстного меню (рис. 2), вызываемого правой кнопкой мыши для каждого элемента из «дерева проекта», можно произвести следующие настройки:
- Открыть файл для просмотра в программе, установленной в ОС в качестве редактора данного типа файлов;
- Исключить файл из проекта (файл помечается пиктограммой и перечеркнутым именем). Эта функция необходима в том случае, когда некоторые файлы, создаются непосредственно микроконтроллером «на стороне сервера», но нужны при отладке на ПК;
- Запретить/разрешить минификацию файла. Данный пункт меню доступен для файлов с расширением htm, html, js, css. Данная функция полезна, когда необходимо производить отладку отдельных файлов в проекте, в то время как минификация ухудшает читаемость кода;
Помимо контекстного меню, настройка проекта осуществляется группой выпадающих списков «настройки»:
- Выравнивание (data structure alignment) – выставляется в соответствии с разрядностью аппаратной архитектуры, на которой будет исполняться код;
- Размещение в строке – количество байт, размещаемое в одной строке файла fsdata.c;
- Минификация (Отключена, Средняя, Полная) используется для уменьшения размера тектовых файлов, передаваемых контроллером web-браузеру. Основным отличием среднего уровня минификации от полного является сохранение символов переноса строки и сохранение имен в JS коде. После выполнения полной минификации итоговый файл будет содержать одну строку текста, читаемость которого и отладка крайне затруднены.
3. После настройки проекта, результат может быть выгружен в файл «fsdata.с» по нажатию кнопки «Сформировать fsdata.c». При этом в рабочей папке web-сайта будет создана папка «_MakefsResults» в которую помещен файл. Данный файл может быть подключен к программному проекту. Соответствующий заголовочный файл «fsdata.h» может быть выгружен посредством соответствующего пункта в меню «Справка».