Embassy provides both Hardware Abstraction Layers, and an executor/runtime, while RTIC aims to only provide an execution framework. For example, embassy provides
embassy-stm32 (a HAL), and
embassy-executor (an executor). On the other hand, RTIC provides the framework in the form of
rtic, and the user is responsible for providing a PAC and HAL implementation (generally from the
Additionally, RTIC aims to provide exclusive access to resources on as low a level of possible, ideally guarded by some form of hardware protection. This allows for access to hardware while not necessarily requiring locking mechanisms on the software level.
Since most Embassy and RTIC libraries are runtime agnostic, many details from one project can be used in the other. For example, using
rtic-monotonics in an
embassy-executor powered project works, and using
rtic-sync is recommended) in an RTIC project works.