!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) - [Directory Structure](#section161941989596)
- [Constraints](#section119744591305) - [Constraints](#section119744591305)
- [Usage](#section3732185231214) - [Usage](#section3732185231214)
- [Contribution](#section1371123476307)
- [Repositories Involved](#section1371113476307) - [Repositories Involved](#section1371113476307)
## Introduction<a name="section11660541593"></a> ## 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 /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 ├── components # Optional components
│ ├── backtrace # Backtrace support │ ├── backtrace # Backtrace support
│ ├── cppsupport # C++ support │ ├── cppsupport # C++ support
│ └── cpup # CPU percent (CPUP) ── cpup # CPU percent (CPUP)
│ ├── dynlink # Dynamic loading and linking │ ├── dynlink # Dynamic loading and linking
│ ├── exchook # Exception hooks │ ├── exchook # Exception hooks
│ ├── fs # File systems │ ├── 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 ├── kal # Kernel abstraction layer
│ ├── cmsis # CMSIS API support │ ├── cmsis # CMSIS API support
│ └── posix # POSIX API support │ └── posix # POSIX API support
├── kernel # Minimum kernel function set ├── 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 │ ├── include # APIs exposed externally
│ └── src # Source code of the minimum kernel function set │ └── src # Source code of the minimum kernel function set
├── targets # Board-level projects ├── targets # Board-level projects
├── testsuites # Kernel testsuites
├── tools # Kernel tools
├── utils # Common directory ├── 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++. 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. 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> ## 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 ### 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 ### 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)
``` Bestechnic: `bes2600`, For details about how to compile and run, see [Bestechnic developer guide](https://gitee.com/openharmony/device_soc_bestechnic)
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.
### Community Porting Project Links ### 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. 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> ## Repositories Involved<a name="section1371113476307"></a>
[Kernel Subsystem](https://gitee.com/openharmony/docs/blob/HEAD/en/readme/kernel-subsystem.md) [Kernel Subsystem](https://gitee.com/openharmony/docs/blob/HEAD/en/readme/kernel-subsystem.md)

View File

@ -4,6 +4,7 @@
- [目录](#section161941989596) - [目录](#section161941989596)
- [约束](#section119744591305) - [约束](#section119744591305)
- [使用说明](#section3732185231214) - [使用说明](#section3732185231214)
- [贡献](#section1371123476307)
- [相关仓](#section1371113476307) - [相关仓](#section1371113476307)
## 简介<a name="section11660541593"></a> ## 简介<a name="section11660541593"></a>
@ -19,24 +20,45 @@ OpenHarmony LiteOS-M内核是面向IoT领域构建的轻量级物联网操作系
``` ```
/kernel/liteos_m /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 # 可选组件 ├── components # 可选组件
│ ├── backtrace # 回溯栈支持 │ ├── backtrace # 栈回溯功能
│ ├── cppsupport # C++支持 │ ├── cppsupport # C++支持
│ ├── cpup # CPUP功能 │ ├── cpup # CPUP功能
│ ├── dynlink # 动态加载与链接 │ ├── dynlink # 动态加载与链接
│ ├── exchook # 异常钩子 │ ├── exchook # 异常钩子
│ ├── fs # 文件系统 │ ├── fs # 文件系统
│ └── net # Network功能 │ ├── lmk # Low memory killer 机制
│ ├── lms # Lite memory sanitizer 机制
│ ├── net # Network功能
│ ├── power # 低功耗管理
│ ├── shell # shell功能
│ └── trace # trace 工具
├── drivers # 驱动框架Kconfig
├── kal # 内核抽象层 ├── kal # 内核抽象层
│ ├── cmsis # cmsis标准接口支持 │ ├── cmsis # cmsis标准接口支持
│ └── posix # posix标准接口支持 │ └── posix # posix标准接口支持
├── kernel # 内核最小功能集支持 ├── kernel # 内核最小功能集支持
│ ├── arch # 内核指令架构层代码
│ │ ├── arm # arm32架构的代码
│ │ └── include # 对外接口存放目录
│ ├── include # 对外接口存放目录 │ ├── include # 对外接口存放目录
│ └── src # 内核最小功能集源码 │ └── src # 内核最小功能集源码
├── targets # 板级工程目录 ├── targets # 板级工程目录
├── testsuites # 内核测试用例
├── tools # 内核工具
├── utils # 通用公共目录 ├── utils # 通用公共目录
``` ```
@ -44,60 +66,28 @@ OpenHarmony LiteOS-M内核是面向IoT领域构建的轻量级物联网操作系
开发语言C/C++ 开发语言C/C++
适用架构:当前只适用于cortex-m3、cortex-m4、cortex-m7、risc-v芯片架构 适用架构:详见目录结构arch层
动态加载模块:待加载的共享库需要验签或者限制来源,确保安全性。 动态加载模块:待加载的共享库需要验签或者限制来源,确保安全性。
## 使用说明<a name="section3732185231214"></a> ## 使用说明<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源码 ### 获取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)
``` 恒玄科技: `bes2600`, 编译运行详见: [恒玄开发指导](https://gitee.com/openharmony/device_soc_bestechnic)
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`软件将镜像文件下载至单板查看运行效果。
### 社区移植工程链接 ### 社区移植工程链接
@ -121,6 +111,22 @@ LiteOS-M内核移植的具体开发板的工程由社区开发者提供可以
该仓包含OpenHarmony LiteOS-M内核移植支持`Nucleo-F767ZI`开发板的工程代码支持Ninja、GCC、IAR等方式进行编译。 该仓包含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> ## 相关仓<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) [内核子系统](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 ├── components --- Components available for porting and header files exposed externally
│   ├── backtrace --- Backtrace │ ├── backtrace --- Backtrace support
│   ├── cppsupport --- C++ │ ├── cppsupport --- C++ support
│   ├── cpup --- CPUP │ ├── cpup --- CPU percent (CPUP)
│   ├── dynlink --- Dynamic loader & linker │ ├── dynlink --- Dynamic loading and linking
│   ├── exchook --- Exception hook │ ├── exchook --- Exception hooks
│   ├── fs --- File System │ ├── fs --- File systems
│   └── net --- Network │ ├── 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 ├── kal --- Kernel Abstraction Layer, APIs exposed externally, including CMSIS APIs and part of POSIX APIs
│   ├── cmsis --- CMSIS │   ├── cmsis --- CMSIS
│   └── posix --- POSIX │   └── posix --- POSIX
├── kernel --- Code for defining the minimum kernel function set ├── 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 │   ├── include
│   │   ├── los_config.h --- Configuration parameters │   │   ├── los_config.h --- Configuration parameters
│   │   ├── los_event.h --- Events management │   │   ├── los_event.h --- Events management
@ -60,6 +79,8 @@
│ │ └── Src --- Application codes │ │ └── Src --- Application codes
│   └── riscv_nuclei_gd32vf103_soc_gcc │   └── riscv_nuclei_gd32vf103_soc_gcc
│   └── riscv_sifive_fe310_gcc │   └── riscv_sifive_fe310_gcc
├── testsuites --- Kernel testsuites
├── tools --- Kernel tools
└── utils └── utils
├── internal ├── internal
├── BUILD.gn --- Gn build config file ├── 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 --- 移植可选组件,依赖内核,单独对外提供头文件 ├── components --- 移植可选组件,依赖内核,单独对外提供头文件
│   ├── backtrace --- 回溯栈支持 │ ├── backtrace --- 栈回溯功能
│   ├── cppsupport --- C++支持 │ ├── cppsupport --- C++支持
│   ├── cpup --- CPUP功能 │ ├── cpup --- CPUP功能
│   ├── dynlink --- 动态加载与链接 │ ├── dynlink --- 动态加载与链接
│   ├── exchook --- 异常钩子 │ ├── exchook --- 异常钩子
│   ├── fs --- 文件系统 │ ├── fs --- 文件系统
│   └── net --- 网络功能 │ ├── lmk --- Low memory killer 机制
│ ├── lms --- Lite memory sanitizer 机制
│ ├── net --- Network功能
│ ├── power --- 低功耗管理
│ ├── shell --- shell功能
│ └── trace --- trace 工具
├── drivers --- 驱动框架Kconfig
├── kal --- 内核抽象层提供内核对外接口当前支持CMSIS接口和部分POSIX接口 ├── kal --- 内核抽象层提供内核对外接口当前支持CMSIS接口和部分POSIX接口
│   ├── cmsis --- CMSIS标准支持 │   ├── cmsis --- CMSIS标准支持
│   └── posix --- POSIX标准支持 │   └── posix --- POSIX标准支持
├── kernel --- 内核最小功能集代码 ├── 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 │   ├── include
│   │   ├── los_config.h --- 功能开关和配置参数 │   │   ├── los_config.h --- 功能开关和配置参数
│   │   ├── los_event.h --- 事件 │   │   ├── los_event.h --- 事件
@ -60,6 +78,8 @@
│ │ └── Src --- Application相关代码 │ │ └── Src --- Application相关代码
│   └── riscv_nuclei_gd32vf103_soc_gcc │   └── riscv_nuclei_gd32vf103_soc_gcc
│   └── riscv_sifive_fe310_gcc │   └── riscv_sifive_fe310_gcc
├── testsuites --- 内核测试用例
├── tools --- 内核工具
└── utils └── utils
├── internal ├── internal
├── BUILD.gn --- Gn构建文件 ├── BUILD.gn --- Gn构建文件