• R/O
  • SSH

mcuhal.arm: Resumen Repositorio

самопильный ХАЛ над библиотекой milandr SPL. позиционируется наличие порта порт на STM32 SPL.


Recent Commits RSS

Rev. Tiempo Autor Mensaje
54c4fea28f82 2022-06-27 02:38:04 alexrayne tip < renesas
0ef84f8e5964 2022-06-27 02:37:44 alexrayne renesas !ra2l: r_iic_master: ACKBT flag sometimes not clear by st...
e496f5a3c9e0 2022-06-27 02:29:55 alexrayne renesas +ra2l: rcc: TRNG, AES + mcu-conf.h - provide FSP co...
52ab00555cb5 2022-06-27 02:28:05 alexrayne renesas !ra2l : warn typo
1a0d9d8630e2 2022-06-27 02:26:15 alexrayne +dev: rtc: dsk324sr: RTC_DSK324_STYLE: provided driver be...
1054648fa1b7 2022-06-27 02:24:09 alexrayne !hal: warns typo
7cf4d55cde72 2022-06-27 02:21:29 alexrayne +lib: stats_util
f2acd339e59c 2022-06-27 02:21:13 alexrayne +lib: memoryx: is_same_ul, idxmax_X + math_util: in...
20c998cf0fc9 2022-06-27 02:19:57 alexrayne +lib: portable_endian: uintXXX_net_t types
3ce1b6ae3fed 2022-06-27 02:19:15 alexrayne +contiki: arm: systick_clock: clock_set_seconds

Recently edited Tags

Nombre Rev. Tiempo Autor
tip 54c4fea28f82 2022-06-27 02:38:04 alexrayne

Branches

Nombre Rev. Tiempo Autor Mensaje
MDR32F9Q a8a41708d472 2019-04-30 15:57:10 alexrayne +CAN_Device:adrMAY_ABSENT -...
contiki b5d88c4e0b91 2019-02-14 22:47:13 alexrayne +MDR32F9Qx/mcu_usart:UARTx ...
default cb62dc644f46 2019-03-23 06:39:19 alexrayne < HAL_I/OStreamDevice
renesas 0ef84f8e5964 2022-06-27 02:37:44 alexrayne !ra2l: r_iic_master: ACKBT ...
stm32ll b290bf264784 2020-03-19 21:01:01 alexrayne +stm32ll:L1 - support

README.md

HAL - общие абстракции драйверов железа

библиотека АПИ устройств, и АПИ ОС.

платформы

  • cpu/MDR32F9Qx/ - порт для SPL 1886ВЕ94Т
  • cpu/STM32*/ - порт для SPL STM32F4 - не реализован, не отлажен
  • cpu/renesas/rl78g14.lora - порт LoRa EDK rl78g14
  • cpu/renesas/ra2l.fsp - порт RA2L для фреймворка renesas FSP
  • linux/ - порт устройств под линь
  • qt/ - порт устройств и библиотек под окружение Qt

Портирование

адаптация SPL железа

библиотека HAL спроектирована с зацелом отделения функциональной части от аппаратной реализции.

хедеры вида xxx_hal.hpp - объявляют интерфейс драйвера, и имеют общий аппаратно-независимый код. Реализации драйвера под конкретную платформу создаются в папках платформы.

сейчас реализован порт SPL Миландра для контроллеров 1886ВЕxx - MDR32F9Qx/

хедеры интерфейсов драйверов HAL тоже используют SPL платформы проекта, но не напрямую а через прокси-хедеры вида mcu_xxx.h. Задача их - включить нужный хедер SPL, и адаптировать его вызовы и названия к общему виду, используемому HAL.

так же порт реализует обязательный хедер gpio.h - управление и настройку пинов контроллера

Для порта на другой SPL надо завести каталог платформы и, как минимум, написать новые gpio.h и mcu_xxx.h.

И сделать версии драйверов HAL унаследованные от интерфейсов xxx_hal.hpp. Эти реализации должны обеспечить настройку и иницализацию железа под драйвер.

адаптация к OS

Драйвера, требующие конкурентного доступа от разных процессов, или работы с системными часами и таймаутами используют ресурсы ОС. HAL использует ресурсы ОС через хедеры обертки-порты: - OsSync.h - порт примитивов синхронизации ОС: - критические секци - семафор - мутекс - сигнал - нитки, их управление - sleep

собственно HAL использует выделенное, остальные ресурсы используются кодом проекта.

  • OsTime.h - порт примитивов работы с временем: таймеры и, таймауты
  • os_isr.h - порт управления преерываниями: вкл/выкл прерывания
  • system.h - все остальное. Сейчас дает частоту процессора, и пустое ожидание события.
  • halos_types.h - хедер связывающий простые типы HAL - результаты, ошибки, с константами и типами ОС.

Структура

Общие файлы

  • hal_types.h - удобные типы для использования в ХАЛ.

  • halos_types.h - хедер-образец. порты ОС, по мотивам этого хедера, адаптирую типы ХАЛ с типами ОС

  • hal_device.h - перечисление интерфейсов различных устройств общего вида.

  • porting/ - каталог портов АПИ разных ОС.

  • hal_ringbuffer - шаблоны кольцевой буффера. используются в буферах ввода/вывода - UART, SLIP

адаптация к компилятору

Поддержка разных компиляторов и диалектов С/С++ осуществляется хедерами c_compat.h и compiler-port.h

хедеры конфигурации

  • project-conf.h - хедер-образец. по этому образцу приложение делает этот же хедер, с настройками ХАЛ под проект.

  • project-cli.h - хедер-образец настроек CLI под проект.

порты процессоров: cpu/

  • arm/ - общий код для АРМ поддержки. дополнительный код для АРМ в ware/contiki/arch/cpu/arm

  • stm32.LL - порт STM32 (семейства f4, L1) для работы на LL билиотеках

  • stm32.HAL - порт STM32 (семейства f4, h7) для работы на HAL билиотеках. ( доступно только RCC )

  • stm32.SPL - порт STM32 (семейства f4) для работы на SPL билиотеках. ( доступно GPIO, DMA, UART )

  • MDR32F9Qx - 1886ВЕ94Т под SPL

  • renesas/ - порты процессоров renesas

    • rl78g14.lora - импортировано и доработано из фреймворка LoRa для RL78G14 ( доступно GPIO, буферированый UART )

    • ra2l.fsp - порт для RA2L на фреймворке FSP. ( доступно GPIO, буфер на драйвер UART )

библиотека: lib/

  • EnumClass - C++ обертка bitmap из enum. Позволяет кошерно в битовые операции на флагах заданных enum.
  • observe_pattern - C++ патерн обозревателя
  • cli/ - (Common Line Interface) библиотека реализации терминала на stdio, командной строки.

библиотека: net/

содержит фильтры, устройства обеспечения работы с сетевыми протоколами

  • telnet_hal - фильтр протокола телнет, на потоке stdio
  • slip-filter - фильтр протокола SLIP прямо на буффере HAL_RingBuffer.
  • slip_hal - прокси-фильтр УАРТА фреймов протокола SLIP

API драйверов

файлы *_hal - описание интерфейса соотвествующего устройства.

  • print_hal - драйвера строкового вывода/печати STDOut. Изпользуются журналерами и CLI
  • uart_hal - драйвер УАРТа, с циклическим буфером на приемнике и трансмитере.
  • switch_hal - переключатель набора пинов контроллера, с одним активным пином.
  • timer_hal - базовый таймер/счетчик/ШИМ.
  • ssp_hal - драйвер обмена по синхронной шине SPI/I2C, и его прокси SPIIO реализующий IO_Device примитивы.
  • can_hal - драйвер шины CAN, базовое АПИ оправки сообщения, и присоединения слота на прослушивание адреса.
  • flash_hal - драйверы флеш-памяти, и банка флешек на клиенте SSP_HAL.
  • flash_spi_hal - флеш на SPI интерфейсе - минимальный набор команд.
  • flash_i2c_hal - флеш на I2C интерфейсе, поддерживает примитивные eeprom интерфейс чтение/запись без команд.

драйвера dev/

  • flash/ - каталог реализаций драйверов разных флешек
    • 1636RR52 - драйвер spi-флешки 1636РР52
    • x25 - универсальный драйвер на флешки протокола x25
    • m95m04 - драйвер spi-eeprom STM 4mB
    • m24m01 - драйвер i2c-eeprom STM 1mB
Show on old repository browser