背景: 原调度机制与软件定时器实现混合,调度时间链表存在两个链表, 任务切换时需要遍历两个链表才可以获取到最终的tick响应时间。 软件定时作为一个独立的功能,不应该和调度强耦合,而且软件定时 器作为一个任务,某个软件定时器的响应时间应该是软件定时器任务的 响应时间,不应该直接做为tick中断的响应时间。 方案描述: 1.将软件定时器从调度分离,作为一个独立的机制,从调度角度看其就是一个任务 2.软件定时器从调度分离之后,其timelist遍历从tick中断移动至软件定时器任务中 3.优化软件定时器的均衡调度 优势: 1.将软件定时器与调度完全分离,使得调度功能单一化,便于后续其它调度算法的引入 2.优化tick中断,减小tick中断耗时 3.优化通过写队列唤醒软件定时器任务去执行软件定时器钩子为插队列,减少软件定时 器机制本身的耗时,提升软件定时器的实时性 4.优化软件定时器均衡调度,使得软件定时器均匀分布于多核,提升软件定时器的实时性 Signed-off-by: zhushengle <zhushengle@huawei.com> Change-Id: I07c01f134e69c1d9b7061ddf5a231df1ee99b68e |
||
|---|---|---|
| .gitee | ||
| apps | ||
| arch | ||
| bsd | ||
| compat | ||
| drivers | ||
| figures | ||
| fs | ||
| kernel | ||
| lib | ||
| net | ||
| platform | ||
| security | ||
| shell | ||
| syscall | ||
| testsuites | ||
| tools | ||
| .gitignore | ||
| BUILD.gn | ||
| Kconfig | ||
| LICENSE | ||
| Makefile | ||
| OAT.xml | ||
| README.md | ||
| README_zh-HK.md | ||
| README_zh.md | ||
| build.sh | ||
| bundle.json | ||
| config.mk | ||
| liteos.gni | ||
README.md
LiteOS Cortex-A
Introduction
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.
Figure 1 Architecture of the OpenHarmony LiteOS Cortex-A kernel

Directory Structure
/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
Constraints
- 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.
Usage
OpenHarmony LiteOS Cortex-A supports the Hi3518E V300 and Hi3516D V300. You can develop and run your applications based on both development boards.
Preparations
You need to set up the compilation environment on Linux.
- Compilation environment on Linux
- For Hi3518E V300, see Setting Up the Hi3518 Development Environment.
- For Hi3516D V300, see Setting Up the Hi3516 Development Environment.
Source Code Acquisition
Download and decompress a set of source code on a Linux server to acquire the source code.
Compilation and Building
For details about how to develop the first application, see: