Заказчик
Общество с ограниченной ответственностью "Научно-производственная фирма Сапфир"
Проект
Разработка встраиваемого ПО для контроллера управления подачей/отпуском воды на базе 32-разрядного микроконтроллера STM32F103RB
Цели и задачи
Контроллер управления подачей/отпуском воды выполняет практически все те же функции, что и любой кофемат, только взамен кофе и других напитков выполняется отпуск питьевой воды. Список функций, выполняемых кофематом, включает:
- Контроль наличия/отсутствия воды
- Непрерывный опрос состояния купюроприёмника и монетоприёмника по протоколу CashCode CCNET
- Отпуск воды в соответствии с внесённой клиентом денежной суммой
- Сохранение всех транзакций, а также каких-либо вдруг возникших внештатных ситуаций в журнале на SD-карте
Решение
Выполнение работы можно условно разделить на два этапа:
Первый этап:
В течение периода времени, пока выполнялась разработка печатной платы будущего устройства, разработка ПО осуществлялась с использованием отладочной платы STM32-H103. На данной плате, в первую очередь, была запущена операционная система FreeRTOS 7.0.1, отлажен код для отображения информации на символьном ЖКИ размерами 40 столбцов х 4 строки, добавлена возможность журналирования всех событий в файл на SD-карте через SPI-интерфейс.
К моменту завершения работы над данными задачами купюроприёмник ещё "не приехал" от заказчиков. Учитывая стоимость подобного класса устройств, было принято решение сымитировать работу купюроприёмника в соответствии со спецификациями CashCode CCNET. В результате, появился кроссплатформенный многопоточный симулятор работы купюроприёмника, написанный на Python + PySide. Отладка симулятора осуществлялась преимущественно в ОС Linux, тем не менее ошибок/странностей в работе под ОС Windows замечено пока не было.
Отлаженный симулятор CashCode ССNET, в свою очередь, был задействован для создания части ПО для микроконтроллера, ответственной за опрос купюроприёмника.
Второй этап:
К моменту завершения сборки печатной платы продукта появился и купюроприёмник CashCode SM. Портирование ПО, разработанного во время первого этапа, на новую плату заняло, с учётом поиска и устранения всех аппаратных ньюансов и ошибок, 3 рабочих дня. Переход с симулятора CashCode на настоящий купюроприёмник потребовал ещё 1 день - ошибки всплыли не в симуляторе, а в прошивке микроконтроллера.
Разработка ПО для микроконтроллера на всех этапах работы выполнялась с использованием оригинального SEGGER J-LINK, в среде разработки Eclipse с добавленными расширениями CDT + OpenOCD. Компилятор/Ассемблер/Компоновщик - от Mentor Graphics/CodeSourcery. Система контроля версий - subversion.
Результаты
- Запуск операционной системы реального времени FreeRTOS 7.0.1 на целевой плате.
- Добавление кода для отображения информации на символьном ЖКИ размерами 40 столбцов х 4 строки.
- Разработка и отладка кода для управления и считывания информации с купюроприёмников по протоколу CashCode CCNET
- Добавление кода для поддержки часов реального времени
- Добавление кода для взаимодействие с SD-картами через SPI-интерфейс
- Добавление поддержки файловой системы FAT в реализации FatFS