Huawei LiteOS基于Cortex-M4 GD32F4平台移植
1|01、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|02、Huawei LiteOS内核介绍
2|12.1内核架构
2|22.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|32.3内核启动流程
3|03、LiteOS在keil MDK上移植
1、准备LiteOS源码、一个GD32F4xx裸机工程。
版本不同略有差别,组件功能可自行移植。
2、建立如下目录:
工程目录:
3、MDK工程构建
3.1在Keil的IDE环境中,分别添加以下4个分组:
3.2添加源码到工程
-
到源码LiteOS的targets目录下找到GD32工程参考,拷贝MDK汇编启动文件
los_startup_keil.s
并添加到工程。 -
添加LiteOS汇编文件
..\LiteOS\arch\arm\arm-m\cortex-m4\keil
。
- 添加c文件
- 包含分组中所需头文件
4|04、最后编译测试
- 勾选Use MicroLIB。
- ARM Comoiler默认选择version5。
- ScatterFile分散加载文件适配LiteOS使用如下格式:
编译烧录任务运行成功并点亮LED。
__EOF__

本文链接:https://www.cnblogs.com/xiaohuzaixue/p/18686977.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?