Skip to content

Latest commit

 

History

History

doc

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 

ArceOS Architecture Overview

The key design principle of ArceOS is to divide components based on their relevance to the OS design concept, in order to reduce component coupling and improving reusability.

Crates

Crates are OS-agnostic components that can be reused in other OS or system software projects with almost no modification, providing the most reusability. For example, the basic data structures, algorithms, and utilities.

See arceos-crates for crates used by ArceOS.

Modules

Modules are OS-related components that are tightly bound to the design principles of a specific OS and have relatively poor reusability. It may need to be redesigned when it is ported to another OS.

Most of the modules are optional, depending on the features enabled by the application. A few modules are required by all applications, as shown below:

  • axruntime: Bootstrapping from the bare-metal environment, and initialization.
  • axhal: Hardware abstraction layer, provides unified APIs for cross-platform.
  • axconfig: Platform constants and kernel parameters, such as physical memory base, kernel load addresses, stack size, etc.
  • axlog: Multi-level formatted logging.

Other optional modules and their corresponding features are as follows:

Modules Dependent features Description
axalloc alloc ArceOS global memory allocator.
axdisplay display ArceOS graphics module.
axfs fs ArceOS filesystem module.
axnet net ArceOS network module.
axdriver driver-*, fs, net, display ArceOS device drivers.
axtask multitask ArceOS task management module.
axsync multitask ArceOS synchronization primitives.

See arceos-apps for example applications and their required modules and features.

Rustdoc

Documentation of ArceOS modules, api, and ulib are generated by rustdoc and hosted on GitHub Pages:

Discussions