1、Huawei LiteOS简介

  • Huawei LiteOS源码获取:

    https://github.com/LiteOS/LiteOS,

    https://gitee.com/LiteOS/LiteOS

    Huawei LiteOS遵循BSD-3开源许可协议。

  • Huawei LiteOS发布于2015年5月的华为网络大会上,Huawei LiteOS内核是华为面向IoT领域,构建的轻量级物联网操作系统,可广泛应用于智能家居、个人穿戴、车联网、城市公共服务、制造业等领域(涵盖抄表、停车、路灯、环保、共享单车、物流等)。

    Huawei LiteOS开源项目目前支持 ARM64、ARM Cortex-A、ARM Cortex-M0,Cortex-M3,Cortex-M4,Cortex-M7 等芯片架构。

  • Huawei LiteOS内核集成了任务管理、内存管理、时间管理、通信机制、中断管理、队列管理、事件管理以及定时器等操作系统基础组件,具备高实时性、高稳定性及超小内核等特点。其基础内核体积可裁剪至不到10K,满足低功耗需求,并支持功能静态裁剪,灵活适应不同应用场景。

  • 优势

    高实时性,高稳定性。

    超小内核,基础内核体积可以裁剪至不到10K。

    低功耗,配套芯片整体功耗低至uA级。

    支持功能静态裁剪。

另外LiteOS不支持KEIL MDK开发工具,主要原因是LiteOS有一套完整的开发工具链,包括GCC编译器和GDB调试器。

2、Huawei LiteOS内核介绍

2.1内核架构

2.2源码目录结构

一级目录 二级目录 三级目录 说明
arch arm cortex_a_r A核架构支持
cortex_m M核架构支持
arm64 arm64架构支持
csky cskyv2 cskyv2架构支持
riscv rvm32 riscv架构支持
build LiteOS编译系统需要的配置及脚本
compat cmsis liteos提供的CMSIS-RTOS 1.0和2.0接口
components ai ai(基于mindspore)算子库实现
connectivity agent_tiny agent_tiny端云互通组件,包括公共头文件、示例代码、客户端实现代码、操作系统适配层代码
lwm2m lwm2m协议实现
mqtt MQTT开源协议实现
nb_iot LiteOS NB-IoT API
fs devfs devfs文件系统
fatfs fatfs文件系统
kifs kifs文件系统
littlefs littlefs文件系统
ramfs ramfs文件系统
spiffs spiffs文件系统
vfs 虚拟文件系统
gui 开源LittlevGL图形库
language 语言相关组件,含lua
lib cjson c语言json库
log 日志等级控制
media 媒体相关组件,含libpng、openexif、opus、upup、
net at_device AT设备适配层
at_frame LiteOS AT框架API
ifconfig ifconfig shell命令实现
los_iperf 网络带宽测试工具
lwip/lwip_port lwip驱动及OS适配代码
lwip/lwip-2.1.2 lwip协议实现
lwip/ppp_port lwip协议ppp端口支持
pcap 网络抓包工具
ping ping shell命令实现
sal socket通讯支持
tftp_server tftp服务
ota 固件升级代码
security mbedtls/mbedtls_port mbed TLS的OS适配代码
mbedtls/mbedtl-2.16.8 mbed TLS协议实现
openssl openssl协议
sensorhub include sensor manager头文件
src sensor manager的源码实现
utility 解析工具,含bidireference、curl、fastlz、freetype、harfbuzz、iconv、iniparser、json-c、jsoncpp、libxml2、sqlite、thttpd、tinyxml2
demos agenttiny_lwm2m lwm2m协议 demo
agenttiny_mqtt mqtt 协议demo
ai ai的demo
dtls_server dtls协议demo
fs 文件系统demo
gui gui的demo
ipv6_client Ipv6协议demo
kernel api 供开发者测试LiteOS内核的demo示例代码
include API功能头文件存放目录
language 语言相关组件的demo
lms LMS的demo
media 媒体相关组件的demo
nbiot_without_atiny NB-IoT demo
sensorhub gyro 基于sensorhub传感框架定时读取MPU6050陀螺仪原始数据的demo
trace Trace的demo
utility 解析工具的demo
doc 此目录存放的是LiteOS的使用文档和API说明等文档
driver base LiteOS驱动框架
interrupt LiteOS系统中断接口
timer LiteOS系统定时器接口
uart LiteOS系统串口接口
include components各个模块所依赖的头文件
kernel base LiteOS基础内核代码,包括任务、中断、软件定时器、队列、事件、信号量、互斥锁、tick等功能
debug LiteOS内核调测代码,包括队列、信号量、互斥锁及任务调度的调测
include LiteOS基础内核内部使用的头文件
mem LiteOS中的内存管理相关代码
sched 任务调度支持,包括对多核的调度支持
shellcmd LiteOS中与基础内核相关的shell命令,包括memcheck、task、systeminfo、swtmr等
extended cppsupport C++兼容适配层底层接口
cpup CPU占用率统计接口
include extended目录所需的头文件
lms LMS(实时检测内存操作合法性算法)的库文件
lowpower 低功耗框架相关代码
trace trace事件跟踪,用于实时记录系统运行轨迹
include LiteOS开源内核头文件
init LiteOS内核初始化相关代码
lib huawei_libc LiteOS自研libc库和适配的posix接口
libc LiteOS适配的musl libc库
libsec 华为安全函数库
zlib 开源zlib库
osdepends liteos LiteOS提供的部分OS适配接口
shell src 实现shell命令的代码,支持基本调试功能
include shell头文件
targets 通用板级支持包、开发板的开发工程源码包
tools build LiteOS支持的开发板编译配置文件
menuconfig LiteOS编译所需的menuconfig脚本
Makefile LiteOS Makefile
.config 开发板的配置文件,如果用户不重新选择开发板,默认为野火挑战者STM32F429开发板的配置文件

2.3内核启动流程

3、LiteOS在keil MDK上移植

1、准备LiteOS源码、一个GD32F4xx裸机工程。

版本不同略有差别,组件功能可自行移植。

2、建立如下目录:

工程目录:

LiteOS目录:

3、MDK工程构建

3.1在Keil的IDE环境中,分别添加以下4个分组:
LiteOS/kernel
LiteOS/arch
LiteOS/cmsis
LiteOS/config
3.2添加源码到工程
  • 到源码LiteOS的targets目录下找到GD32工程参考,拷贝MDK汇编启动文件los_startup_keil.s并添加到工程。

  • 添加LiteOS汇编文件..\LiteOS\arch\arm\arm-m\cortex-m4\keil

  • 添加c文件
..\LiteOS\arch\arm\arm-m\src
..\LiteOS\kernel,内核下所有源文件都添加
..\LiteOS\config,targets目录下找到OS_CONFIG目录并拷贝至自定义目录..\LiteOS\config

  • 包含分组中所需头文件
..\LiteOS\arch\arm\arm-m\include
..\LiteOS\arch\arm\common\cmsis
..\LiteOS\kernel\include
..\LiteOS\kernel\extended\include
..\LiteOS\kernel\base\include
..\LiteOS\cmsis\1.0
..\LiteOS\cmsis\2.0
..\LiteOS\cmsis
..\LiteOS\config

4、最后编译测试

  • 勾选Use MicroLIB。
  • ARM Comoiler默认选择version5。
  • ScatterFile分散加载文件适配LiteOS使用如下格式:
; *************************************************************
; *** Scatter-Loading Description File generated by uVision ***
; ************************************************************* LR_IROM1 0x08000000 0x00300000 { ; load region size_region
ER_IROM1 0x08000000 0x00300000 { ; load address = execution address
*.o (RESET, +First)
*(InRoot$$Sections)
.ANY (+RO)
* (LOS_HEAP_INFO)
}
VECTOR 0x20000000 0x400 { ; Vector
* (.data.vector)
}
RW_IRAM1 0x20000400 0x0002F800 { ; RW data
;.ANY (+RW +ZI)
* (.data, .bss)
* (LOS_HEAP)
}
ARM_LIB_STACKHEAP 0x2002FC00 EMPTY 0x400 { ;LiteOS MSP }
}

编译烧录任务运行成功并点亮LED。

Huawei LiteOS基于Cortex-M4 GD32F4平台移植的更多相关文章

  1. 三星为其基于 RISC-V的 Tizen平台移植.NET

    最近.NET团队在这篇文章中介绍了对.NET移植的一般政策:https://devblogs.microsoft.com/dotnet/why-dotnet/#binary-distributions ...

  2. 在秉火STM32F429挑战者开发板上移植Huawei LiteOS指南

    昨天在B站上突然看到了一个短视频,是在正点原子的战舰V3开发板上移植华为的Huawei LiteOS操作系统,就是这个视频:看完鸿蒙OS发布会,试用华为的物联网操作系统Lite OS(B站),于是呢, ...

  3. Huawei LiteOS简介

    Huawei LiteOS简介 Huawei LiteOS是华为面向物联网领域开发的一个基于实时内核的轻量级操作系统.本项目属于华为物联网操作系统Huawei LiteOS源码,现有基础内核支持任务管 ...

  4. 科普干货|漫谈鸿蒙LiteOS-M与HUAWEI LiteOS内核的几大不同

    摘要:鸿蒙和LiteOS的内核都是一样的名字,可它们究竟有什么不同呢?一起来对比一下文件吧! HarmonyOS系统 HarmonyOS是一款"面向未来".面向全场景(移动办公.运 ...

  5. 自学华为IoT物联网_12 Huawei LiteOS基础架构

    点击返回自学华为IoT物流网 自学华为IoT物联网_12 Huawei LiteOS基础架构 一.1个Huawei LiteOS Kernel 1.1 huawei LiteOS Kernel基本框架 ...

  6. MIPS平台移植apache 2.2.7

    参考文章: http://wenku.baidu.com/view/94e08a20a5e9856a561260e2.html http://httpd.apache.org/docs/2.4/ins ...

  7. CH02基于ZYNQ的嵌入式LINUX移植

    CH02基于ZYNQ的嵌入式LINUX移植 1.1概述 实验环境: Windows 10 专业版 Vmware workstation 14.1.1 Ubuntu 16.04.3 Xilinx SDx ...

  8. 基于token的多平台身份认证架构设计

    基于token的多平台身份认证架构设计 1   概述 在存在账号体系的信息系统中,对身份的鉴定是非常重要的事情. 随着移动互联网时代到来,客户端的类型越来越多, 逐渐出现了 一个服务器,N个客户端的格 ...

  9. 基于ThinkPHP3的微信平台开发_1

    微信公众平台是个好东西,具体的就不说了,我直接说技术>_< 下图为目录结构一览: 微信开发 - 文件目录结构 平台功能: 此次开发的平台是面向多微信公众号.微信多公众号主(下面简称号主)的 ...

  10. php平台移植windows和linux

    2015/1/14 今天项目中遇到一个问题,在本地运行没有问题,挂到服务器上,就运行错误.过程中比较粗心,知道导致这样的原因,居然小时漏掉了一些细节. 比如,在php中通过声明__autoload() ...

随机推荐

  1. ThreeJs-01开发环境搭建

    写在前面,好久不见各位,之前一段时间因为一些事情有点忙,但从未停止学习的脚步,也屯了很多笔记,会在未来的时间慢慢发出来,从今天开始一起进入WebGis,threeJs目前大前端发展的一个方向开始学习, ...

  2. HarmonyOS Next 入门实战 - 导航框架:HMRouter

    基础知识 目前官方推荐的最佳解决方案,是官方对于Navigation导航组件的封装,使用更简单便捷.如果熟悉Navigation的话,使用起来很快上手. 首先先集成HMRouter模块 使用命令行安装 ...

  3. LALR语法分析表

    LALR语法分析表 1.LALR(向前看-LR)技术 2.在实践中常用,分析表比规范LR分析表小 LALR(1)项集族的内核的高效计算方法 1.构造G的LR(0)项集族的内核 2.确定自发生的符号 3 ...

  4. WebSocket事件

    优点 双通信,减少延迟 四个主要的Web Socket API事件: ·打开 onopen 当在客户端和服务器建立连接,就会从Web Socket实例触发open事件.它被称为客户端和服务器之间的初始 ...

  5. 鱼与熊掌可以兼得,腾讯云推出COS on CDC对象存储服务

    01 前言 在云计算时代,各个企业的信息基础设施都在进行云化转型,一时间,似乎万物皆可上云.但是在上云过程中,有不少客户遇到过这样的问题:有部分数据出于合规需求,需要在本地存储与处理,怎么办?一些数据 ...

  6. 实用干货分享(3)- Git常用操作干货分享

    官方学习地址 https://git-scm.com/book/zh/v2 简单的代码提交流程 1. git status 查看工作区代码相对于暂存区的差别: 2. git add . 将当前目录下修 ...

  7. 如何在BASH中将制表符分隔值(TSV)文件转换为逗号分隔值(CSV)文件?(How do I convert a tab-separated values (TSV) file to a comma-separated values (CSV) file in BASH?)

    我有一些TSV文件需要转换为CSV文件. BASH中是否有任何解决方案,例如使用awk来转换这些?我可以这样使用sed,但担心它会出错: sed 's/\t/,/g' file.tsv > fi ...

  8. conda虚拟环境中设置环境变量

    引言 使用conda创建虚拟环境就是为了方便管理,各个环境之间的模块是独立的.有时候我们在做项目的时候需要设置一下环境变量才方便实用,但是不想影响到其他的虚拟环境,因此不能再系统的环境变量里面设置. ...

  9. Qt音视频开发系列文章导航

    文章 链接 1-vlc解码播放 https://qtchina.blog.csdn.net/article/details/107742836 2-vlc回调处理 https://qtchina.bl ...

  10. Qt 6 中的 Qt Extras 模块

    一.前言 Qt 6 是有意识地努力使框架更加高效和易于使用的结果. 我们尝试在每个版本中保持所有公共 API 的二进制和源代码兼容性. 但为了使 Qt 成为更好的框架,一些更改是不可避免的. 其中一项 ...