• R/O
  • SSH

mcuhal.arm: レポジトリ概要

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


最近のコミット RSS

Rev. 日時 作者 メッセージ
7ce11f211ba4 2024-03-18 04:53:39 alexrayne tip <renesas
52047584f37c 2024-03-18 04:52:49 alexrayne contiki: exit_process ! fix other process notification - ...
d9d149544fdc 2024-03-18 04:51:27 alexrayne proto-threads: ptx: TH_xxx API
41d8578d553e 2024-03-18 04:50:58 alexrayne OsTime: !CLOCKMS(x) - macro braces fix + CLOCKMS_M...
30a0ddc2f487 2024-03-18 04:49:22 alexrayne renesas ra2l: r_iicsw_master: failure hung fixed. Hung cause by r...
cb5b8f79beff 2024-03-18 04:48:23 alexrayne renesas ra2l: hal: ssp: hung timeout - fixed invalid hung detecti...
de9d621abacd 2024-03-18 04:41:31 alexrayne renesas ra2l: assert: NDEBUG_MCU - use common mcu assert disable
858a83a80fc4 2024-03-18 04:40:23 alexrayne renesas +ra2l: r_sci_uartx: R_SCI_UART_StatusGet
dc94733f68be 2024-03-18 04:37:35 alexrayne renesas +ra2l: trng_str - fixed + rcc: RCC_Enabled_TRNG
0872d7562e3b 2024-03-18 04:36:01 alexrayne renesas +ra2l: r_flash_lp: ram_xxx unstatics - unstatic ram_ tram...

最近変更されたタグ

名前 Rev. 日時 作者
tip 7ce11f211ba4 2024-03-18 04:53:39 alexrayne

ブランチ

名前 Rev. 日時 作者 メッセージ
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 30a0ddc2f487 2024-03-18 04:49:22 alexrayne ra2l: r_iicsw_master: failu...
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
旧リポジトリブラウザで表示