Современные информационные
технологии/Компьютерная инженерия
Мясищев А.А.
Хмельницкий национальный
университет, Украина
Универсальный web-сервер на STM32F4Discovery и STM32F4DIS-BB
Для удаленного управления устройствами, снятия параметров с
датчиков часто используются микроконтроллеры AVR. Для их подключения к сети
наиболее популярны микросхемы W5100 и ENC28J60. В первой микросхеме аппаратно
реализованы TCP/IP и Ethernet протоколы, а во второй - лишь Ethernet. В этой работе рассмотрим
альтернативу – микроконтроллеры STM32F4, которые имеют встроенный контроллер Ethernet. Однако здесь рассматривается
способ построения информационного сервера, предназначенного лишь для
отображения текстовой и графической информации, но не для управления
устройствами. Построение сервера с функциями управления будет рассмотрено в следующих работах.
В качестве аппаратной части для web – сервера использовались платы STM32F4Discovery
и STM32F4DIS-BB[1].
На плате STM32F4Discovery установлены:
1.
32-битный ARM-микроконтроллер STM32F407VGT6 семейства Cortex-M4 (Частота - до
168 МГц, память программ (Flash) - 1 Мбайт,
ОЗУ (RAM) - 196 Кбайт).
2.
Отладчик и программатор ST-Link/V2 с разъемом mini-USB для отладки, прошивки
микроконтроллера STM32F407VGT6 и питания платы.
3. Кнопка сброса (RESET) микроконтроллера STM32F407VGT6.
4.
Четыре светодиода и одна кнопка, доступные для программирования. Все выводы
микроконтроллера выведены по бокам платы штырьками по два ряда.
5. 3-х
осевой цифровой акселерометр на MEMS-датчике движения LIS302DL (LIS3DSH с
2013г.).
6.
Цифровой микрофон MP45DT02 на основе микроэлектромеханического
датчика(MEMS-датчик).
7.
Аудио-ЦАП со встроенным драйвером динамиков класса D на CS43L22.
8. Разъём micro-USB, используемый в программах пользователя.
К STM32F4Discovery можно подключить Ethernet, ЖК-дисплей и другие устройства. В
настоящее время доступна плата расширения STM32F4DIS-BB, которая разработана
специально для высокопроизводительной отладочной платы STM32F4Discovery. Она
имеет интерфейсы с Ethernet10/100 Mbps,
дисплейным модулем с сенсорной панелью, 1.3 мегапиксельной цифровой камерой, на
ней установлен последовательный порт RS-232, слот для SD памяти и др. В плате
расширения STM32F4DIS-BB для доступа к Ethernet используется микросхема Ethernet PHY(физического уровня) серии
LAN8720 с интерфейсом RMII. Рассмотренные платы также сопровождаются
многочисленными бесплатными библиотеками программ и примерами проектов.
Недостатком является то, к программному обеспечению не поставляется описание
его функционирования.
Для создания простейшего web – сервера на основе
микроконтроллера STM32F4 необходимо:
1. Установить в ОС Windows 7(XP) пакет программ IAR Embedded Workbench for ARM, причем с лицензией, которая
ограничена сроком действия 30 дней, но полностью функциональная [2].
2. Скопировать с сайта http://www.element14.com/community/docs/DOC-51670/l/stm32f4dis-bb-discover-more-software-examples
пример для платы расширения STM32F4DIS-BB (файл STM32F4DIS-BB Software Examples
20130307.zip)
3. Скопировать с сайта http://www.st.com/web/en/catalog/tools/PF258168
и установить утилиту STM32 ST-LINK Utility. Она необходима для прошивки микроконтроллера
на плате STM32F4Discovery. Если .hex файл имеет большой размер, то прошивка с пакета IAR Embedded Workbench for ARM невозможна.
4. Установить плату STM32F4Discovery на STM32F4DIS-BB по контактным разъёмам и подключить
платуSTM32F4Discovery кабелем mini-USB к компьютеру, а плату STM32F4DIS-BB кабелем «витая пара» через разъём RJ-45 к порту коммутатора или роутера
как показано на рисунке 1.
Рис.1. Фото
web
– сервера
Для взаимодействия с web – сервером предварительно на
клиентском компьютере устанавливаем следующие сетевые параметры:
ip – адрес 192.168.1.4;
маска подсети – 255.255.255.0;
основной шлюз – 192.168.1.1.
Предполагается, что web – сервер будет подключен к сети Интернет.
Разархивируем файл
STM32F4DIS-BB Software Examples 20130307.zip и заходим в каталог D:\STM32F4DIS-BB Discover More Software Examples\STM32F4DIS-BB Discover More Software Examples\STM32F4xx_Ethernet_Example\Project\Standalone\httpserver, в котором расположены следующие подкаталоги:
1. EWARM – здесь находится файл проекта Project.eww web – сервера для пакета IAR Embedded Workbench for ARM;
2. fs – здесь расположены html файлы, рисунки, необходимые для формирования страниц в
браузере клиента при подключении к этому серверу;
3. inc – директория подключаемых файлов
4. MDK-ARM – каталог с файлом проекта Project.uvproj web - сервера для среды разработки Keil ARM Microcontroller
Development Kit. Этот пакет здесь не используется, т.к. размер программы
сервера превышает допустимые для свободной лицензии;
5. src – здесь расположены файлы программ на языке си для демонстрационного
сервера:
- fsdata.c - сформированные с помощью
утилиты makefsdata.exe html страницы, находящиеся в каталогеfs, которые после компиляции будут размещены
в ROM памяти микроконтроллера;
- httpd.c – основной исходный код web – сервера;
- httpd_cgi_ssi.c – исходный файл web – сервера, реализующий SSI и CGI обработчики.
Конфигурирование
web – сервера с целью построения простой web – странички, содержащей текстовую
и графическую информацию, выполняем в следующей последовательности:
1. В каталоге EWARM
запускаем файл Project.eww. Должна открыться среда разработки IAR Embedded Workbench for ARM. Заходим последовательно в вкладки
USER, mail.c и высвечиваем текст mail.h, как показано на рисунке 2.
в месте подсветки текста
устанавливаем необходимые mac – адрес 02-00-00-00-00-00, ip – адрес 192.168.1.10, шлюз – 192.168.1.1, маску сети –
255.255.255.0.
Рис.2.
Текст main.h в среде IAR Embedded Workbench for ARM.
2. Аналогично заходим в файл http.c и
устанавливаем номер порта, на котором работает сервер. В исходной программе он
имеет значение 80. Здесь – 8080:
#define HTTPD_SERVER_PORT 8080
3. В любом текстовом редакторе создается html документ
простейшей web – странички,
которую должен отображать браузер при соединении с сервером:
<HTML>
<HEAD>
<meta
http-equiv="Content-Type" content="text/html;
charset=windows-1251" />
<TITLE>Пример web - сервера
на STM32F4Discovery</TITLE>
</HEAD>
<BODY>
<H2>Ниже показано фото
платы STM32F4Discovery</H2>
<img src=”foto_stm32.jpg>
</BODY>
</HTML>
В рабочем каталоге создаем подкаталог fs и записываем туда html документ под именем index.html. В этот же каталог
копируем рисунок foto_stm32.jpg. В рабочем каталоге должна находиться также утилита makefsdata.exe[3]. После запуска этой
утилиты в рабочем каталоге появится файл fsdata.c, который необходимо
скопировать в каталог D:\STM32F4DIS-BB Discover More Software Examples\STM32F4DIS-BB Discover More Software Examples\STM32F4xx_Ethernet_Example\Project\Standalone\httpserver\src.
После этого выполняем компиляцию
программы и передачу кода в микроконтроллер, переходя по вкладкам Project ->
Download -> Download active application.
После
подключения к серверу в браузере клиента должно появиться изображение,
представленное на рисунке 3.
Рис.3. Web – страничка сервера на STM32F4.
Сопоставление
работы универсальных web – серверов созданных на базе микроконтроллеров STM32F407VGT6 + LAN8720 и ATmega1280+w5100[4] (программная среда Arduino) позволяет сделать следующие
выводы:
1. Отсутствие зависаний
web – сервера на STM32F4Discovery и STM32F4DIS-BB по сравнению с web – сервером на базе Arduino Mega + Ethernet Shield W5100 (ATmega1280+w5100).
2. Web – сервер на STM32F407VGT6 работает быстрее сервера на
базе ATmega1280+w5100.
3. За счет большей
флешь и оперативной
памяти у STM32F407VGT6 сервер можно сделать более информативным и с большими
опциями управления по сравнению с ATmega1280.
4. Стек протоколов
TCP/IP (LwIP) для STM32F407VGT6 работает более надежно, чем для ATmega1280+W5100. Например, при относительно
высокой загрузке сети от сервера на ATmega1280 не всегда все данные доходят
до клиента, а для сервера на STM32F407VGT6 с протоколом LwIP таких проблем не
замечалось.
5. Управляющие системы
по IP –
сети целесообразно создавать на STM32F4. На ATmega1280+w5100 они получаются не надежными и
требуют обязательного автоматического перезапуска с сохранением промежуточных
параметров управления.
6. Так как
микроконтроллеры ATmega1280, ATmega2560 являются 8-и разрядными,
размещение данных в программной флешь памяти, размер которых превышает 64Кбайт,
связано со сложностями. Для 32-х
разрядных микроконтроллеров STM32 таких проблем не наблюдается. В качестве данных
здесь используются html -
странички вместе с рисунками.
Литература.
1. Микроконтроллеры STM32. [Electronic
resource]. - Mode of access: https://sites.google.com/site/webstm32/home,
2014.
2. Мясищев А.А. Вычислительные
возможности STM32F4Discovery, ввод – вывод в UART с помощью scanf и printf для
IAR. . [Electronic resource]. -
Mode of access:
https://sites.google.com/site/webstm32/1-vycislitelnye-vozmoznosti-stm32,
2014.
3.Мясищев А.А. Web – сервер на платах
STM32F4Discovery и STM32F4DIS-BB для удаленного управления по TCP/IP сети. [Electronic
resource]. - Mode of access: http://alex56ma.zapto.org/stm32_web/stm32_3.html,
2014.
4. Мясищев А.А. Универсальный web -
сервер на Arduino. [Electronic resource]. - Mode of access:
http://alex56ma.zapto.org/stm32_web/web_1.htm, 2013.