!525 fix: 修正liteos-m内核README不准确信息

Merge pull request !525 from zhushengle/readme
This commit is contained in:
openharmony_ci 2022-01-07 02:03:02 +00:00 committed by Gitee
commit 9fe091bd42
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
4 changed files with 205 additions and 156 deletions

View File

@ -4,6 +4,7 @@
- [Directory Structure](#section161941989596)
- [Constraints](#section119744591305)
- [Usage](#section3732185231214)
- [Contribution](#section1371123476307)
- [Repositories Involved](#section1371113476307)
## Introduction<a name="section11660541593"></a>
@ -21,24 +22,46 @@ The directory structure is as follows. For more details, see [arch_spec.md](arch
```
/kernel/liteos_m
├── arch # Code of the kernel instruction architecture layer
│ ├── arm # Code of the ARM32 architecture
│ │ ├── arm9 # Code of the ARM9 architecture
│ │ ├── cortex-m3 # Code of the cortex-m3 architecture
│ │ ├── cortex-m33 # Code of the cortex-m33 architecture
│ │ ├── cortex-m4 # Code of the cortex-m4 architecture
│ │ ├── cortex-m7 # Code of the cortex-m7 architecture
│ │ └── include # Arm architecture public header file directory
│ ├── csky # Code of the csky architecture
│ │ └── v2 # Code of the csky v2 architecture
│ ├── include # APIs exposed externally
│ ├── risc-v # Code of the risc-v architecture
│ │ ├── nuclei # Code of the nuclei system technology risc-v architecture
│ │ └── riscv32 # Code of the risc-v architecture
│ └── xtensa # Code of the xtensa architecture
│ └── lx6 # Code of the lx6 xtensa architecture
├── components # Optional components
│ ├── backtrace # Backtrace support
│ ├── cppsupport # C++ support
│ └── cpup # CPU percent (CPUP)
── cpup # CPU percent (CPUP)
│ ├── dynlink # Dynamic loading and linking
│ ├── exchook # Exception hooks
│ ├── fs # File systems
│ └── net # Networking functions
│ ├── lmk # Low memory killer functions
│ ├── lms # Lite memory sanitizer functions
│ ├── net # Networking functions
│ ├── power # Power management
│ ├── shell # Shell function
│ ├── fs # File systems
│ └── trace # Trace tool
├── drivers # driver Kconfig
├── kal # Kernel abstraction layer
│ ├── cmsis # CMSIS API support
│ └── posix # POSIX API support
├── kernel # Minimum kernel function set
│ ├── arch # Code of the kernel instruction architecture layer
│ │ ├── arm # Code of the Arm32 architecture
│ │ └── include # APIs exposed externally
│ ├── include # APIs exposed externally
│ └── src # Source code of the minimum kernel function set
├── targets # Board-level projects
├── testsuites # Kernel testsuites
├── tools # Kernel tools
├── utils # Common directory
```
@ -46,62 +69,27 @@ The directory structure is as follows. For more details, see [arch_spec.md](arch
OpenHarmony LiteOS-M supports only C and C++.
It applies only to Cortex-M3, Cortex-M4, Cortex-M7, and RISC-V chip architectures.
Applicable architecture: See the directory structure for the arch layer.
As for dynamic loading module, the shared library to be loaded needs signature verification or source restriction to ensure security.
## Usage<a name="section3732185231214"></a>
The OpenHarmony LiteOS-M kernel build system is a modular build system based on Generate Ninja (GN) and Ninja. It supports module-based configuration, tailoring, and assembling, and helps you build custom products. This document describes how to build a LiteOS-M project based on GN and Ninja. For details about the methods such as GCC+Makefile, IAR, and Keil MDK, visit the community websites.
The OpenHarmony LiteOS-M kernel build system is a modular build system based on Generate Ninja (GN) and Ninja. It supports module-based configuration, tailoring, and assembling, and helps you build custom products. This document describes how to build a LiteOS-M project based on GN and Ninja. For details about the methods such as GCC+gn, IAR, and Keil MDK, visit the community websites.
### Setting Up the Environment
Before setting up the environment for a development board, you must set up the basic system environment for OpenHarmony first. The basic system environment includes the OpenHarmony build environment and development environment. For details, see [Setting Up Ubuntu Development Environment](https://gitee.com/openharmony/docs/blob/HEAD/en/device-dev/quick-start/quickstart-lite-env-setup-linux.md). You need to install Python3.7+, GN, Ninja, and hb. For the LiteOS-M kernel, you also need to install the Make build tool and [GNU Arm Embedded Toolchain](https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm/downloads).
Before setting up the environment for a development board, you must set up the basic system environment for OpenHarmony first. The basic system environment includes the OpenHarmony build environment and development environment. For details, see [Setting Up Development Environment](https://gitee.com/openharmony/docs/blob/HEAD/en/device-dev/quick-start/quickstart-lite-env-setup.md).
### Obtaining the OpenHarmony Source Code
Obtain the latest OpenHarmony source code through Git clone on a Linux server. For details about how to obtain the source code, see [Source Code Acquisition](https://gitee.com/openharmony/docs/blob/HEAD/en/device-dev/get-code/sourcecode-acquire.md). This document assumes that the clone directory is `~/openHarmony` after the complete OpenHarmony repository code is obtained.
For details about how to obtain the source code, see [Source Code Acquisition](https://gitee.com/openharmony/docs/blob/HEAD/en/device-dev/get-code/sourcecode-acquire.md). This document assumes that the clone directory is `~/openHarmony` after the complete OpenHarmony repository code is obtained.
### Obtaining the Source Code of the Sample Project
### Example projects that are already supported
The following uses the development board Nucleo-F767Zi as an example to describe how to build and run the `OpenHarmony LiteOS-M` kernel project. In the local directory, run the following command to clone the sample code:
Qemu simulator: `arm_mps2_an386、esp32、riscv32_virt、SmartL_E802`, For details about how to compile and run, see [qemu guide](https://gitee.com/openharmony/device_qemu)
```
git clone https://gitee.com/harylee/nucleo_f767zi.git
```
The code is cloned to **~/nucleo_f767zi**. Run the following commands to copy the **device** and **vendor** directories in the code directory to the corresponding directories of the **openHarmony** project:
```
mkdir ~/openHarmony/device/st
cp -r ~/nucleo_f767zi/device/st/nucleo_f767zi ~/openHarmony/device/st/nucleo_f767zi
chmod +x ~/openHarmony/device/st/nucleo_f767zi/build.sh
cp -r ~/nucleo_f767zi/vendor/st ~/openHarmony/vendor/st
```
For details about the directory of the sample code, see [Board-Level Directory Specifications](https://gitee.com/openharmony/docs/blob/HEAD/en/device-dev/porting/porting-chip-board-overview.md). If you need to port the development board, see [Board-Level OS Porting](https://gitee.com/openharmony/docs/blob/HEAD/en/device-dev/porting/porting-chip-board.md).
### Building and Running
Before the build, configure the **bin** directory of the cross compilation toolchain in the **PATH** environment variable or set **board&#95;toolchain&#95;path** in the **device/st/nucleo&#95;f767zi/liteos&#95;m/config.gni** file to the **bin** directory of the cross compilation toolchain.
In the **OpenHarmony** root directory, run the **hb set** command to set the product path, select **nucleo_f767zi**, and run the **hb build** command to start the build.
Example:
```
user@dev:~/OpenHarmony$ hb set
[OHOS INFO] Input code path: # Press Enter and select nucleo_f767zi.
OHOS Which product do you need? nucleo_f767zi@st
user@dev:~/OpenHarmony$ hb build
```
The image is generated in the **~/openHarmony/out/nucleo&#95;f767zi/** directory. You can download the image file to the board by using the STM32 ST-LINK Utility software and run the image.
Bestechnic: `bes2600`, For details about how to compile and run, see [Bestechnic developer guide](https://gitee.com/openharmony/device_soc_bestechnic)
### Community Porting Project Links
@ -125,6 +113,20 @@ The LiteOS-M kernel porting projects for specific development boards are provide
This repository provides the project code for porting the OpenHarmony LiteOS-M kernel to support the Nucleo-F767ZI development board. The code supports build in Ninja, GCC, and IAR modes.
## Contribution<a name="section1371123476307"></a>
[How to involve](https://gitee.com/openharmony/docs/blob/HEAD/en/contribute/contribution.md)
[Commit message spec](https://gitee.com/openharmony/kernel_liteos_m/wikis/Commit%20message%E8%A7%84%E8%8C%83)
[Liteos-M kernel coding style guide](https://gitee.com/openharmony/kernel_liteos_m/wikis/OpenHarmony%E8%BD%BB%E5%86%85%E6%A0%B8%E7%BC%96%E7%A0%81%E8%A7%84%E8%8C%83)
How to contribute a chip based on Liteos-M kernel:
[ Board-Level Directory Specifications](https://gitee.com/openharmony/docs/blob/HEAD/en/device-dev/porting/porting-chip-board-overview.md)
[Mini System SoC Porting Guide](https://gitee.com/openharmony/docs/blob/HEAD/en/device-dev/porting/porting-minichip.md)
## Repositories Involved<a name="section1371113476307"></a>
[Kernel Subsystem](https://gitee.com/openharmony/docs/blob/HEAD/en/readme/kernel-subsystem.md)

View File

@ -4,6 +4,7 @@
- [目录](#section161941989596)
- [约束](#section119744591305)
- [使用说明](#section3732185231214)
- [贡献](#section1371123476307)
- [相关仓](#section1371113476307)
## 简介<a name="section11660541593"></a>
@ -19,24 +20,45 @@ OpenHarmony LiteOS-M内核是面向IoT领域构建的轻量级物联网操作系
```
/kernel/liteos_m
├── arch # 内核指令架构层目录
│ ├── arm # arm 架构代码
│ │ ├── arm9 # arm9 架构代码
│ │ ├── cortex-m3 # cortex-m3架构代码
│ │ ├── cortex-m33 # cortex-m33架构代码
│ │ ├── cortex-m4 # cortex-m4架构代码
│ │ ├── cortex-m7 # cortex-m7架构代码
│ │ └── include # arm架构公共头文件目录
│ ├── csky # csky架构代码
│ │ └── v2 # csky v2架构代码
│ ├── include # 架构层对外接口存放目录
│ ├── risc-v # risc-v 架构
│ │ ├── nuclei # 芯来科技risc-v架构代码
│ │ └── riscv32 # risc-v官方通用架构代码
│ └── xtensa # xtensa 架构代码
│ └── lx6 # xtensa lx6架构代码
├── components # 可选组件
│ ├── backtrace # 回溯栈支持
│ ├── backtrace # 栈回溯功能
│ ├── cppsupport # C++支持
│ ├── cpup # CPUP功能
│ ├── dynlink # 动态加载与链接
│ ├── exchook # 异常钩子
│ ├── fs # 文件系统
│ └── net # Network功能
│ ├── lmk # Low memory killer 机制
│ ├── lms # Lite memory sanitizer 机制
│ ├── net # Network功能
│ ├── power # 低功耗管理
│ ├── shell # shell功能
│ └── trace # trace 工具
├── drivers # 驱动框架Kconfig
├── kal # 内核抽象层
│ ├── cmsis # cmsis标准接口支持
│ └── posix # posix标准接口支持
├── kernel # 内核最小功能集支持
│ ├── arch # 内核指令架构层代码
│ │ ├── arm # arm32架构的代码
│ │ └── include # 对外接口存放目录
│ ├── include # 对外接口存放目录
│ └── src # 内核最小功能集源码
├── targets # 板级工程目录
├── testsuites # 内核测试用例
├── tools # 内核工具
├── utils # 通用公共目录
```
@ -44,60 +66,28 @@ OpenHarmony LiteOS-M内核是面向IoT领域构建的轻量级物联网操作系
开发语言C/C++
适用架构:当前只适用于cortex-m3、cortex-m4、cortex-m7、risc-v芯片架构
适用架构:详见目录结构arch层
动态加载模块:待加载的共享库需要验签或者限制来源,确保安全性。
## 使用说明<a name="section3732185231214"></a>
OpenHarmony LiteOS-M内核的编译构建系统是一个基于gn和ninja的组件化构建系统支持按组件配置、裁剪和拼装按需构建出定制化的产品。本文主要介绍如何基于gn和ninja编译LiteOS-M工程GCC+Makefile、IAR、Keil MDK等编译方式可以参考社区爱好者贡献的站点。
OpenHarmony
LiteOS-M内核的编译构建系统是一个基于gn和ninja的组件化构建系统支持按组件配置、裁剪和拼装按需构建出定制化的产品。本文主要介绍如何基于gn和ninja编译LiteOS-M工程GCC+gn、IAR、Keil MDK等编译方式可以参考社区爱好者贡献的站点。
### 搭建系统基础环境
在搭建各个开发板环境前需要完成OpenHarmony系统基础环境搭建。系统基础环境主要是指OpenHarmony的编译环境和开发环境详细介绍请参考官方站点[Ubuntu编译环境准备](https://gitee.com/openharmony/docs/blob/HEAD/zh-cn/device-dev/quick-start/quickstart-lite-env-setup-linux.md)。开发者需要根据环境搭建文档完成下述软件的安装Python3.7+、gn、ninja、hb。对于LiteOS-M内核还需要安装Make构建工具和[ARM GCC编译工具链](https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm/downloads)
在搭建各个开发板环境前需要完成OpenHarmony系统基础环境搭建。系统基础环境主要是指OpenHarmony的编译环境和开发环境详细介绍请参考官方站点[开发环境准备](https://gitee.com/openharmony/docs/blob/HEAD/zh-cn/device-dev/quick-start/quickstart-lite-env-setup.md)。开发者需要根据环境搭建文档完成环境搭建
### 获取OpenHarmony源码
开发者需要在Linux服务器上通过Git克隆获取OpenHarmony最新源码详细的源码获取方式,请见[源码获取](https://gitee.com/openharmony/docs/blob/HEAD/zh-cn/device-dev/get-code/sourcecode-acquire.md)。获取OpenHarmony完整仓代码后假设克隆目录为`~/openHarmony`。
详细的源码获取方式,请见[源码获取](https://gitee.com/openharmony/docs/blob/HEAD/zh-cn/device-dev/get-code/sourcecode-acquire.md)。获取OpenHarmony完整仓代码后假设克隆目录为`~/openHarmony`。
### 获取示例工程源码
### 已支持的示例工程
以开发板Nucleo-F767Zi为例演示如何编译运行`OpenHarmony LiteOS-M`内核工程。在本地目录,执行下述命令克隆示例代码。
Qemu模拟器: `arm_mps2_an386、esp32、riscv32_virt、SmartL_E802`, 编译运行详见: [Qemu指导](https://gitee.com/openharmony/device_qemu)
```
git clone https://gitee.com/harylee/nucleo_f767zi.git
```
假设克隆到的代码目录为`~/nucleo_f767zi`。 执行如下命令把代码目录的`device`、`vendor`目录复制到`openHarmony`工程的相应目录。
```
mkdir ~/openHarmony/device/st
cp -r ~/nucleo_f767zi/device/st/nucleo_f767zi ~/openHarmony/device/st/nucleo_f767zi
chmod +x ~/openHarmony/device/st/nucleo_f767zi/build.sh
cp -r ~/nucleo_f767zi/vendor/st ~/openHarmony/vendor/st
```
关于示例代码目录的说明,可以参考资料站点[板级目录规范](https://gitee.com/openharmony/docs/blob/HEAD/zh-cn/device-dev/porting/porting-chip-board-overview.md)。如果需要自行移植开发板,请参考[板级系统移植](https://gitee.com/openharmony/docs/blob/HEAD/zh-cn/device-dev/porting/porting-chip-board.md)。
### 编译运行
编译运行前,交叉编译工具链`bin`目录配置到`PATH`环境变量中或者配置`device/st/nucleo_f767zi/liteos_m/config.gni`文件中`board_toolchain_path`配置项为交叉编译工具链`bin`目录。
在`OpenHarmony`根目录,执行`hb set`设置产品路径,选择`nucleo_f767zi`产品,然后执行`hb build`开启编译。如下:
```
user@dev:~/OpenHarmony$ hb set
[OHOS INFO] Input code path: # 直接按回车然后选择nucleo_f767zi产品即可
OHOS Which product do you need? nucleo_f767zi@st
user@dev:~/OpenHarmony$ hb build
```
最终的镜像生成在`~/openHarmony/out/nucleo_f767zi/`目录中,通过`STM32 ST-LINK Utility`软件将镜像文件下载至单板查看运行效果。
恒玄科技: `bes2600`, 编译运行详见: [恒玄开发指导](https://gitee.com/openharmony/device_soc_bestechnic)
### 社区移植工程链接
@ -121,6 +111,22 @@ LiteOS-M内核移植的具体开发板的工程由社区开发者提供可以
该仓包含OpenHarmony LiteOS-M内核移植支持`Nucleo-F767ZI`开发板的工程代码支持Ninja、GCC、IAR等方式进行编译。
## 贡献<a name="section1371123476307"></a>
[如何贡献](https://gitee.com/openharmony/docs/blob/HEAD/zh-cn/contribute/%E5%8F%82%E4%B8%8E%E8%B4%A1%E7%8C%AE.md)
[Commit message规范](https://gitee.com/openharmony/kernel_liteos_m/wikis/Commit%20message%E8%A7%84%E8%8C%83)
[Liteos-M 内核编码规范](https://gitee.com/openharmony/kernel_liteos_m/wikis/OpenHarmony%E8%BD%BB%E5%86%85%E6%A0%B8%E7%BC%96%E7%A0%81%E8%A7%84%E8%8C%83)
如何基于Liteos-M内核贡献一款芯片:
[板级目录规范](https://gitee.com/openharmony/docs/blob/HEAD/zh-cn/device-dev/porting/porting-chip-board-overview.md)
[轻量系统芯片移植指导](https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/porting/porting-minichip.md)
[轻量系统芯片移植案例](https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/porting/porting-minichip-cases.md)
## 相关仓<a name="section1371113476307"></a>
[内核子系统](https://gitee.com/openharmony/docs/blob/HEAD/zh-cn/readme/%E5%86%85%E6%A0%B8%E5%AD%90%E7%B3%BB%E7%BB%9F.md)

View File

@ -1,42 +1,61 @@
```
.
├── arch --- Code of the kernel instruction architecture layer
│   ├── arm --- ARM32 architecture
│   │   ├── arm9 --- ARM9 architecture
│   │   │ └── gcc --- Implementation of the GCC toolchain
│   │   ├── cortex-m3 --- Cortex-m3 architecture
│   │   │ └── keil --- Implementation of the keil toolchain
│   │   ├── cortex-m33 --- Cortex-m33 architecture
│   │   │ │── gcc --- Implementation of the GCC toolchain
│   │   │ │ │── NTZ --- Cortex-m33 Non-TrustZone architecture
│   │   │ │ └── TZ --- Cortex-m33 TrustZone architecture
│   │   │ └── iar --- Implementation of the IAR toolchain
│   │   │ │── NTZ --- Cortex-m33 Non-TrustZone architecture
│   │   │ └── TZ --- Cortex-m33 TrustZone architecture
│   │   └── cortex-m4 --- Cortex-m4 architecture
│   │   │ │── gcc --- Implementation of the GCC toolchain
│   │   │ └── iar --- Implementation of the IAR toolchain
│   │   └── cortex-m7 --- Cortex-m7 architecture
│   │   │── gcc --- Implementation of the GCC toolchain
│   │   └── iar --- Implementation of the IAR toolchain
│   ├── csky --- csky architecture
│   │ └── v2 --- csky v2 architecture
│   │   └── gcc --- Implementation of the GCC toolchain
│   ├── xtensa --- xtensa architecture
│   │ └── lx6 --- xtensa lx6 architecture
│   │   └── gcc --- Implementation of the GCC toolchain
│   ├── risc-v --- Risc-v architecture
│   │ ├── nuclei --- Nuclei architecture
│   │   │ └── gcc --- Implementation of the GCC toolchain
│   │ └── riscv32 --- Riscv32 architecture
│   │   └── gcc --- Implementation of the GCC toolchain
│   └── include
│   ├── los_arch.h --- Arch initialization
│   ├── los_atomic.h --- Atomic operations
│   ├── los_context.h --- Context switch
│   ├── los_interrupt.h --- Interrupts
│   ├── los_mpu.h --- Memory protection unit operations
│   └── los_timer.h --- Timer operations
├── components --- Components available for porting and header files exposed externally
│   ├── backtrace --- Backtrace
│   ├── cppsupport --- C++
│   ├── cpup --- CPUP
│   ├── dynlink --- Dynamic loader & linker
│   ├── exchook --- Exception hook
│   ├── fs --- File System
│   └── net --- Network
│ ├── backtrace --- Backtrace support
│ ├── cppsupport --- C++ support
│ ├── cpup --- CPU percent (CPUP)
│ ├── dynlink --- Dynamic loading and linking
│ ├── exchook --- Exception hooks
│ ├── fs --- File systems
│ ├── lmk --- Low memory killer functions
│ ├── lms --- Lite memory sanitizer functions
│ ├── net --- Networking functions
│ ├── power --- Power management
│ ├── shell --- Shell function
│ ├── fs --- File systems
│ └── trace --- Trace tool
├── drivers --- driver Kconfig
├── kal --- Kernel Abstraction Layer, APIs exposed externally, including CMSIS APIs and part of POSIX APIs
│   ├── cmsis --- CMSIS
│   └── posix --- POSIX
├── kernel --- Code for defining the minimum kernel function set
│   ├── arch --- Code of the kernel instruction architecture layer
│   │   ├── arm --- ARM32 architecture
│   │   │   ├── cortex-m3 --- Cortex-m3 architecture
│   │   │   │ └── keil --- Implementation of the Keil toolchain
│   │   │   ├── cortex-m33 --- Cortex-m33 architecture
│   │   │   │ │── gcc --- Implementation of the GCC toolchain
│   │   │   │ └── iar --- Implementation of the IAR toolchain
│   │   │   └── cortex-m4 --- Cortex-m4 architecture
│   │   │   │ │── gcc --- Implementation of the GCC toolchain
│   │   │   │ └── iar --- Implementation of the IAR toolchain
│   │   │   └── cortex-m7 --- Cortex-m7 architecture
│   │   │   │ │── gcc --- Implementation of the GCC toolchain
│   │   │   │ └── iar --- Implementation of the IAR toolchain
│   │   ├── risc-v --- Risc-v architecture
│   │   │ ├── nuclei --- Nuclei architecture
│   │   │   │ └── gcc --- Implementation of the GCC toolchain
│   │   │ └── riscv32 --- Riscv32 architecture
│   │   │   │ └── gcc --- Implementation of the GCC toolchain
│   │   └── include
│   │   ├── los_arch.h --- Arch initialization
│   │   ├── los_atomic.h --- Atomic operations
│   │   ├── los_context.h --- Context switch
│   │   ├── los_interrupt.h --- Interrupts
│   │   ├── los_mpu.h --- Memory protection unit operations
│   │   └── los_timer.h --- Timer operations
│   ├── include
│   │   ├── los_config.h --- Configuration parameters
│   │   ├── los_event.h --- Events management
@ -60,6 +79,8 @@
│ │ └── Src --- Application codes
│   └── riscv_nuclei_gd32vf103_soc_gcc
│   └── riscv_sifive_fe310_gcc
├── testsuites --- Kernel testsuites
├── tools --- Kernel tools
└── utils
├── internal
├── BUILD.gn --- Gn build config file

View File

@ -1,42 +1,60 @@
```
.
├── arch --- 内核指令架构层代码
│   ├── arm --- ARM32架构
│   │   ├── arm9 --- arm9架构
│   │   │ └── gcc --- gcc 编译工具链实现
│   │   ├── cortex-m3 --- Cortex-m3架构
│   │   │ └── keil --- Keil编译工具链实现
│   │   ├── cortex-m33 --- Cortex-m33架构
│   │   │ │── gcc --- GCC编译工具链实现
│   │   │ │ │── NTZ --- Cortex-m33非TrustZone架构实现
│   │   │ │ └── TZ --- Cortex-m33 TrustZone架构实现
│   │   │ └── iar --- IAR编译工具链实现
│   │   │ │── NTZ --- Cortex-m33非TrustZone架构实现
│   │   │ └── TZ --- Cortex-m33 TrustZone架构实现
│   │   └── cortex-m4 --- Cortex-m4架构
│   │   │ │── gcc --- GCC编译工具链实现
│   │   │ └── iar --- IAR编译工具链实现
│   │   └── cortex-m7 --- Cortex-m7架构
│   │   │── gcc --- GCC编译工具链实现
│   │   └── iar --- IAR编译工具链实现
│   ├── csky --- csky架构
│   │ └── v2 --- csky v2架构
│   │   └── gcc --- GCC编译工具链实现
│   ├── xtensa --- xtensa架构
│   │ └── lx6 --- xtensa lx6架构
│   │   └── gcc --- GCC编译工具链实现
│   ├── risc-v --- Risc-v架构
│   │ ├── nuclei --- Nuclei架构
│   │   │ └── gcc --- GCC编译工具链实现
│   │ └── riscv32 --- Riscv32架构
│   │   └── gcc --- GCC编译工具链实现
│   └── include
│   ├── los_arch.h --- 定义arch初始化
│   ├── los_atomic.h --- 定义通用arch原子操作
│   ├── los_context.h --- 定义通用arch上下文切换
│   ├── los_interrupt.h --- 定义通用arch中断
│   ├── los_mpu.h --- 定义通用arch内存保护
│   └── los_timer.h --- 定义通用arch定时器
├── components --- 移植可选组件,依赖内核,单独对外提供头文件
│   ├── backtrace --- 回溯栈支持
│   ├── cppsupport --- C++支持
│   ├── cpup --- CPUP功能
│   ├── dynlink --- 动态加载与链接
│   ├── exchook --- 异常钩子
│   ├── fs --- 文件系统
│   └── net --- 网络功能
│ ├── backtrace --- 栈回溯功能
│ ├── cppsupport --- C++支持
│ ├── cpup --- CPUP功能
│ ├── dynlink --- 动态加载与链接
│ ├── exchook --- 异常钩子
│ ├── fs --- 文件系统
│ ├── lmk --- Low memory killer 机制
│ ├── lms --- Lite memory sanitizer 机制
│ ├── net --- Network功能
│ ├── power --- 低功耗管理
│ ├── shell --- shell功能
│ └── trace --- trace 工具
├── drivers --- 驱动框架Kconfig
├── kal --- 内核抽象层提供内核对外接口当前支持CMSIS接口和部分POSIX接口
│   ├── cmsis --- CMSIS标准支持
│   └── posix --- POSIX标准支持
├── kernel --- 内核最小功能集代码
│   ├── arch --- 内核指令架构层代码
│   │   ├── arm --- ARM32架构
│   │   │   ├── cortex-m3 --- Cortex-m3架构
│   │   │   │ └── keil --- Keil编译工具链实现
│   │   │   ├── cortex-m33 --- Cortex-m33架构
│   │   │   │ │── gcc --- GCC编译工具链实现
│   │   │   │ └── iar --- IAR编译工具链实现
│   │   │   └── cortex-m4 --- Cortex-m4架构
│   │   │   │ │── gcc --- GCC编译工具链实现
│   │   │   │ └── iar --- IAR编译工具链实现
│   │   │   └── cortex-m7 --- Cortex-m7架构
│   │   │   │ │── gcc --- GCC编译工具链实现
│   │   │   │ └── iar --- IAR编译工具链实现
│   │   ├── risc-v --- Risc-v架构
│   │   │ ├── nuclei --- Nuclei架构
│   │   │   │ └── gcc --- GCC编译工具链实现
│   │   │ └── riscv32 --- Riscv32架构
│   │   │   │ └── gcc --- GCC编译工具链实现
│   │   └── include
│   │   ├── los_arch.h --- 定义arch初始化
│   │   ├── los_atomic.h --- 定义通用arch原子操作
│   │   ├── los_context.h --- 定义通用arch上下文切换
│   │   ├── los_interrupt.h --- 定义通用arch中断
│   │   ├── los_mpu.h --- 定义通用arch内存保护
│   │   └── los_timer.h --- 定义通用arch定时器
│   ├── include
│   │   ├── los_config.h --- 功能开关和配置参数
│   │   ├── los_event.h --- 事件
@ -60,6 +78,8 @@
│ │ └── Src --- Application相关代码
│   └── riscv_nuclei_gd32vf103_soc_gcc
│   └── riscv_sifive_fe310_gcc
├── testsuites --- 内核测试用例
├── tools --- 内核工具
└── utils
├── internal
├── BUILD.gn --- Gn构建文件