Remix.run Logo
raphui a day ago

I’ve been working on a custom RTOS for Cortex-M for the past 10 years: https://github.com/raphui/rnk It started as a way to learn RTOS internals, and over time it has grown into something with lots of nice features. I’m even using it in a dirtbike anti-theft tracker I am building. Also, 2 months ago, I did a weekend challenge to build an embedded software parameter DSL and compiler. Its goal is to let firmware developers define configuration values, thresholds, constants, and other application-level parameters in a structured, human-readable format, and compile them into binary data that the firmware can directly use. https://github.com/raphui/epc

Happy to get any feedback :)

araes 13 hours ago | parent [-]

Had to read the wikipedia article on Real-Time Operating System (RTOS) to figure out what it was supposed to mean. https://en.wikipedia.org/wiki/Real-time_operating_system

They compare it to timeshare systems, which seems horribly out of date (although apparently that's still kind of what occurs anyways on CPUs). What's the part that's "Real Time" relative to anything else people do with Cortex processors? The preemptive part? Not trying to be critical, just not getting the real time part. Does it not share CPU resources among tasks? Get a fixed core per task or something? Minimal interrupts and minimal thread switching?

raphui an hour ago | parent | next [-]

As ab71e5 said, "Real time" in the context of OSes, means the operating system is optimized for determinism. The OS guarantees that events will be handle in a particular time-window and that high priority task will always run first.

ab71e5 11 hours ago | parent | prev [-]

An RTOS compared to bare metal just means it is some nice abstractions that you would expect from an OS : tasks, mutexes rtc.

An RTOS compared to an OS like linux basically just means it is deterministic, you can guarantee some interrupt is handled within a certain time. Not necessarily faster