移植华为LiteOS-M到STM32L431(RolyMP3项目记录)
移植华为LiteOS-M到STM32L431(RolyMP3项目记录)
参考连接,原文讲的很好很细致,本文只做新版本下的移植记录
一、CubeMX设置
1.基础外设配置
| 外设 | 功能 |
|---|---|
| SAI | I2S通信 |
| SDIO | 驱动SD卡 |
| I2C | 驱动OLED |
| usart1 | 无线传输 |
| usart2 | debug |
这里使用自己需要的外设
配置图:

其中SYS的Timebase Source更改为TIM1

2.生成代码
修改最大时钟为80M

选择MDK-ARM,V5进行开发

勾选生成选项并生成代码

3.可能出现的疑难杂症
对于第一次开发L431可能会遇到STM32L4xx.pack包打不上,Keil的包也安不上的问题,报错问题有Cannot copy license to XXX floder 如下。可以使用旧版本的pack包解决,官网安装2.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

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

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

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

复制后文件如下

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

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

5.MDK引入文件
在Keil中创建四个文件夹,并导入

然后在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"

修改完再编译,当然还会有报错,因为 STM32CubeMX 生成的代码里面有
void PendSV_Handler(void)
void SysTick_Handler(void)
两个中断,这两个中断在 LiteOS 的内核源码里面有定义,一个用作系统时钟,一个用作上下文切换,所以我们要把 STM32CubeMX 生成的这部分中断处理代码注释,位置是stm32l4xx_it.c之中

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

系统移植基本完成
内核移植文件注释
TOBEDONE

浙公网安备 33010602011771号