1 Star 0 Fork 533

ycpower / kernel_liteos_m

forked from OpenHarmony / kernel_liteos_m 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
BSD-3-Clause

LiteOS-M内核

简介

OpenHarmony LiteOS-M内核是面向IoT领域构建的轻量级物联网操作系统内核,具有小体积、低功耗、高性能的特点,其代码结构简单,主要包括内核最小功能集、内核抽象层、可选组件以及工程目录等,分为硬件相关层以及硬件无关层,硬件相关层提供统一的HAL(Hardware Abstraction Layer)接口,提升硬件易适配性,不同编译工具链和芯片架构的组合分类,满足AIoT类型丰富的硬件和编译工具链的拓展。其架构图如图1所示:

图 1 OpenHarmony LiteOS-M核内核架构图

目录

目录结构如下,详细目录请参考arch_spec_zh.md

/kernel/liteos_m
├── components           # 可选组件
│   ├── backtrace        # 回溯栈支持
│   ├── cppsupport       # C++支持
│   ├── cpup             # CPUP功能
│   ├── exchook          # 异常钩子
│   ├── fs               # 文件系统
│   └── net              # Network功能
├── kal                  # 内核抽象层
│   ├── cmsis            # cmsis标准接口支持
│   └── posix            # posix标准接口支持
├── kernel               # 内核最小功能集支持
│   ├── arch             # 内核指令架构层代码
│   │   ├── arm          # arm32架构的代码
│   │   └── include      # 对外接口存放目录
│   ├── include          # 对外接口存放目录
│   └── src              # 内核最小功能集源码
├── targets              # 板级工程目录
├── utils                # 通用公共目录

约束

开发语言:C/C++;

适用架构:当前只适用于cortex-m3、cortex-m4、cortex-m7、risc-v芯片架构。

使用说明

OpenHarmony LiteOS-M内核的编译构建系统是一个基于gn和ninja的组件化构建系统,支持按组件配置、裁剪和拼装,按需构建出定制化的产品。编译构建系统的详细信息可以参考轻量和小型系统编译构建指导。本文主要介绍如何基于gn和ninja编译LiteOS-M工程,GCC+Makefile、IAR、Keil MDK等编译方式可以参考社区爱好者贡献的站点。

搭建系统基础环境

在搭建各个开发板环境前,需要完成OpenHarmony系统基础环境搭建。系统基础环境主要是指OpenHarmony的编译环境和开发环境,详细介绍请参考官方站点Ubuntu编译环境准备。开发者需要根据环境搭建文档,完成下述软件的安装:Python3.7+、gn、ninja、hb。对于LiteOS-M内核,还需要安装Make构建工具和ARM GCC编译工具链

获取OpenHarmony源码

开发者需要在Linux服务器上通过Git克隆获取OpenHarmony最新源码,详细的源码获取方式,请见源码获取。获取OpenHarmony完整仓代码后,假设克隆目录为~/openHarmony

获取示例工程源码

以开发板Nucleo-F767Zi为例,演示如何编译运行OpenHarmony LiteOS-M内核工程。在本地目录,执行下述命令克隆示例代码。

git clone https://gitee.com/harylee/nucleo_f767zi.git

假设克隆到的代码目录为~/nucleo_f767zi。 执行如下命令把代码目录的devicevendor目录复制到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

关于示例代码目录的说明,可以参考资料站点板级目录规范。如果需要自行移植开发板,请参考板级系统移植

编译运行

编译运行前,交叉编译工具链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软件将镜像文件下载至单板查看运行效果。

社区移植工程链接

LiteOS-M内核移植的具体开发板的工程由社区开发者提供,可以访问社区开发者代码仓获取。如果您移植支持了更多开发板,可以提供链接给我们进行社区分享。

修改日志

v1.0.1

  1. 删除以下KAL接口: KalThreadGetInfo,KalDelayUs,KalTimerCreate,KalTimerStart,KalTimerChange,KalTimerStop,KalTimerDelete,KalTimerIsRunning,KalTickToMs,KalMsToTick,KalGetMemInfo
  2. 添加部分POSIX接口

v1.0

  1. 首次发布

相关仓

内核子系统

kernel_liteos_m

Copyright (c) 2013-2019 Huawei Technologies Co., Ltd. All rights reserved. Copyright (c) 2020-2021 Huawei Device Co., Ltd. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

简介

LiteOS kernel for devices with few resources, such as the MCU | 适用于MCU等各种资源极小设备的LiteOS内核 展开 收起
C
BSD-3-Clause
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
C
1
https://gitee.com/ycpower/kernel_liteos_m.git
git@gitee.com:ycpower/kernel_liteos_m.git
ycpower
kernel_liteos_m
kernel_liteos_m
master

搜索帮助

14c37bed 8189591 565d56ea 8189591