Современные информационные технологии/Компьютерная инженерия

 

Мясищев А.А.

Хмельницкий национальный университет, Украина

Универсальный 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.