From 0e067b239354c28e16b05489274b33051d002508 Mon Sep 17 00:00:00 2001 From: zhushengle Date: Thu, 6 Jan 2022 11:02:52 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E6=AD=A3liteos-m=E5=86=85?= =?UTF-8?q?=E6=A0=B8README=E4=B8=8D=E5=87=86=E7=A1=AE=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1.修正README不准确信息 2.新增内核编码规范指导 Close #I4PLWP Signed-off-by: zhushengle Change-Id: Iac96fb0a2e2bc80f82338921287c8ca987e89652 --- README.md | 96 +++++++++++++++++++++++++------------------------ README_zh.md | 96 ++++++++++++++++++++++++++----------------------- arch_spec.md | 85 ++++++++++++++++++++++++++----------------- arch_spec_zh.md | 84 ++++++++++++++++++++++++++----------------- 4 files changed, 205 insertions(+), 156 deletions(-) diff --git a/README.md b/README.md index 3408294d..8806b76f 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,7 @@ - [Directory Structure](#section161941989596) - [Constraints](#section119744591305) - [Usage](#section3732185231214) +- [Contribution](#section1371123476307) - [Repositories Involved](#section1371113476307) ## Introduction @@ -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 -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_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. +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 + +[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 [Kernel Subsystem](https://gitee.com/openharmony/docs/blob/HEAD/en/readme/kernel-subsystem.md) diff --git a/README_zh.md b/README_zh.md index 48d53a34..8fff9f9f 100644 --- a/README_zh.md +++ b/README_zh.md @@ -4,6 +4,7 @@ - [目录](#section161941989596) - [约束](#section119744591305) - [使用说明](#section3732185231214) +- [贡献](#section1371123476307) - [相关仓](#section1371113476307) ## 简介 @@ -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层。 动态加载模块:待加载的共享库需要验签或者限制来源,确保安全性。 ## 使用说明 -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等方式进行编译。 +## 贡献 + +[如何贡献](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) + ## 相关仓 [内核子系统](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) diff --git a/arch_spec.md b/arch_spec.md index 86d8b4a1..d63cfca1 100644 --- a/arch_spec.md +++ b/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 -│   ├── 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 diff --git a/arch_spec_zh.md b/arch_spec_zh.md index 8cca39a5..93e847e9 100644 --- a/arch_spec_zh.md +++ b/arch_spec_zh.md @@ -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构建文件