ПО разделено на следующие слои:
- аппликационный слой;
- слой промежуточного ПО;
- абстрактный аппаратный слой.
ПО аппликационного уровня представляет собой основные алгоритмы работы камеры.
ПО аппликационного уровня состоит из следующих файлов:
- app_task.c;
- app_task.h;
- buzzer_control.c;
- buzzer_control.h;
- can_com.c;
- can_com.h;
- common_types.h;
- custom_types.h;
- led_control.c;
- led_control.h
- main_app.c;
- main_defs.h;
- msoc_com.c;
- msoc_com.h.
В файлах app_task.c и app_task.h содержатся функции обработки периодических задач.
В файлах buzzer_control.c и buzzer_control.h содержатся функции алгоритмов управления звуковой индикацией.
В файлах сan_com.c и can_com.h содержатся функции обработки коммуникации по CAN сети.
В файле common_types.h определены типы главного хранилища данных аппликационного слоя ПО.
В файле custom_types.h определены базовые типы данных всех уровней ПО.
В файлах led_control.c и led_control.h содержатся функции алгоритмов управления световой индикацией.
В файле main_app.c содержится функция main точки входа в ПО с главным алгоритмом.
В файле main_defs.h содержатся главные макро-определения ПО.
В файлах msoc_com.c и msoc_com.h содержатся алгоритмы обработки коммуникации между микроконтроллером (МК) и System on Chip (SoC) камеры.
Слой промежуточного ПО состоит из следующих файлов:
- bads_circular_buf.c;
- bads_circular_buf.h.
В файлах bads_circular_buf.c и bads_circular_buf.h содержится алгоритм абстрактного кольцевого буфера, который применяется для синхронизации обмена данными между двумя задачами, выполняющимися с разной частотой. В текущем ПО этот алгоритм применяется в ПО абстрактного аппаратного слоя, в драйвере CAN.
Слой абстрактного аппаратного ПО состоит из следующих файлов:
- drv_can.c;
- drv_can.h;
- drv_can_irq.c;
- drv_exc.c;
- drv_exc.h;
- drv_pwm.h;
- drv_pwm.с
- drv_spi.c;
- drv_spi.h;
- drv_spi_irq.c;
- drv_sys.c;
- drv_sys.h;
- drv_usart.c;
- drv_usart.h.
В файлах drv_can.c, drv_can.h и drv_can_irq.c содержатся функции драйвера коммуникации по протоколу CAN.
В файлах drv_exc.c и drv_exc.h содержатся функции обработчиков исключений ядра МК.
В файлах drv_pwm.c и drv_pwm.h содержатся функции драйвера ШИМ.
В файлах drv_spi.c, drv_spi.h и drv_spi_irq.c содержатся функции драйвера SPI.
В файлах drv_sys.c и drv_sys.h содержатся системные функции работы с МК, которые отвечают за базовую инициализацию МК и управление периферией фронтальной камеры.
В файлах drv_usart.c и drv_usart.h содержатся функции драйвера коммуникации по протоколу USART.