移植华为LiteOS-M到STM32L431(RolyMP3项目记录)

移植华为LiteOS-M到STM32L431(RolyMP3项目记录)

参考连接,原文讲的很好很细致,本文只做新版本下的移植记录

小熊派移植华为 LiteOS-M(基于MDK)

一、CubeMX设置

1.基础外设配置

外设 功能
SAI I2S通信
SDIO 驱动SD卡
I2C 驱动OLED
usart1 无线传输
usart2 debug

这里使用自己需要的外设

配置图:
屏幕截图 2025-08-27 201852

其中SYS的Timebase Source更改为TIM1
屏幕截图 2025-08-28 113642

2.生成代码

修改最大时钟为80M
3

选择MDK-ARM,V5进行开发
4

勾选生成选项并生成代码
5

3.可能出现的疑难杂症

对于第一次开发L431可能会遇到STM32L4xx.pack包打不上,Keil的包也安不上的问题,报错问题有Cannot copy license to XXX floder 如下。可以使用旧版本的pack包解决,官网安装2.6版本
6

二、获取源码

1.DevEco

在官网的开发文档中有提到过可以使用DevEco,进行获取源码,然而这种情况貌似更适合开发Linux下的发行版,通过ssh到linux环境进行编译,则需要再搭建一个linux系统。如果仅仅是作为开发,我认为Win自带的WSL则更为合适,甚至无需配置ssh可以直接连接,相比于VM也是一种更好的体验。(无需配置网络环境)(有时间可以出个心得)

2.Git

输入命令,一键拉库:

git clone -b develop https://github.com/LiteOS/LiteOS.git

Git,味大,无需多盐

3.源码目录

下载后,我们可以看到如下文件

----LiteOs
 |--  .github
 |-- arch
 |-- build
 |-- components
 |-- demos
 |-- doc
 |-- include
 |-- kernel
 |-- osdepends
 |-- targets
 |-- tests
 |-- .travis.yml
 |-- LICENSE
 |-- README.md

其中需要用到的主要有:

目录 作用
arch 编译启动文件
osdepends\liteos\cmsis CMSIS-RTOS 接口文件,连接RTOS层和系统层
targets\STM32F103VET6_NB_GCC\OS_CONFIG 系统的配置文件,这里使用官方对于103VET6进行的配置
Kernel 内核源码

三、移植

先在生成的工程文件夹中,新建目录.\Middlewares\而后新建四个文件夹分别为ARCH CMSIS Config Kernel
image

内核文件

1. ARCH

打开.\archl\arm\arm-m目录将会看到如下几个文件
image

其中src、include 、cortex-m4、cortex-m4\keil中的.c和.h文件,注意不要遗漏
粘贴后应当如下:
image

2.CMSIS

打开\Liteos\LiteOS\osdepends\liteos\cmsis复制整个文件夹的内容到,工程的CMSIS文件夹中
image
复制后文件如下
image

3.Config

打开targets\STM32F103VET6_NB_GCC\OS_CONFIG ,复制里面的.h文件到Config中
image

4.Kernel

复制整个.\Kernel文件到Kernel中
image

5.MDK引入文件

在Keil中创建四个文件夹,并导入
image

然后在C/C++中导入路径

Middlewares\Config
Middlewares\Kernel\base\include
Middlewares\Kernel\extended\include
Middlewares\Kernel\include
Middlewares\ARCH\arm\arm-m\include
Middlewares\CMSIS\cmsis

编译

点击编译,发现报错,缺少 #include “stm32f1xx.h” 文件,是因为是 stm32l431 的芯片,修改这个工程头文件为 #include "stm32l4xx.h"
image

修改完再编译,当然还会有报错,因为 STM32CubeMX 生成的代码里面有

void PendSV_Handler(void)
void SysTick_Handler(void)

两个中断,这两个中断在 LiteOS 的内核源码里面有定义,一个用作系统时钟,一个用作上下文切换,所以我们要把 STM32CubeMX 生成的这部分中断处理代码注释,位置是stm32l4xx_it.c之中
image

注释完后编译,编译通过:
image

系统移植基本完成

内核移植文件注释

TOBEDONE

posted @ 2025-08-28 13:08  HKRPT  阅读(59)  评论(2)    收藏  举报