{"id":13830701,"url":"https://github.com/qmk/ChibiOS","last_synced_at":"2025-07-09T12:31:03.183Z","repository":{"id":39614994,"uuid":"92527194","full_name":"qmk/ChibiOS","owner":"qmk","description":"Mirror of the ChibiOS SVN repository","archived":false,"fork":false,"pushed_at":"2024-04-05T02:24:38.000Z","size":180821,"stargazers_count":24,"open_issues_count":0,"forks_count":28,"subscribers_count":6,"default_branch":"qmk-master","last_synced_at":"2024-04-14T02:23:17.495Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://chibios.org/","language":"C","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/qmk.png","metadata":{"files":{"readme":"readme.txt","changelog":null,"contributing":null,"funding":null,"license":"license.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null},"funding":{"open_collective":"qmk-firmware"}},"created_at":"2017-05-26T16:03:13.000Z","updated_at":"2024-01-24T22:41:45.000Z","dependencies_parsed_at":"2024-04-13T20:00:15.294Z","dependency_job_id":null,"html_url":"https://github.com/qmk/ChibiOS","commit_stats":{"total_commits":11412,"total_committers":25,"mean_commits":456.48,"dds":0.19645986680687,"last_synced_commit":"11edb1610980f213b9f83161e1715a46fb7e4c51"},"previous_names":[],"tags_count":20,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qmk%2FChibiOS","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qmk%2FChibiOS/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qmk%2FChibiOS/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qmk%2FChibiOS/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/qmk","download_url":"https://codeload.github.com/qmk/ChibiOS/tar.gz/refs/heads/qmk-master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224906631,"owners_count":17389902,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-04T10:01:06.168Z","updated_at":"2025-07-09T12:31:03.171Z","avatar_url":"https://github.com/qmk.png","language":"C","funding_links":["https://opencollective.com/qmk-firmware"],"categories":["C"],"sub_categories":[],"readme":"*****************************************************************************\r\n*** Files Organization                                                    ***\r\n*****************************************************************************\r\n\r\n--{root}                        - ChibiOS directory.\r\n  +--readme.txt                 - This file.\r\n  +--documentation.html         - Shortcut to the web documentation page.\r\n  +--license.txt                - GPL license text.\r\n  +--demos/                     - Demo projects, one directory per platform.\r\n  +--docs/                      - Documentation.\r\n  |  +--build/                  - Documentation builders.\r\n  |  +--manual/                 - Manuals directory.\r\n  |  +--quality/                - Reports and metrics.\r\n  |  +--various/                - Various support files.\r\n  +--ext/                       - External libraries, not part of ChibiOS.\r\n  +--os/                        - ChibiOS components.\r\n  |  +--common/                 - Shared OS modules.\r\n  |  |  +--abstractions/        - API emulator wrappers.\r\n  |  |  |  +--cmsis_os/         - CMSIS OS emulation layer for RT.\r\n  |  |  |  +--nasa_osal/        - NASA Operating System Abstraction Layer.\r\n  |  |  +--ext/                 - Vendor files used by the OS.\r\n  |  |  +--ports/               - RTOS ports usable by both RT and NIL.\r\n  |  |  +--startup/             - Startup support.\r\n  |  +--ex/                     - EX component.\r\n  |  |  +--dox/                 - EX documentation resources.\r\n  |  |  +--include/             - EX header files.\r\n  |  |  +--devices /            - EX complex drivers.\r\n  |  +--hal/                    - HAL component.\r\n  |  |  +--boards/              - HAL board support files.\r\n  |  |  +--dox/                 - HAL documentation resources.\r\n  |  |  +--include/             - HAL high level headers.\r\n  |  |  +--lib/                 - HAL libraries.\r\n  |  |  |  +--complex/          - HAL collection of complex drivers.\r\n  |  |  |  |  +--mfs/           - HAL managed flash storage driver.\r\n  |  |  |  |  +--serial_nor/    - HAL managed flash storage driver.\r\n  |  |  |  +--fallback/         - HAL fall back software drivers.\r\n  |  |  |  +--peripherals/      - HAL peripherals interfaces.\r\n  |  |  |  +--streams/          - HAL streams.\r\n  |  |  +--osal/                - HAL OSAL implementations.\r\n  |  |  |  +--lib/              - HAL OSAL common modules.\r\n  |  |  +--src/                 - HAL high level source.\r\n  |  |  +--ports/               - HAL ports.\r\n  |  |  +--templates/           - HAL driver template files.\r\n  |  |     +--osal/             - HAL OSAL templates.\r\n  |  +--oslib/                  - RTOS modules usable by both RT and NIL.\r\n  |  |  +--include/             - OSLIB high level headers.\r\n  |  |  +--src/                 - OSLIB high level source.\r\n  |  |  +--templates/           - OSLIB configuration template files.\r\n  |  +--nil/                    - NIL RTOS component.\r\n  |  |  +--dox/                 - NIL documentation resources.\r\n  |  |  +--include/             - NIL high level headers.\r\n  |  |  +--src/                 - NIL high level source.\r\n  |  |  +--templates/           - NIL configuration template files.\r\n  |  +--rt/                     - RT RTOS component.\r\n  |  |  +--dox/                 - RT documentation resources.\r\n  |  |  +--include/             - RT high level headers.\r\n  |  |  +--src/                 - RT high level source.\r\n  |  |  +--templates/           - RT configuration template files.\r\n  |  +--various/                - Various portable support files.\r\n  +--test/                      - Kernel test suite source code.\r\n  |  +--lib/                    - Portable test engine.\r\n  |  +--hal/                    - HAL test suites.\r\n  |  |  +--testbuild/           - HAL build test and MISRA check.\r\n  |  +--nil/                    - NIL test suites.\r\n  |  |  +--testbuild/           - NIL build test and MISRA check.\r\n  |  +--rt/                     - RT test suites.\r\n  |  |  +--testbuild/           - RT build test and MISRA check.\r\n  |  |  +--coverage/            - RT code coverage project.\r\n  +--testex/                    - EX integration test demos.\r\n  +--testhal/                   - HAL integration test demos.\r\n\r\n*****************************************************************************\r\n*** Releases and Change Log                                               ***\r\n*****************************************************************************\r\n\r\n*** 21.11.4 ***\r\n- NEW: Added missing con text switch hook in ARMv7-M-ALT port.\r\n- NEW: FDCANv1 and FDCANv2 filter enabled.\r\n- NEW: Recursive locks in RT and NIL made optional, only enabled if the\r\n       underlying port supports the capability.\r\n- NEW: Added STM32 FDCANv2 for STM32H7xx\r\n- NEW: Improved DAC driver, updated STM32 DACv1.\r\n- NEW: Removed oscillator stabilization delay on STM32 LSE and HSE when\r\n       bypass mode is enabled.\r\n- NEW: STM32 TIM1 and TIM8 support added to SYSTICKv1 driver.\r\n- NEW: STM32 RTCv2 and RTCv3 modified to not use shadow registers.\r\n- NEW: Enhanced STM32F7xx MPU configuration in mcuconf.h.\r\n- NEW: I2C slave support in HAL high level driver.\r\n- NEW: Added settings for STM32 OCTOSPIv1 and OCTOSPIv2 TCR bits SSHIFT and\r\n       DHQC.\r\n- NEW: Reworked STM32 SDMMCv1 and SDMMCv2 drivers, better timeout and clock\r\n       handling, improved speed for aligned buffers.\r\n- FIX: Fixed ADCv4 common registers reset at start (bug 1296).\r\n- FIX: Fixed DMA2 not firing on STM32G431 (bug 1295).\r\n- FIX: Fixed wrong STM32 ADCv2 stop method (bug 1294).\r\n- FIX: Fixed STM32 OTGv1 driver does not re-enables endpoints on wakeup\r\n       (bug 1293).\r\n- FIX: Fixed missing assertion in OSLIB factory module (bug 1292).\r\n- FIX: Fixed problem in FDCANv1 driver for G4 (bug #1291).\r\n- FIX: Fixed problem in recursive locks functions (bug #1288).\r\n- FIX: Fixed ARMv8-M-ML port compile fail when FPU is enabled (bug #1281).\r\n- FIX: Fixed interrupts not enabled for STM32H735 TIM15, TIM16 and TIM17\r\n       (bug #1280).\r\n- FIX: Fixed wrong STM32 LSI activation check (bug #1279).\r\n- FIX: Fixed STM32 HAL UART ISR flaw (bug #1278).\r\n- FIX: Fixed race condition caused by chGuardedPoolAllocI() (bug #1277).\r\n- FIX: Fixed avoid shadowing with build-in pow10 function in chprintf.c\r\n       (bug #1274).\r\n- FIX: Fixed enabling PWM on TIM1, 3, 4 causes compile errors in\r\n       RT-STM32G0B1RE-NUCLEO64 (bug #1273).\r\n- FIX: Fixed unnecessary code in SNOR device drivers (bug #1265).\r\n- FIX: Fixed RP2040 HAL GPIO failed to compile (bug #1264).\r\n- FIX: Fixed channel 0 corruption on STM32 BDMAv1 (bug #1263).\r\n- FIX: Fixed wrong statistics in RT7 (bug #1262).\r\n- FIX: Fixed missing cache management during Cortex-M RAM initializations\r\n       (bug #1261).\r\n- FIX: Fixed RTC \u0026 TAMP interrupts not functional (bug #1260).\r\n- FIX: Fixed syntax errors in STM32H7xx/hal_lld_type2.h (bug #1259).\r\n- FIX: Fixed unwanted reset of cache on STM32H7xx (bug #1258).\r\n- FIX: Fixed invalid HSIDIV in STM32Ggxx clocks initialization (bug #1257).\r\n- FIX: Fixed incorrect RTC initialization on STM32G4/L4/L4+ (bug #1256).\r\n- FIX: Fixed syntax error in RP2040 GPIO driver (bug #1255).\r\n- FIX: Fixed undefined STM32_SDMMC_MAXCLK value for STM32H7 type 1 and 2\r\n       (bug #1254).\r\n- FIX: Fixed invalid checks on PLLP/R/Q dividers on STM32H7 (bug #1253).\r\n- FIX: Fixed remote wakeup failure in STM32 OTGv1 driver (bug #1252).\r\n- FIX: Fixed wrong use of hooks in RT/NIL (bug #1251).\r\n- FIX: Fixed SPI_MMC driver broken in 21.11.3 (bug #1249).\r\n\r\n*** 21.11.3 ***\r\n- NEW: STM32 DMA drivers now export an STM32_DMA_MAX_TRANSFER definition.\r\n- NEW: PAL events for RP2040 added.\r\n- NEW: Removed obsolete sandbox code from ARMv7-M port. Now ARMv7-M-ALT is\r\n       the official port for use with sandboxes.\r\n- NEW: Reworked HAL MAC driver, now with callback support.\r\n- NEW: Fixed setting of SYSCLK when derived from divided HSI16\r\n- NEW: Mass change: Source code convention changed from CRLF to just CR (Unix).\r\n- NEW: Fixed some corner cases in ADC5, added ADC reset on start().\r\n- NEW: Added a \"BufferedSIODriver\" class that implements the behavior of the\r\n       legacy Serial driver on top of a SIO implementation (buffering, events\r\n       and all).\r\n- NEW; Now hal.h includes cc_portab.h by default making it mandatory.\r\n- NEW: Moved HAL serial error flags into asynchronous channels interface\r\n       definitions.\r\n- NEW: Reworked HAL SIO driver.\r\n- NEW: Non-proprietary LLVM build support.\r\n- NEW: Added integration of LittleFS on top of our flash infrastructure.\r\n- NEW: Added a centralized errors handler under /os/common/utils. It will\r\n       replace those in HAL and SB and will be shared among multiple subsystems.\r\n- NEW: Added a new OOP model under /os/common/utils. It will replace the\r\n       one in HAL and will be shared among multiple subsystems.\r\n- NEW: Added EFL driver support for STM32F401/411.\r\n- FIX: Fixed broken support for STM32 UART9 and USART10 (bug #1248).\r\n- FIX: Fixed wrong initialization in STM32L1xx ADC driver (bug #1247).\r\n- FIX: Fixed wrong HSI48 support on STM32L0xx (bug #1246).\r\n- FIX: Fixed wrong DMA definitions for STM32L0xx I2C3 peripheral (bug #1245).\r\n- FIX: Fixed wrong path in STM32L053 ADC demo makefile (bug #1244).\r\n- FIX: Fixed missing semicolon in STM32 OTGv1 driver (bug #1243).\r\n- FIX: Fixed HSI48 not enabled for STM32L496/​4A6 (bug #1242).\r\n- FIX: Fixed problem in STM32 gpt_lld_polled_delay() implementation (bug #1241).\r\n- FIX: Fixed invalid delay loop in STM32G0/WL ADCv5 driver (bug #1240).\r\n- FIX: Fixed STM32_MCOSEL setting problem (bug #1239).\r\n- FIX: Fixed problems with cache in STM32 SDMMC drivers (bug #1238).\r\n- FIX: Fixed missing clock enables for some GPIOS on some STM32L4s (bug #1237).\r\n- FIX: Fixed old bugs in serial driver header (bug #1236).\r\n- FIX: Fixed virtual timers lockup under rare conditions (bug #1235).\r\n- FIX: Fixed STM32 RTCv2 locks for a second (bug #1234).\r\n\r\n*** 21.11.2 ***\r\n- NEW: Added dubby cycles support for SNOR using the normal SPI driver.\r\n- NEW: Disabled priority check on STM32 EXTI interrupts when the default\r\n       ISR is disabled. This allows for fast interrupts.\r\n- NEW: Added support for UART9 and USART10 on STM32H7.\r\n- NEW: Improved MFS to use explicitly non-cacheable buffers for potentially\r\n       DMA-accessible I/O areas.\r\n- NEW: FatFS now functional on STM32H7xx, added a target to the VFS demo.\r\n- NEW: Improved cache settings in STM32H7xx mcuconf.h.\r\n- NEW: Modified SDMMCv2 to allow for uncached buffers, tested on STM32H7xx.\r\n- NEW: Added OCTOSPIv2 driver using MDMA for STM32H7xx.\r\n- NEW: Added demos for STM32H723ZG Nucleo144 and STM32H735ZI Discovery boards.\r\n- NEW: Added support for STM32H723/25/33/35/A3/B3/A3Q/B3Q.\r\n- NEW: Updated ST Cube headers for STM32H7xx.\r\n- NEW: Improved HAL flash interface with mutual exclusion methods, improved\r\n       EFL and SNOR drivers to use it.\r\n- NEW: Added EFL driver implementation for STM32G4xx.\r\n- NEW: STM32G0B1 USBv2 driver.\r\n- NEW: USBv1 driver optimization and removal of a potential race condition\r\n       (not demonstrated).\r\n- NEW: Added elfAcquireBus()/eflReleaseBus() functions to EFL driver.\r\n- NEW: Added option to copy vectors in RAM on GCC startup for ARMv6-M,\r\n       ARMv7-M and ARMv8-M-ML.\r\n- NEW: On STM32WBxx added a check on STM32_LSI_ENABLE required by IWDG.\r\n- NEW: Added SPIv2 support also to STM32WB and STM32WL.\r\n- FIX: Fixed uninitialized return message in EX subsystem (bug #1267).\r\n- FIX: Re-opened and fixed bug #1100.\r\n- FIX: Fixed wrong buffers toggling in STM32 USBv1 isochronous mode (bug #1232).\r\n- FIX: Fixed STM32 RTCv2 registers synchronization errata (bug #1231).\r\n- FIX: Fixed STM32 ADCv1 and ADCv5 do not allow prescaler divide value of 1\r\n       (bug #1230).\r\n- FIX: Fixed missing check on STM32 SPIv2 DMA settings for SPI1 (bug #1229).\r\n- FIX: Fixed ARMv6-M port Keil compiler fail (bug #1228).\r\n- FIX: Fixed invalid handling of lwIP NETIF_FLAG_LINK_UP flag (bug #1227).\r\n- FIX: Fixed missing TIM16/17 errata handling for STM32G0xx (bug #1226).\r\n- FIX: Fixed missing ADC errata handling for STM32G0xx (bug #1225).\r\n- FIX: Fixed problem in the HAL I2C fallback driver (bug #1224).\r\n- FIX: Fixed GPIOH clock not enabled on STM32L432 (bug #1223).\r\n- FIX: Fixed invalid cumulative time stat in RT (bug #1222).\r\n- FIX: Fixed incorrect type cast in TIME_I2US() (bug #1221).\r\n- FIX: Fixed missing clock disable for STM32 OCTOSPI2 (bug #1220).\r\n- FIX: Fixed wrong condition in STM32 sio_lld_read() function (bug #1219).\r\n- FIX: Fixed STM32 Ethernet driver causes system hang after 2^31 packets\r\n       sent/received (bug #1218).\r\n- FIX: Fixed clock re-initialization problem in STM32 USARTv2 and USARTv3\r\n       drivers (bug #1217).\r\n- FIX: Fixed assertion on initialization of STM32H7xx (bug #1216).\r\n- FIX: Fixed Virtual Timers failure in a specific condition (bug #1215).\r\n- FIX: Fixed invalid STM32_OTG_STEPPING for STM32F40_41xxx (bug #1214).\r\n- FIX: Fixed SPIv2 driver compile fails when SPI_USE_SYNCHRONIZATION is FALSE\r\n       (bug #1213).\r\n- FIX: Fixed invalid state transition in SNOR flash driver (bug #1212).\r\n- FIX: Fixed missing exit condition in sioSynchronizeRX() and\r\n       sioSynchronizeTX() (bug #1211).\r\n- FIX: Some MISRA-related fixes.\r\n- FIX: Fixed missing check in chobjcaches.h (bug #1210).\r\n- FIX: Fixed misspelled chTraceSuspendI() function name (bug #1209).\r\n- FIX: Fixed RT testbuild application broken (bug #1208).\r\n\r\n*** 21.11.1 ***\r\n- NEW: Added EFL driver implementation for STM32G4xx.\r\n- NEW: STM32G0B1 USBv2 driver.\r\n- NEW: USBv1 driver optimization and removal of a potential race condition\r\n       (not demonstrated).\r\n- NEW: Added elfAcquireBus()/eflReleaseBus() functions to EFL driver.\r\n- NEW: Added STM32L073RZ-Nucleo64 to USB-CDC \"multi\" demo. Removed old demo.\r\n- NEW: Added an STM32 WDG \"multi\" demo. Removed all old WDG demos.\r\n- NEW: Added option to copy vectors in RAM on GCC startup for ARMv6-M,\r\n       ARMv7-M and ARMv8-M-ML.\r\n- NEW: On STM32WBxx added a check on STM32_LSI_ENABLE required by IWDG.\r\n- NEW: Added SPIv2 support also to STM32WB and STM32WL.\r\n- FIX: Fixed PWR_CR2_USV not set in STM32L4+ mcuconf.h file (bug #1207).\r\n- FIX: Fixed USB not enabled on STM32F103x6 (bug #1206).\r\n- FIX: Fixed RT test suite build fails when CH_CFG_USE_TIMESTAMP is FALSE\r\n       (bug #1205).\r\n- FIX: Fixed wrong number of CAN filters for STM32L496/9A6 (bug #1204).\r\n- FIX: Fixed DMA stream not disabled in STM32 QUADSPIv1 driver (bug #1203).\r\n- FIX: Fixed I2C4 DMA streams for STM32L496 (bug #1202).\r\n- FIX: Fixed STM32_SDMMC2_NUMBER on STM32H7 (bug #1201).\r\n- FIX: Fixed STM32G0B1 demo application hangs debuggers (bug #1200).\r\n\r\n*** 21.11.0 ***\r\n- NEW: STM32 ADCv2 now supports return code on start function.\r\n- NEW: Integrated FatFS with lwIP HTTPD, now it is possible to serve files\r\n       using HTTP from a storage device.\r\n- NEW: Updated FatFS to version 0.14b.\r\n- NEW: SPIv2 driver has been implemented on: STM32F0, STM32F1, STM32F3,\r\n       STM32F4, STM32F7, STM32G0, STM32G4, STM32L0, STM32L1, STM32L4,\r\n       STM32L4+, STM32H7.\r\n- NEW: New SPIv2 driver model, it is compatible with the previous SPI driver\r\n       and introduces: better runtime errors handling, slave mode,\r\n       data synchronization function, various other improvements.\r\n- NEW: Added an alternate port for ARMv7-M, it uses less RAM and it is\r\n       faster at interrupt processing, it is slightly slower at\r\n       thread-to-thread context switch so it is not a full replacement.\r\n- NEW: Now all xxxStart() functions in HAL are able to report a driver\r\n       activation error.\r\n- NEW: Support for STM32G031, STM32G041, STM32G0B1, STM32G0C1.\r\n- NEW: Made STM32H7 non-cacheable memory option also shareable.\r\n- NEW: EFL driver and demo for STM32F3xx.\r\n- NEW: New unit test subsystem under /os/test. Now it is officially\r\n       ChibiOS/TEST.\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fqmk%2FChibiOS","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fqmk%2FChibiOS","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fqmk%2FChibiOS/lists"}