1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/vsfteam-vsf

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README_zh.md 12 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 29.11.2024 22:26 d25cf3a

VSF — Versaloon Software Framework

GitHub

windows-build cmake-native-build cmake-arm-cross-build

vsf.linux windows build cmake-arm-cross-build cmake-native-build

vsf.demo build

VSF (Versaloon Software Framework) — это открытая встраиваемая программная платформа на основе Apache 2.0, включающая в себя драйверы для аппаратного обеспечения (HAL), многозадачное ядро с вытесняющей многозадачностью, различные службы и компоненты. Весь код написан на языке C и реализован с использованием объектно-ориентированного подхода.

Общая структура

Каталог

Каталог Описание
document Документация
doxygen Конфигурация Doxygen
example Примеры кода
hardware Материалы по разработке платы VSF
patch Некоторые патчи (например, для сторонних библиотек)
script Некоторые скрипты инструментов
cmake Скрипты инструментов CMake
source Исходный код VSF
component Компоненты (файловая система, стек протоколов, пользовательский интерфейс, драйверы внешних чипов)
hal Слой абстракции оборудования (поддержка архитектуры чипа, драйверы чипа)
kernel Ядро
osa_service Зависимые от ядра программные сервисные компоненты
service Программные сервисные компоненты
shell «Оболочка»
utilities Базовые программные инструменты (некоторые препроцессоры, поддержка компилятора, списки и т. д.)

Ядро

Основано на событийно-управляемом вытесняющем многозадачном ядре, поддерживает различные архитектуры процессоров, такие как 51, 8-битные MCU, 32- и 64-битные ARM, RISC-V, x86 и другие.

  • Событийно-управляемое: задачи выполняются при возникновении события, без события — спят.
  • В режиме вытеснения задачи переключаются аппаратно, а приоритет задач определяется приоритетом аппаратных SWI (software interrupt).
  • Задачи с разным приоритетом вытесняют друг друга, задачи с одинаковым приоритетом работают совместно.
  • Может работать в других системах или RTOS, а также в одном или нескольких SWI-прерываниях (совместно с другими RTOS).
  • Поддерживает несколько типов задач:
    • Обработка событий — минимальные ресурсы, минимальная конфигурация занимает 20 байт RAM, обычная конфигурация — 40 байт RAM.
    • PT-задачи — похожи на задачи с независимыми стеками, но используют общий стек.
    • Независимые стековые задачи — зависят от библиотеки setjmp в libc.
    • FSM-задачи (конечные автоматы).
    • Другие задачи в «оболочке», например, pthreads.
  • Предоставляет стандартные инструменты IPC, такие как семафоры, мьютексы, триггеры и очереди.

Компоненты

  • Рациональная архитектура платформы обеспечивает высокую степень повторного использования программного обеспечения.
  • По возможности предоставляет декларативный подход к разработке.
  • Стандартизированные интерфейсы позволяют легко переносить сторонние программы и адаптировать их для всей платформы.
  • Программные компоненты/фреймворк:
    • distbus — распределённая шина.
    • fifo.
    • heap.
    • json.
    • pool — пул памяти.
    • stream — интерфейс потока.
    • trace.
  • Компоненты:
    • fs — файловая система (можно использовать сторонние файловые системы).
    • input — система ввода.
    • mal — блочное устройство.
    • scsi — SCSI-устройство.
    • tcpip — TCP/IP-стек протоколов и сетевое устройство (можно использовать сторонние TCP/IP-стеки).
    • ui — пользовательский интерфейс и дисплейное устройство (можно использовать сторонние графические интерфейсы).
    • usb — USB-хост и USB-клиент.
    • bt — Bluetooth-стек (использует сторонний btstack).

Слой аппаратной абстракции

  • Стандартный HAL-интерфейс, унифицированный API (например, vsf_spi_init можно использовать для всех SPI, поддерживаемых VSF, включая встроенные SPI чипа, эмулированные SPI через GPIO, SPI через USB-расширение и SPI через распределённую шину).
  • Упрощённая разработка IP-ядерных драйверов (для переноса требуется реализовать только функции, отличные от тактового генератора, сброса и прерываний).
  • Различные интерфейсные шаблоны упаковки.
  • Интерфейсы:
    • PM.
    • GPIO.
    • SPI.
    • I2C.
    • PWM.
    • ADC.
    • SWI.
    • USART.
    • FLASH.
    • USB.
    • ethernet.

«Оболочка»

«Оболочка» позволяет замаскировать VSF под другую систему, что позволяет напрямую использовать приложения, основанные на этой системе.

  • SDL — можно напрямую использовать некоторые приложения на основе SDL.
  • Linux — ... Можно напрямую использовать некоторый код прикладного уровня, основанный на Linux: — POSIX;
    — DevFS;
    — Socket;
    — Console;
    — некоторые реализации lib-библиотек:
    — LibUSB;
    — LibGen.

Сторонние

Имя Путь Лицензия Ссылка
btstack source/component/3rd-party/btstack/raw Other https://github.com/bluekitchen/btstack
coremark source/component/3rd-party/coremark/raw Apache https://github.com/eembc/coremark
freetype source/component/3rd-party/freetype/raw FreeType https://freetype.org/
zlib source/component/3rd-party/zlib/raw zlib http://zlib.net/
nuklear source/component/3rd-party/nuklear/raw MTI https://github.com/Immediate-Mode-UI/Nuklear
nnom source/component/3rd-party/nnom/raw Apache 2.0 https://github.com/majianjia/nnom
lua source/component/3rd-party/lua/raw MIT https://www.lua.org/
lwip source/component/3rd-party/lwip/raw BSD https://savannah.nongnu.org/projects/lwip/
libpng source/component/3rd-party/libpng/raw PNG2 https://libpng.sf.net
libjpeg-turbo source/component/3rd-party/libjpeg-turbo/raw BSD https://libjpeg-turbo.org/
SDL_ttf source/shell/media/sdl2/3rd-party/SDL_ttf zlib https://hg.libsdl.org/SDL_ttf/
SDL_image source/shell/media/sdl2/3rd-party/SDL_image zlib https://hg.libsdl.org/SDL_image/
lvgl source/component/3rd-party/lvgl/raw/lvgl MIT https://lvgl.io/
lv_lib_freetype source/component/3rd-party/lvgl/extension/lv_lib_freetype/raw MIT https://lvgl.io/
CMSIS source/utilities/compiler/arm/3rd-party/CMSIS Apache 2.0 https://github.com/ARM-software/CMSIS_5
evm source/component/3rd-party/evm/raw Apache 2.0 https://github.com/scriptiot/evm
LingLongGUI source/component/3rd-party/LingLongGUI/raw Apache 2.0 https://gitee.com/gzbkey/LingLongGUI
PLOOC source/utilities/3rd-party/PLOOC/raw Apache 2.0 https://github.com/GorgonMeducer/PLOOC
mbedtls source/component/3rd-party/mbedtls/raw Apache 2.0 https://tls.mbed.org/
GuiLite source/component/3rd-party/GuiLite/raw Apache 2.0 https://github.com/idea4good/GuiLite
Segger_RTT source/component/3rd-party/segger/raw/RTT segger https://wiki.segger.com/RTT
Segger_SystemView source/component/3rd-party/segger/raw/SystemView segger https://wiki.segger.com/SystemView
nuconsole source/component/3rd-party/nuconsole/raw nuvoton https://www.nuvoton.com.cn/
AIC8800M_SDK source/hal/driver/AIC/AIC8800/vendor aic http://www.aicsemi.com/
awtk LGPL 2.1 https://www.zlg.cn/index/pub/awtk.html
littlefs source/component/3rd-party/littlefs/raw BSD https://github.com/littlefs-project/littlefs
getopt_long source/shell/sys/linux/lib/3rd-party/getopt OpenBSD https://github.com/openbsd/src
regex source/shell/sys/linux/lib/3rd-party/regex OpenBSD https://github.com/openbsd/src
fnmatch source/shell/sys/linux/lib/3rd-party/fnmatch BSD http://www.jbox.dk/sanos/source/lib/fnmatch.c.html
glob source/shell/sys/linux/lib/3rd-party/glob BSD https://github.com/cloudius-systems/musl
setjmp source/hal/arch/x86/win BSD
libtuv source/shell/sys/linux/lib/3rd-party/libtuv/raw Apache 2.0 https://github.com/Samsung/libtuv

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/vsfteam-vsf.git
git@api.gitlife.ru:oschina-mirror/vsfteam-vsf.git
oschina-mirror
vsfteam-vsf
vsfteam-vsf
master