[LiteOS移植]目标芯片STM32F1 分析与思考

网友投稿 534 2022-05-30

本篇讲述如何分析官方或者其他友商提供的工程文件,在此基础上写出自己的工程文件,这是一种分析的方法,只有掌握了这样的方法,你才能快速学习一个新的东西,会自己独立思考问题,不是所有项目都有很好的技术支持,大部分都是靠自己,甚至说明文档都很少,只能阅读别人的代码,从而知道其思想和内部原理。

由上至下整体分析

拿到一份工程文件的第一件事不是直接去阅读其源码,如果直接去阅读源码可能会一头雾水,应该先分析其结构,在心中有个大的方向,再去阅读源码并更正心中的想法,这样才能做到最高效,在阅读的过程中还可以把觉得不好的地方记录下来,在自己后面开发得工程中加以改善。

我们这里以SDK/targets/STM32L431_BEAR工程文件为例,带领大家阅读和分析。

Demos:存放操作系统之上,用户逻辑代码。

GCC:存放Makefile文件、链接脚本、编译过程中间文件。

Hardware:存放平台特有硬件驱动代码(例如显示屏和各类拓展板)。

Inc:存放头文件。

OS_CONFIG:存放操作系统的配置文件。

Src:存放单片机的外设初始化文件及main.c文件。

uart_at:存放at使用的串口初始化和驱动代码文件。

.config:Kconfig生成的配置文件

.config_old:没使用到,可以忽略。

Iot_config.h:Kconfig生成的配置头文件(主要通过宏定义来使能一些组件)。

Kconfig:Kconfig读取该文件显示图形化配置选项。

根据以上分析,我们首先要将通过STM32CubeMX生成的工程调整结构,尽量和上面相同,因为工程的编译是依赖Makefile来进行,Makefile可以使用官方案例工程中提供的Makefile在GCC目录中,其原理是根据目录来指定需要被编译的文件,所以我们将自己的工程结构调整的尽可能与上面相同,便于适配Makefile,减少工作量。

Demo目录中有多个目录,每一个目录对应一个用户例程,我们可以如法炮制,根据自己的项目需求在Demo目录中新建一个xxxx(需求名称)的目录,并在目录中新建一个xxxx.c源文件,修改user_demo.mk,在其中添加上我们这个工程目录中源文件的信息,后面才能选择编译。

GCC目录中存放多个链接脚本和Makefile文件,我们使用到的是Makefile、project.mk、os.ld这三个文件,重点修改project.mk和os.ld让其适配我们的工程目录和MCU型号。

[LiteOS移植]目标芯片STM32F1 分析与思考

Hardware目录中存放板载外设的驱动,例如板子上特有的LCD显示屏、各种拓展板卡上的传感器,例如温度、湿度、光照传感器的驱动代码,我们可以移除没有用到的驱动代码,添加上自己开发板特有的传感器驱动,供用户代码调用。

Inc目录存放单片机上各类外设的驱动代码的头文件,我们可以移除没有使用到的文件,添加上用到的单片机外设的驱动头文件,直接从STM32CubeMX生成的Makefile工程中的Inc目录中复制过来即可。

OS_CONFIG目录中的文件用于控制LiteOS和调试信息的输出,我们可以根据需求,进行一些修改,例如通过target_config.h文件设置最大支持的信号量个数,是否采用硬件接管机制等等,一般不用设置,保持默认即可。

Src目录中存放单片机上各类外设的驱动代码以及main函数的入口文件main.c,该文件直接使用即可,可以从STM32CubeMX生成的Makefile工程中的Src目录中复制一些用到的单片机外设驱动文件到该目录中,移除一些没有用到的文件。

uart_at目录中存放发送AT指令控制外部支持AT指令的模块的串口驱动代码,包括串口初始化、实现一个数据结构,用于保存接收到的数据,供用户代码读取等。

其余文件均不用修改,.config和iot_config.h文件由Kconfig根据SDK配置自动生成。

下一节开始调整工程结构。

LiteOS移植

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:2021年,财务软件的未来更具想象力
下一篇:【转】通过历史性能了解网络运行的性能趋势
相关文章