Прежде чем начать
Прежде, чем начать, рекомендую ознакомиться с вот этой Как пользоваться данной документацией страничкой, чтобы лучше понять, как работать с этой документацией
Для кого эта документация (кто ты из фиксиков?)
Данная документация предназначена для 3 типов разрабочиков
- Embedded разработчик, пишуший код для микроконтроллера с установленным внутрь sdk в виде git submodule
- Embedded разработчик, пишуший внутрь sdk
- Сторонний разработчик, пищущий на высокоуровневых языках. Он не использует непосредственно код из этого sdk, но хочет понимать, как работать со всей системой, формировать пакеты запросов и тд.
Каждому из разработчиков будет интерсны разные страницы. Данная страница разбивает sdk на темы, коротко описывает каждую из них, и делает ссылки на каждую тему.
Верхнеуровневое описание
С точки зрения проекта в микроконтроллере sdk можно предстваить в виде модели OSI
Вот описание каждого из слоев, разбитые по папкам в проекте:
- /Apps Стороння дериктория, в которой располагается локальная логика программы.
- Local logic programm - Это код программы за пределами sdk. Обычно располагается в /Apps или подобном. Здесь реализуется непосредственно задача, которую выполняет устройство. Управление моторами, снятие данных EMG и тд.
- /SDK Локальная для проекта папка с декларацией данных устройства.
- Device info - Это информация об устройстве, которая обычно хранится /SDK. Здесь декларируются информационные поля, с помощью которых выполняется обмен данными между устройствами. Поля делятся на два типа: параметры и слоты данных.
- Parameters - Это параметры устройства, которые могут быть прочитаны или записаны. Через них можно предоставлять или получать данные из системы во время ее работы.
- Data table - Это слоты данных, хранящиеся в энергонезависимой памяти. Могут быть использованы для сохраниения настроек локальной логики.
- /main_ubi_sdk (submodule) Папка с sdk, которая содержит в себе все необходимые библиотеки для работы с устройством. Она подключается и не изменяется в процессе разработки проекта.
- Receiver - Это слой обработки пакета. Он принимает пакет, обрабатывает его и вызывает соответствующие функции.
- Protocol - Этот слой оборачивает пакет в header, CRC и тд.
- Port - Этот слой отправляет и принимает пакеты в HW порт.
- /Core
- HardWare - Это аппаратный уровень, который работает с портами микроконтроллера. Он настраивает порты, DMA, прерывания и тд. Реализуется руками разработчика, после чего подключается к Port sdk
protcols Читать про протоколы общения
Device info Читать про device info
План работы разработчика проекта на микроконтроллере
- Выбрать hw порт для общения, и настроить /Core по примеру
- Ссылка на описание порта.
- Инициализировать Port, Protocol, Receiver по примеру (Сделать ссылку)
- Задекларировать в /SDK дата слоты и параметры. (Дополнительно настроить виджеты)
- Ссылка на описание device_info
- Настроить логику работы локального уровня с параметрами и дата слотами
- Ссылка на примеры работы со слотами
План работы разработчика других языков программирования
- Выбрать данные из device_info, которые хочется узнать
- Ссылка на описание device info
- Сформировать запрос в соответствии с Receiver
- Обернуть запрос в header в соответствии с нужным Protocol
- Распарсить данные в соответствии с полученной структурой.
Также стоит посмотреть
Прочие гайды