Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1170 commits
Select commit Hold shift + click to select a range
c870410
Add more checks to ExtraChecks::Kernel to help porting drivers to Mio…
fedetft Mar 11, 2026
ea11246
Fix compiler dependencies script and document how to build the compiler
fedetft Mar 12, 2026
4f29b39
Improve Linux compiler installer
fedetft Mar 13, 2026
48c9fa4
Fix building redistributable compiler for Windows
fedetft Mar 13, 2026
815aadb
Fix line endings
fedetft Mar 16, 2026
213db16
New clock configuration method for all stm32f4 boards.
danielecattaneo Mar 5, 2026
b33532e
New clock configuration method for all stm32f0 boards.
danielecattaneo Mar 5, 2026
cb82e45
New clock configuration method for all stm32l0 boards.
danielecattaneo Mar 5, 2026
3b48a22
Fix line endings
fedetft Mar 16, 2026
c0c091c
New clock configuration method for all stm32f1 boards.
danielecattaneo Mar 10, 2026
a07249b
Fix warning in vaisala BSP
danielecattaneo Mar 10, 2026
49a2e0a
GCC 15: Always warn (except when compiling for Windows) when there's …
danielecattaneo Mar 10, 2026
d675677
Make sure both HSI and HSE oscillator types are defined for all STM32…
danielecattaneo Mar 10, 2026
067e989
New clock configuration method for all stm32f2 boards.
danielecattaneo Mar 10, 2026
f58fcc7
Minor cleanup
danielecattaneo Mar 10, 2026
fa72164
Make stm32l1 clock configuration method uniform with other stm32 boards.
danielecattaneo Mar 10, 2026
ea10264
Disable non-working DVFS support in sony-newman.
danielecattaneo Mar 11, 2026
f2878c2
New clock configuration method for all stm32f3 boards
danielecattaneo Mar 11, 2026
1e74925
New clock configuration method for all stm32l4 boards
danielecattaneo Mar 13, 2026
a033e9c
New clock configuration method for all stm32f7 boards
danielecattaneo Mar 13, 2026
2da5920
New clock configuration method for all stm32h7 boards
danielecattaneo Mar 13, 2026
8d147ad
New clock configuration method for all stm32h5 boards. Note: untested…
danielecattaneo Mar 13, 2026
4f92145
Fix undefined behavior in STM32H7 PLL driver.
danielecattaneo Mar 13, 2026
a89aa82
New clock configuration method for all stm32u5 boards. Note: untested.
danielecattaneo Mar 13, 2026
80bde02
Remove remaining uses of SYSCLK_FREQ_..., HSE_VALUE and RUN_WITH_HSI
danielecattaneo Mar 14, 2026
8e7b6cf
Fix 48MHz on STM32F4
danielecattaneo Mar 14, 2026
820558d
Fix stm32l4r9 default clock
danielecattaneo Mar 14, 2026
0297de7
Fix build system Windows compatibility
fedetft Mar 17, 2026
260e080
Inline IRQosTimerSetPreemption and improve documentation
fedetft Mar 5, 2026
997155f
Uniform gating of IRQinitCoreLocalPreemptionTimer()
fedetft Mar 17, 2026
b0f485b
Optimize timeconversion to allow constant folding
fedetft Mar 17, 2026
a8fd063
Clock configuration, use the cpuFrequency constants in atsam4l boards
fedetft Mar 17, 2026
5918bc8
The CPU frequency is now available as a constant on all boards, calle…
fedetft Mar 17, 2026
9ab120e
Use inlining and constant folding to compute the scheduler time quant…
fedetft Mar 17, 2026
04bb8f3
Switch to compiling processes too with C++23
fedetft Mar 17, 2026
2c324a3
Fix 48MHz generation on stm32f4, correctly this time
danielecattaneo Mar 17, 2026
5fe43cf
Fix tinyusb example for Miosix 3.
danielecattaneo Mar 17, 2026
2698d04
Fix CMake for Miosix 3's new compiler
danielecattaneo Mar 17, 2026
6811d91
CMake: use absolute paths directly
danielecattaneo Mar 17, 2026
0336c13
CMake: improvements to path resolution
danielecattaneo Mar 17, 2026
1472e42
CMake: various fixes for new compiler
danielecattaneo Mar 17, 2026
c505c68
CMake: fix compilation of testsuite
danielecattaneo Mar 17, 2026
a94d03b
First steps to supporting again lpc2000
fedetft Mar 18, 2026
3ce1dc5
Fix stm32f072rb
danielecattaneo Mar 18, 2026
e89fe64
Fix misaligned accesses in newlib 4.6.0
danielecattaneo Mar 18, 2026
082531f
Modify compiler install-script.sh to pass DESTDIR also to GCC configu…
fedetft Mar 18, 2026
34cf3c6
Fix towards building compiler for Windows
fedetft Mar 20, 2026
6af9d74
Fix building compiler for Windows
fedetft Mar 21, 2026
82f680c
Build mx-buildromfs and mx-maputil together with the compiler
fedetft Mar 22, 2026
d854ce3
Fix warning when compiling newlib
fedetft Mar 22, 2026
fe68f08
Fix _MIOSIX_GCC_PATCH_MINOR version in the compiler
fedetft Mar 22, 2026
244157b
Add missing stubs to libc, needed to pass configure checks in libstdc++
fedetft Mar 24, 2026
ff58d4b
Bump Miosix to v2.99. Version 3 will be released shortly
fedetft Mar 24, 2026
091b806
GCC 15 mp4.2: Add cmake check in install script and allow overriding …
danielecattaneo Mar 24, 2026
4dd2432
GCC 15 mp4.2: Remove dist directory in cleanup script and check if it…
danielecattaneo Mar 24, 2026
0e4351d
GCC 15 mp4.2: Fix indentation in scripts
danielecattaneo Mar 24, 2026
f04e99c
GCC 15 mp4.2: Add checkdeps script for macOS
danielecattaneo Mar 24, 2026
21bd2c0
GCC 15 mp4.2: Improve compression ratio when building macOS packages
danielecattaneo Mar 24, 2026
1bb7f0b
Fix LPC2000 support
fedetft Mar 29, 2026
07be492
Fix IRQisIrqRegistered() in Cortex M CPUs
fedetft Mar 30, 2026
9373bfa
Switch to using mx-buildromfs distributed with the compiler
fedetft Mar 22, 2026
550c83b
Move doc, examples, tools directories to top level
danielecattaneo Mar 19, 2026
72cdeb8
Temporarily move arch and config directories away
danielecattaneo Mar 19, 2026
d2ada1f
Move back arch/cpu
danielecattaneo Mar 19, 2026
bdb929d
Reorganize drivers and CMSIS directories.
danielecattaneo Mar 19, 2026
7cdf711
Group drivers depending on their peripheral type
danielecattaneo Mar 19, 2026
d921648
Reorganize hardware support files into board and chip
danielecattaneo Mar 19, 2026
bdb890d
Move LPC2000 bootstrap code to chip directory.
danielecattaneo Mar 19, 2026
119ee8f
Move drivers stranded to board definitions to the drivers directory.
danielecattaneo Mar 19, 2026
bfd8457
Move board config to reflect the new directory organization
danielecattaneo Mar 19, 2026
81acc88
Split config/Makefile.inc in parts, per board, chip (previously arch)…
danielecattaneo Mar 19, 2026
08e12aa
Move a few last leftover drivers
danielecattaneo Mar 19, 2026
c83b977
Update file paths
danielecattaneo Mar 19, 2026
6a5e99c
Cleanup makefiles, removing one level of nested includes
danielecattaneo Mar 20, 2026
cf06863
Minor makefile fixes
danielecattaneo Mar 20, 2026
1f49bd5
Unselect board
fedetft Mar 23, 2026
ee4fd31
Change version back to 3 in the unstable branch
fedetft Mar 24, 2026
274adb2
Update compiler readme and fix typos
fedetft Mar 24, 2026
454fe22
Fix missing include in software_i2c.h
danielecattaneo Mar 30, 2026
a35737c
Fix wrong code in sad_trombone example.
danielecattaneo Mar 30, 2026
2846a37
Fix processes makefile
danielecattaneo Mar 30, 2026
f327670
Fix testsuite makefile
danielecattaneo Mar 30, 2026
682dcfe
Change README to a markdown file
danielecattaneo Mar 30, 2026
101a44e
Allow projects to override basic configuration parameters without cop…
danielecattaneo Mar 31, 2026
c6a890a
Update makefiles of examples
danielecattaneo Mar 31, 2026
2bfe769
Fix CMake files for new directory structure
danielecattaneo Mar 31, 2026
11ec50f
CMake: Improve option handling
danielecattaneo Mar 31, 2026
7fe14bf
CMake: Forgot to update stm32f429 cmake file.
danielecattaneo Mar 31, 2026
7f9853b
CMake: More flexible overriding of config files
danielecattaneo Mar 31, 2026
e2a429d
CMake: Fix RomFs support
danielecattaneo Mar 31, 2026
e9bbd49
CMake: Properly set compilation options
danielecattaneo Mar 31, 2026
55e9818
CMake: Add option for printing available linker scripts
danielecattaneo Mar 31, 2026
5f6ddf5
CMake: More fixes to processes and RomFs support
danielecattaneo Mar 31, 2026
89ff205
CMake: update examples and test CMake files.
danielecattaneo Mar 31, 2026
ffb2bf1
Remove the old Makefile.inc
danielecattaneo Mar 31, 2026
3f9b97f
Fix include in testsuite
fedetft Apr 1, 2026
7d2d827
Add lpc2138_generic board
fedetft Apr 1, 2026
2959d63
Disable filesystem support by default
fedetft Apr 1, 2026
ab5553d
Sort boards alphabetically
fedetft Apr 1, 2026
b99fae1
Relace _ARCH* #defines with _CHIP*
fedetft Apr 1, 2026
9538672
Fix compile_all_boards
fedetft Apr 1, 2026
6ab99ba
Fix MPU region check bug causing pointer at the top end of a region b…
fedetft Apr 4, 2026
3a3f565
CortexM33: implement syscall validation, optimize MPU code
fedetft Apr 4, 2026
db00032
Fix for CortexM33 MPU limitation
fedetft Apr 4, 2026
6cb7f51
Add syscall parameter validation test in testsuite
fedetft Apr 4, 2026
baa4733
Remove code duplication
fedetft Apr 4, 2026
73204ea
Add some delay test code
fedetft Apr 4, 2026
21e3c0f
Simplify CortexM33 memory attributes
fedetft Apr 4, 2026
4a07a89
Modernize ProcessPool and remove dependency on MPU code
fedetft Apr 5, 2026
c488469
Implement region rounding for CortexM33
fedetft Apr 5, 2026
20478ea
Fix compiling for CPUs without MPU
fedetft Apr 6, 2026
0c83637
Fix testsuite for CPUs without MPU
fedetft Apr 6, 2026
18a5fbf
Consistent filesystem initialization in BSPs
fedetft Apr 8, 2026
3696778
Generic boards shouldn't toggle pins
fedetft Apr 8, 2026
825cc6b
Remove legacy hppw methods
fedetft Apr 8, 2026
1d0a40f
Optimize QueueBase: only wake thread whe necessary
fedetft Apr 8, 2026
5c79151
Add support to apply the same MPU configuration to all cores at boot
fedetft Apr 9, 2026
8f9fc7c
Update comment
fedetft Apr 9, 2026
dab089a
Rename ARCH_INC to CHIP_INC in makefiles
danielecattaneo Apr 7, 2026
471df8d
Define compiler flags and source files in separate variables for chip…
danielecattaneo Apr 7, 2026
4263a76
Move compiler options that are the same for all chips to Makefile.inc
danielecattaneo Apr 7, 2026
7556d7b
Fix Makefile comments.
danielecattaneo Apr 7, 2026
abcb20b
Assemble the kernel compilation flag in a single place. Do not allow …
danielecattaneo Apr 7, 2026
0385cf8
Replace ARCH_SRC with BOARD_SRC and CHIP_SRC individually
danielecattaneo Apr 7, 2026
7d6e257
User-configurable C(XX)_FLAGS for processes. Split CPU flags from CHI…
danielecattaneo Apr 7, 2026
397d1b1
Add compile_all_boards for CMake
danielecattaneo Apr 7, 2026
343cd24
Backport Makefile variable changes to CMake
danielecattaneo Apr 7, 2026
1b9f16f
Add CPU core count detection to compile_all_boards
danielecattaneo Apr 7, 2026
fbaae85
CMake: Make linker garbage collection a on-by-default configurable flag
danielecattaneo Apr 9, 2026
fb01a21
Minor improvements to L053 clock configuration code
danielecattaneo Apr 9, 2026
dd61cae
Decomment line that should not have been commented.
danielecattaneo Apr 9, 2026
0fd54c3
CMake: Fix process examples and testsuite compilation (filesystem now…
danielecattaneo Apr 9, 2026
e098206
CMake: automatically include Miosix's helper functions
danielecattaneo Apr 9, 2026
8723cfc
CMake: Reimplement the `make program` target.
danielecattaneo Apr 9, 2026
f9e41da
CMake: merge print helpers in a single file
danielecattaneo Apr 9, 2026
0564b93
CMake: fix missing copyright notice.
danielecattaneo Apr 9, 2026
658a18b
CMake: remove need for top-level makefile to define MIOSIX_KPATH
danielecattaneo Apr 9, 2026
135469f
CMake: Print size of elf files just like with makefiles.
danielecattaneo Apr 9, 2026
86298a2
CMake: comments and whitespace
danielecattaneo Apr 11, 2026
d96b1fb
Makefiles: Add flags for configuring compiler optimization in processes
danielecattaneo Apr 11, 2026
55a5b28
Move back tools required for compilation to miosix/_tools.
danielecattaneo Apr 11, 2026
78d61b4
Fix build system bugs with choosing configuration directories
danielecattaneo Apr 11, 2026
92cb238
Move templates to template directory
danielecattaneo Apr 11, 2026
27547d5
Add missing Makefile.inc
fedetft Apr 12, 2026
44a3a96
Define PREFIX in a more meaningful way
fedetft Apr 12, 2026
a695877
Add improved/workaround size program
fedetft Apr 12, 2026
e7ae959
Two level linker scripts in Miosix to factor out common code
fedetft Apr 14, 2026
c6b0440
Remove leftover commented code
fedetft Apr 14, 2026
0b3df91
Use linker script include command
fedetft Apr 14, 2026
2a83528
Fix linker script checks
fedetft Apr 14, 2026
e76debc
Fix line endings
fedetft Apr 15, 2026
2990a95
Makefiles & CMake: change config path include to the config directory…
danielecattaneo Apr 11, 2026
4418863
CMake: add postlinker options to miosix_add_process
danielecattaneo Apr 11, 2026
e9e5acf
Move serial.h to interfaces
danielecattaneo Apr 13, 2026
6eca345
Use forwarding headers for implementing the serial interface.
danielecattaneo Apr 13, 2026
8255956
Rename directory needed to compile the kernel to "tools" from "_tools"
danielecattaneo Apr 14, 2026
147b3f2
Update init_project_out_of_Git_tree.pl
fedetft Apr 16, 2026
ccef954
Remove obsolete documentation
fedetft Apr 16, 2026
ef69323
Link to miosix.org via https
fedetft Apr 16, 2026
19df4f2
Add note on the use of git branches
fedetft Apr 16, 2026
3d2f9f5
Update comment referring to a tool.
danielecattaneo Apr 16, 2026
8ebabf9
Add tables in linker script describing what section goes where.
danielecattaneo Apr 16, 2026
9a628f4
Fix doxygen.
danielecattaneo Apr 16, 2026
cfe74a0
Fix bootloader documentation and paths in makefiles
danielecattaneo Apr 16, 2026
898d1c8
Update paths in gitignore.
danielecattaneo Apr 16, 2026
5f52509
Simplify CMake main scripts.
danielecattaneo Apr 16, 2026
6d307c7
Fix init_project_out_of_git_tree.pl
danielecattaneo Apr 16, 2026
b5dd006
CMake: fix for new linker scripts
danielecattaneo Apr 16, 2026
34cc4b7
Fix compile all boards cmake after commit 92cb238f
danielecattaneo Apr 16, 2026
21444cd
CMake: Check compiler version like with makefiles.
danielecattaneo Apr 16, 2026
adc3ca3
Remove old CMake build test script.
danielecattaneo Apr 16, 2026
8193b10
CMake: use new size tool
danielecattaneo Apr 16, 2026
f974dfb
CMake: automatically add mandatory compilation options for specific l…
danielecattaneo Apr 16, 2026
3dff706
CMake: Cleanup configuration summary print
danielecattaneo Apr 16, 2026
85fdb93
Add CMake support for stm3220g-eval
danielecattaneo Apr 16, 2026
527f48c
Minor Makefile formatting fixes
danielecattaneo Apr 16, 2026
5625d50
Fix typo in stm32h723 config makefile.
danielecattaneo Apr 16, 2026
055163c
Add missing board name query defines to efm32g222f128_generic.
danielecattaneo Apr 16, 2026
287f370
CMake: automatically port all boards
danielecattaneo Apr 16, 2026
9d730a2
CMake: add tools used to automatically port all boards
danielecattaneo Apr 16, 2026
95695ec
Fix typo in stm32l476rg_nucleo config makefile.
danielecattaneo Apr 16, 2026
3942551
CMake: add all boards to the supported list
danielecattaneo Apr 16, 2026
5738d9d
CMake: work around SUBLIST semantics not being able to produce zero-l…
danielecattaneo Apr 16, 2026
98bf7ce
CMake: fix build for sony-newman
danielecattaneo Apr 16, 2026
b28cf94
CMake tools: add copyright notices and comments for explaining the pu…
danielecattaneo Apr 16, 2026
5b2bbec
Add list of features and repo directory structure to readme.
danielecattaneo Apr 17, 2026
3787afa
CMake: always print board variant and linker script lists by default,…
danielecattaneo Apr 17, 2026
f7627bf
CMake: fix default config path
danielecattaneo Apr 17, 2026
35e601b
CMake: fix bug in automatic linker script command line arguments addi…
danielecattaneo Apr 17, 2026
86c5606
CMake: Rename MIOSIX_OPT_BOARD to MIOSIX_BOARD
danielecattaneo Apr 17, 2026
754c2fb
Move the tinyusb template to the templates directory
danielecattaneo Apr 17, 2026
f476e2f
Fix readme of TinyUSB template
danielecattaneo Apr 17, 2026
84b06c8
CMake: remove MIOSIX_BOARD settings on generic examples
danielecattaneo Apr 17, 2026
e28ae8c
CMake: do not advertise clang support in the default template as it i…
danielecattaneo Apr 17, 2026
93174b2
CMake: more minor fixes
danielecattaneo Apr 17, 2026
1bb148f
stm32f207zg_nucleo: add processes linker script
danielecattaneo Apr 17, 2026
1f4be65
CMake: fix missing dependency links.
danielecattaneo Apr 17, 2026
e28d5aa
CMake: fix programming command line for marco_ram_board
danielecattaneo Apr 17, 2026
2f88631
Make driver source name consistent, fix #include of some sd drivers
fedetft Apr 18, 2026
7f7419f
Avoid using cacheLine in MPU code
fedetft Apr 18, 2026
29fcb1e
Call MPU code in common boot.cpp, move XRAM information to linker script
fedetft Apr 18, 2026
d991db0
Move XRAM info to boot.cpp, print xram size
fedetft Apr 19, 2026
2ddbd97
Move MPU code from drivers to cpu
fedetft Apr 19, 2026
adc3a0e
Add interfaces/cache.h to get ready for vendor-specific caches, move …
fedetft Apr 19, 2026
d2e689b
Mark private interfaces
fedetft Apr 19, 2026
9276975
Fix testsuite
fedetft Apr 19, 2026
241145f
Fix wrong compiler assumption
fedetft Apr 19, 2026
b5268aa
Also print process pool info at boot
fedetft Apr 19, 2026
d0ef150
Fix example
fedetft Apr 19, 2026
2e42578
Bump Miosix to v3.00
fedetft Apr 19, 2026
e3bd012
Fix stm32f4 not working at 180MHz
fedetft Apr 20, 2026
00fc55b
Add linker script for processes+xram for stm32f429 discovery board
fedetft Apr 20, 2026
199dec9
Comment out dead code
fedetft Apr 20, 2026
a7a3800
Fix bus prescalers in stm32f401/f411
fedetft Apr 20, 2026
0ca3061
Fix INCLUDE_DIRS not being observed in Makefiles.
danielecattaneo Apr 20, 2026
f5b110b
Update Makefile version and examples makefiles.
danielecattaneo Apr 20, 2026
331f8ec
Fix PLL wait timeout for stm32f7
fedetft Apr 21, 2026
d9aa280
Avoid switching the clock source twice
fedetft Apr 21, 2026
ac56fd9
Remove unused PLL drivers
fedetft Apr 22, 2026
3667272
Preliminary support for CortexM33 hardware stack overflow check
fedetft Apr 23, 2026
26c47e6
Improve scheduler performance
fedetft Apr 23, 2026
e4a5b09
Fix compiling with processes
fedetft Apr 23, 2026
1d7a488
Improve userspace syscalls performance
fedetft Apr 23, 2026
b9abfce
Fix Makefile SUBDIRS support on Windows
danielecattaneo Apr 23, 2026
01409d8
Optimize assembly code of context swtiches
fedetft Apr 23, 2026
188afae
Stronger W^X no longer relying on FLASH to be inherently read-only
fedetft Apr 24, 2026
fe68d0a
Move MPU initialization after static initialization
fedetft Apr 24, 2026
2c53d62
Get rid of KernelspaceMpuConfiguration as it's no longer required
fedetft Apr 24, 2026
e5bb1af
Move XRAM size computation inside IRQenableMPU to avoid code duplication
fedetft Apr 24, 2026
39b04fb
Add processes support for CortexM33
fedetft Apr 25, 2026
32e735e
Fix unwanted fallthru in ELF loader
carpikes Apr 25, 2026
97aa176
Check the presence of the data segment
fedetft Apr 26, 2026
0879d9b
Fix another fallthrough
fedetft Apr 26, 2026
7542e60
Small optimization in loading elf files
fedetft Apr 26, 2026
fd0bb06
Add commented out debug code
fedetft Apr 26, 2026
bab3bb4
Fix for region that was left writable and executable
fedetft Apr 26, 2026
c42115e
Deduplicate endianness implementation for ARMv6M/v7M
fedetft Apr 26, 2026
71e5112
Add ARMv8M CPU architecture
fedetft Apr 26, 2026
17f49eb
Add support for CortexM33 hardware stack overflow detection
fedetft Apr 26, 2026
7318aaf
Get ~2x speed boost on stm32u5 by enabling ICACHE
fedetft Apr 26, 2026
efecd38
Update wandstem os_timer driver to Miosix 3
fedetft Apr 26, 2026
361e8c3
Bump Miosix to v3.01
fedetft Apr 26, 2026
41a263f
build: add C-SKY (csky-miosix-elf) toolchain and CK803S build support
fenfir Jul 23, 2026
7c457b9
cskyv2: add CK803S (C-SKY V2) CPU port
fenfir Jul 23, 2026
3f7c92a
kernel: cskyv2 deferred context-switch support
fenfir Jul 23, 2026
0350b1a
hr_c7000: add HR_C7000 chip peripheral layer
fenfir Jul 23, 2026
0df303f
hrc7000_hd2: add Ailunce HD2 board support
fenfir Jul 23, 2026
b531bde
cskyv2: idle sleepCpu() via the C-SKY wait instruction
fenfir Jul 23, 2026
54a42a7
hrc7000_hd2: route stdout/console through a UART0 Device
fenfir Jul 23, 2026
10e25b7
hrc7000_hd2: add port README (architecture, build, limitations)
fenfir Jul 23, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
11 changes: 6 additions & 5 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# Exclude doxygen
miosix/_doc/doxygen/html/*
doc/doxygen/html/*

# Exclude temporary files
main.elf
Expand All @@ -15,11 +15,12 @@ image.uf2
*.d

# Exclude build directories and host executables
miosix/_tools/filesystems/build
miosix/_tools/filesystems/buildromfs
miosix/_tools/bin2uf2/build
miosix/_tools/bin2uf2/bin2uf2
tools/bin2uf2/bin2uf2

# Exclude all build directories
build

# Exclude Mac OS X temporary
._*
.DS_Store
build-docker/
3 changes: 0 additions & 3 deletions .gitmodules

This file was deleted.

50 changes: 0 additions & 50 deletions Makefile

This file was deleted.

150 changes: 150 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,150 @@
# Welcome to the Miosix Kernel

Miosix (Minimal Operating System with POSIX) is a real-time operating system
for 32-bit microcontrollers. It implements a new paradigm, the
**fluid kernel** [1]: applications can be written to run in kernel space
(*unikernel*-like), or in userspace with the same set of APIs.

Miosix additionally features:

- Focus on **C++** support, not just C
- Support for **standard APIs**:
- C and C++ standard libraries (STL included)
- POSIX thread API
- C++ exception handling
- **SMP Multicore** support
- **Memory protection** for processes on microcontrollers with MPUs
- Built-in **virtual filesystem** (VFS), integrated with the libc, supporting:
- FAT32 for external drives like SD cards
- LittleFs for non-volatile internal storage, like SPI Flash chips
- RomFs for read-only on-code-flash file storage
- **Flexible scheduler subsystem** with the ability to choose between
- Priority scheduling
- Earliest Deadline First (EDF) scheduling
- Control-based scheduling [2]
- **Scalable code size**, configurable by removing features you don't need
(~100KiB as a fluid kernel with userspace processes support and virtual filesystem, down to ~10KiB as a unikernel with all optional features removed)

## Getting started

You can find information on how to configure and use the kernel
at the following url: https://miosix.org

Miosix development goes on in the testing and unstable branches.
The master branch points to the latest stable release.

## Directory structure

Directories marked with `[x]` contain code or configuration files that are used
to build the kernel while directories marked with `[ ]` contain other stuff
(documentation, examples).

```
[x] //Root directory, contains the application code
|
+--[ ] doc //Kernel documentation (doxygen + pdf + txt)
|
+--[ ] examples //Contains some example applications
|
+--[ ] templates //Contains application templates
| |
| +--[ ] simple //Template for kernel-mode applications
| |
| +--[ ] processes //Template for kernel and user-mode applications
|
+--[ ] tools //Miscellaneous tools for Miosix users
| |
| +--[ ] bootloaders //Custom bootloaders for some boards
| | //Mostly used for running Miosix in RAM without a
| | //debugger
| |
| +--[ ] compiler //Contains scripts used to build GCC with the
| | //patches required to compile the kernel
| |
| +--[ ] testsuite //Contains the kernel testsuite
| .
| .
|
+--[x] miosix //Contains all Miosix OS code
|
+--[x] cmake //CMake files used by the Miosix CMake build system
|
+--[x] config //Default template configuration makefile fragments
| | //and header files
| |
| +--[x] board //Board-specific configuration
|
+--[x] e20 //Contains the kernel's event driven API
|
+--[x] filesystem //Filesystem code
|
+--[x] interfaces //Contains interfaces between kernel and
| //architecture dependent code
|
+--[x] interfaces_private //Private interfaces for the kernel
|
+--[x] kercalls //Implementation of libc primitives for kernel mode
|
+--[x] kernel //Contains the architecture independent kernel part
| |
| +--[x] scheduler //Contains the various schedulers
| |
| +--[x] priority
| |
| +--[x] control_based
| |
| +--[x] edf
|
+--[x] ldscripts //Base linker script files
| //Boards include linker script fragments from here
| //to make full linker scripts
|
+--[x] tools //Scripts used by the Miosix build system
|
+--[x] util //Contains architecture independent utility code
|
+--[x] arch //Contains architecture dependent code
|
+--[x] board //Board-specific code and definitions
| |
| +--[x] lpc2138_miosix_board //Name of folder is the board name
| | |
| | +--[x] interfaces-impl //Implmentation of miosix/interfaces
| | |
| | +--[x] Makefile.inc //Build system configuration
| | |
| | +--[x] ... //Linker scripts,
| . //openocd scripts
| . Other boards
|
+--[x] chip //Chip-family-specific code and definitions
| |
| +--[x] lpc2000 //Name of folder is the chip family name
| | |
| | +--[x] interfaces-impl //Implmentation of miosix/interfaces
| | |
| | +--[x] Makefile.inc //Build system configuration
| .
| . Other chip families
|
+--[x] cpu //CPU-architecture-specific code and definitions
| |
| +--[x] armv4 //Name of folder is the CPU architecture
| | |
| | +--[x] interfaces-impl //Implmentation of miosix/interfaces
| .
| . Other architectures
|
+--[x] drivers //Collection of drivers
|
+--[x] CMSIS
```

## References

[1] F. Terraneo and D. Cattaneo, "Fluid Kernels: Seamlessly Conquering the
Embedded Computing Continuum," in IEEE Transactions on Computers, vol. 74,
no. 12, Dec. 2025, doi: https://doi.org/10.1109/TC.2025.3605745.
[2] M. Maggio, F. Terraneo, and A. Leva, "Task scheduling: A control-theoretical
viewpoint for a general and flexible solution," in ACM Trans. Embed. Comput.
Syst., vol. 13, no. 4, Nov. 2014, doi: https://doi.org/10.1145/2560015.
7 changes: 0 additions & 7 deletions Readme.txt

This file was deleted.

15 changes: 8 additions & 7 deletions miosix/_doc/doxygen/Doxyfile → doc/doxygen/Doxyfile
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ PROJECT_NAME = Miosix
# could be handy for archiving the generated documentation or if some version
# control system is used.

PROJECT_NUMBER = 2.01
PROJECT_NUMBER = 3.00

# Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer a
Expand Down Expand Up @@ -768,7 +768,8 @@ WARN_LOGFILE =
# spaces.
# Note: If this tag is empty the current directory is searched.

INPUT = ../../
INPUT = . \
../../miosix

# This tag can be used to specify the character encoding of the source files
# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
Expand Down Expand Up @@ -813,11 +814,11 @@ RECURSIVE = YES
# Note that relative paths are relative to the directory from which doxygen is
# run.

EXCLUDE = ../../_doc/pdfdoc \
../../_doc/textdoc \
../../_examples \
../../_tools \
../../arch
EXCLUDE = ../../miosix/tools \
../../miosix/arch \
../../miosix/config/board \
../../miosix/filesystem/fat32 \
../../miosix/filesystem/littlefs \

# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
# directories that are symbolic links (a Unix file system feature) are excluded
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,20 +40,20 @@ Interfaces between kernel and architecture specific code.

Starting from Miosix 1.53 all calls from kernel to architecture specific code
is done through a set of functions, classes and macros grouped in a set of
header files in the miosix/interfaces folder.
header files in the miosix/interfaces and miosix/interfaaces_private folders.
There are multiple implementations of these functions/classes, one for each
architecture supported by Miosix. This eases portability since adding a new
architecture is done by implementing a well defined set of interfaces.

Some of these functions are not designed to be accessed by user code, for
example the functions in portability.h are used by the kernel to create
threads and perform context switching, while the Disk class in disk.h is used
by the filesystem module to read and write from disk.
Some of these functions are not designed to be accessed by user code, and are
placed in the interfaces_private folder. These are used exclusively by the
kernel to provide higher-level functionalities such as creating threads and
performing context switching.
Such functions are marked as \\internal and therefore are not visible by default
in this doxygen documentation, because are useless for application developers.
If there is the need to port Miosix to another platform it is always possible
to build the doxygen documentation manually including \\internal functions.
Using functions which are marked as \\internal in user code might lead to
Using functions which are marked as \\internal in user code leads to
undefined behaviour.
*/

Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes
File renamed without changes
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
This file is kept for historic reasons.
It keeps a changelog that was kept during the early development of Miosix
from 2008 to 2016. It includes initial development from before git was used.

Changelog for Miosix np embedded OS

v2.02
Expand Down
17 changes: 17 additions & 0 deletions doc/textdoc/Error debug.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
Miosix catches the CPU fault handlers and prints an error message if WITH_ERRLOG
is defined. The error message includes the address of the instructon that caused
the error and reboots the system.

To convert the printed address into the name of the function that caused the
error, and the exact code line where the program stopped, use this command:

arm-miosix-eabi-addr2line <ADDRESS> -e main.elf -f | arm-miosix-eabi-c++filt

Example:

arm-miosix-eabi-addr2line 0x0000d494 -e main.elf -f | arm-miosix-eabi-c++filt
miosix::Timer::interval() const
miosix/kernel/sync.cpp:174

Please note that for this operation to be reliable compiler optimization must
be turned off (using -O0 instead of the default -O2).
File renamed without changes.
File renamed without changes.
32 changes: 32 additions & 0 deletions examples/atsam4l_lcd/main.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@

#include <cstdio>
#include "miosix.h"
#include "drivers/atsam4l_lcd.h"

using namespace std;
using namespace miosix;

int main()
{
start32kHzOscillator();

//Configure GPIO of LCD, PA8 to PA23 = 4 COM and 12 SEG
for(int i = 8; i <= 23; i++)
{
GpioPin pin(PA,i);
pin.mode(Mode::ALTERNATE);
pin.alternateFunction('F');
}

initLcd(12);

// enableBlink();
for(int i = 0; ; i++)
{
int t = i;
beginUpdate();
for(int j = 0; j < 6 ; j++, t /= 10) setDigit(j, digitTbl[t % 10]);
endUpdate();
Thread::sleep(10);
}
}
Loading