fix: 修正liteos-m内核README不准确信息
1.修正README不准确信息 2.新增内核编码规范指导 Close #I4PLWP Signed-off-by: zhushengle <zhushengle@huawei.com> Change-Id: Iac96fb0a2e2bc80f82338921287c8ca987e89652
This commit is contained in:
parent
f3fbeb87db
commit
0e067b2393
96
README.md
96
README.md
|
@ -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_toolchain_path** in the **device/st/nucleo_f767zi/liteos_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_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)
|
||||||
|
|
96
README_zh.md
96
README_zh.md
|
@ -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)
|
||||||
|
|
85
arch_spec.md
85
arch_spec.md
|
@ -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
|
||||||
|
|
|
@ -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构建文件
|
||||||
|
|
Loading…
Reference in New Issue