English 简体中文 繁體中文 한국 사람 日本語 Deutsch русский بالعربية TÜRKÇE português คนไทย french
查看: 15|回复: 0

Huawei LiteOS基于Cortex-M4 GD32F4平台移植

[复制链接]
查看: 15|回复: 0

Huawei LiteOS基于Cortex-M4 GD32F4平台移植

[复制链接]
查看: 15|回复: 0

381

主题

0

回帖

1153

积分

金牌会员

积分
1153
dsujbhui

381

主题

0

回帖

1153

积分

金牌会员

积分
1153
2025-2-6 23:10:38 | 显示全部楼层 |阅读模式
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源码目录结构

一级目录二级目录三级目录说明archarmcortex_a_rA核架构支持cortex_mM核架构支持arm64arm64架构支持cskycskyv2cskyv2架构支持riscvrvm32riscv架构支持buildLiteOS编译系统需要的配置及脚本compatcmsisliteos提供的CMSIS-RTOS 1.0和2.0接口componentsaiai(基于mindspore)算子库实现connectivityagent_tinyagent_tiny端云互通组件,包括公共头文件、示例代码、客户端实现代码、操作系统适配层代码lwm2mlwm2m协议实现mqttMQTT开源协议实现nb_iotLiteOS NB-IoT APIfsdevfsdevfs文件系统fatfsfatfs文件系统kifskifs文件系统littlefslittlefs文件系统ramfsramfs文件系统spiffsspiffs文件系统vfs虚拟文件系统gui开源LittlevGL图形库language语言相关组件,含lualibcjsonc语言json库log日志等级控制media媒体相关组件,含libpng、openexif、opus、upup、netat_deviceAT设备适配层at_frameLiteOS AT框架APIifconfigifconfig shell命令实现los_iperf网络带宽测试工具lwip/lwip_portlwip驱动及OS适配代码lwip/lwip-2.1.2lwip协议实现lwip/ppp_portlwip协议ppp端口支持pcap网络抓包工具pingping shell命令实现salsocket通讯支持tftp_servertftp服务ota固件升级代码securitymbedtls/mbedtls_portmbed TLS的OS适配代码mbedtls/mbedtl-2.16.8mbed TLS协议实现opensslopenssl协议sensorhubincludesensor manager头文件srcsensor manager的源码实现utility解析工具,含bidireference、curl、fastlz、freetype、harfbuzz、iconv、iniparser、json-c、jsoncpp、libxml2、sqlite、thttpd、tinyxml2demosagenttiny_lwm2mlwm2m协议 demoagenttiny_mqttmqtt 协议demoaiai的demodtls_serverdtls协议demofs文件系统demoguigui的demoipv6_clientIpv6协议demokernelapi供开发者测试LiteOS内核的demo示例代码includeAPI功能头文件存放目录language语言相关组件的demolmsLMS的demomedia媒体相关组件的demonbiot_without_atinyNB-IoT demosensorhubgyro基于sensorhub传感框架定时读取MPU6050陀螺仪原始数据的demotraceTrace的demoutility解析工具的demodoc此目录存放的是LiteOS的使用文档和API说明等文档driverbaseLiteOS驱动框架interruptLiteOS系统中断接口timerLiteOS系统定时器接口uartLiteOS系统串口接口includecomponents各个模块所依赖的头文件kernelbaseLiteOS基础内核代码,包括任务、中断、软件定时器、队列、事件、信号量、互斥锁、tick等功能debugLiteOS内核调测代码,包括队列、信号量、互斥锁及任务调度的调测includeLiteOS基础内核内部使用的头文件memLiteOS中的内存管理相关代码sched任务调度支持,包括对多核的调度支持shellcmdLiteOS中与基础内核相关的shell命令,包括memcheck、task、systeminfo、swtmr等extendedcppsupportC++兼容适配层底层接口cpupCPU占用率统计接口includeextended目录所需的头文件lmsLMS(实时检测内存操作合法性算法)的库文件lowpower低功耗框架相关代码tracetrace事件跟踪,用于实时记录系统运行轨迹includeLiteOS开源内核头文件initLiteOS内核初始化相关代码libhuawei_libcLiteOS自研libc库和适配的posix接口libcLiteOS适配的musl libc库libsec华为安全函数库zlib开源zlib库osdependsliteosLiteOS提供的部分OS适配接口shellsrc实现shell命令的代码,支持基本调试功能includeshell头文件targets通用板级支持包、开发板的开发工程源码包toolsbuildLiteOS支持的开发板编译配置文件menuconfigLiteOS编译所需的menuconfig脚本MakefileLiteOS Makefile.config开发板的配置文件,如果用户不重新选择开发板,默认为野火挑战者STM32F429开发板的配置文件2.3内核启动流程


3、LiteOS在keil MDK上移植

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

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

2、建立如下目录:

工程目录:

LiteOS目录:

3、MDK工程构建

3.1在Keil的IDE环境中,分别添加以下4个分组:

LiteOS/kernelLiteOS/archLiteOS/cmsisLiteOS/config3.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\config4、最后编译测试


  • 勾选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。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

381

主题

0

回帖

1153

积分

金牌会员

积分
1153

QQ|智能设备 | 粤ICP备2024353841号-1

GMT+8, 2025-3-10 15:15 , Processed in 1.590698 second(s), 30 queries .

Powered by 智能设备

©2025

|网站地图