The OpenHarmony LiteOS Cortex-A is a new-generation kernel developed based on the Huawei LiteOS kernel. Huawei LiteOS is a lightweight operating system (OS) built for the Internet of Things (IoT) field. With the rapid development of the IoT industry, OpenHarmony LiteOS Cortex-A brings small-sized, low-power, and high-performance experience and builds a unified and open ecosystem for developers. In addition, it provides rich kernel mechanisms, more comprehensive Portable Operating System Interface (POSIX), and a unified driver framework, Hardware Driver Foundation (HDF), which offers unified access for device developers and friendly development experience for application developers. Figure 1 shows the architecture of the OpenHarmony LiteOS Cortex-A kernel.
/kernel/liteos_a ├── apps # User-space init and shell application programs ├── arch # System architecture, such as ARM │ └── arm # Code for ARM architecture ├── bsd # Code of the driver and adaptation layer module related to the FreeBSD, such as the USB module ├── compat # Kernel API compatibility │ └── posix # POSIX APIs ├── drivers # Kernel drivers │ └── char # Character device │ ├── mem # Driver for accessing physical input/output (I/O) devices │ ├── quickstart # APIs for quick start of the system │ ├── random # Driver for random number generators │ └── video # Framework of the framebuffer driver ├── fs # File system module, which mainly derives from the NuttX open-source project │ ├── fat # FAT file system │ ├── jffs2 # JFFS2 file system │ ├── include # Header files exposed externally │ ├── nfs # NFS file system │ ├── proc # proc file system │ ├── ramfs # RAMFS file system │ └── vfs # VFS layer ├── kernel # Kernel modules including the process, memory, and IPC modules │ ├── base # Basic kernel modules including the scheduling and memory modules │ ├── common # Common components used by the kernel │ ├── extended # Extended kernel modules including the dynamic loading, vDSO, and LiteIPC modules │ ├── include # Header files exposed externally │ └── user # Init process loading ├── lib # Kernel library ├── net # Network module, which mainly derives from the lwIP open-source project ├── platform # Code for supporting different systems on a chip (SOCs), such as Hi3516D V300 │ ├── hw # Logic code related to clocks and interrupts │ ├── include # Header files exposed externally │ └── uart # Logic code related to the serial port ├── platform # Code for supporting different systems on a chip (SOCs), such as Hi3516D V300 ├── security # Code related to security features, including process permission management and virtual ID mapping management ├── syscall # System calling └── tools # Building tools as well as related configuration and code
- Programming languages: C and C++
- Applicable development boards: Hi3518E V300 and Hi3516D V300
- Hi3518E V300 uses the JFFS2 file system by default, and Hi3516D V300 uses the FAT file system by default.
You need to set up the compilation environment on Linux.
- Setting Up Ubuntu Development Environment
- For Hi3518E V300, see Setting Up the Hi3518 Development Environment.
- For Hi3516D V300, see Setting Up the Hi3516 Development Environment.
Download and decompress a set of source code on a Linux server to acquire the source code.
For details about how to develop the first application, see: