博主手里有一个正点原子 STM32F103ZET6,行情最贵的时候买的,得好好利用。
手里还有一块韦东山 JZ2440,正点原子 imx6ull开发板,是 Linux 开发板。
后来工作遇到了安卓,想买安卓开发板,发现做安卓教程的比较少,或许是它真的太大太复杂。能跑安卓的板子比如:tiny4412,RK3399,香橙派。
玩了嵌入式 Linux 以后,发现单片机真简单;后来接触了安卓,觉得还是 Linux 简单。
嵌入式有三个方向:单片机、嵌入式 Linux 、Android,系统复杂性依次提高。
这里没有什么高低贵贱,适合什么就用什么。单片机便宜,裸机不行就上 RTOS ,也可以满足需求。
接下来就在 STM32F103 单片机上移植 FreeRTOS。
移植 FreeRTOS
以正点原子的跑马灯工程为基础,在上面扩展。在基础工程中新建一个名为 FreeRTOS 的文件夹:
创建 FreeRTOS 文件夹以后就可以将 FreeRTOS 的源码添加到这个文件夹中,,添加完以后 如图所示:
portable 文件夹,我们只需要留下 keil、MemMang 和 RVDS 这三个文件夹,其他的都可以删除掉:
打开基础工程,新建分组 FreeRTOS_CORE 和 FreeRTOS_PORTABLE,然后向这两个分组 中添加文件
分组 FreeRTOS_CORE 中的文件就是 FreeRTOS 源码。FreeRTOS_PORTABLE 分组中的 port.c 和 heap_4.c ,port.c 是 RVDS 文件夹下的 ARM_CM3 中的文件,因为 STM32F103 是 Cortex-M3 内核的,因此要选择 ARM_CM3 中的 port.c 文件。heap_4.c 是 MemMang 文件夹中的,前面说了 MemMang 是跟内存管理相关的,里面有 5 个 c 文件:heap_1.c、heap_2.c、heap_3.c、heap_4.c 和 heap_5.c。这 5 个 c 文件是五种不同的内存管理方法。这 5 个文件都可以用来作为 FreeRTOS 的内存管理文件,只是它们的实现原理不同,各有利弊。这里我们选择 heap_4.c。
添加相应的头文件路径:
头文件路径添加完成以后编译一下,看看有没有什么错误,结果会发现提示打不开 “FreeRTOSConfig.h”这个文件
这是因为缺少 FreeRTOSConfig.h 文件,这个文件在哪里找呢?你可以自己创建,显然这不是一个明智的做法。我们可以找找 FreeRTOS 的官方移植工程中会不会有这个文件,打开 FreeRTOS 针对 STM32F103 的移植工程文件,文件夹是 CORTEX_STM32F103_Keil,打开以后官方的移植工程中有这个文件,我们可以使用这个文件,但是建议大家使用正点原子例程中的 FreeRTOSConf.h 文件,这个文件是 FreeRTOS 的系统配置文件,不同的平台其配置不同。
FreeRTOSConfig.h 是何方神圣?看名字就知道,他是 FreeRTOS 的配置文件,一般的操作系统都有裁剪、配置功能,而这些裁剪及配置都是通过一个文件来完成的,基本都是通过宏定义来完成对系统的配置和裁剪的。
到这里我们再编译一次,没有错误!如果还有错误的话大家自行根据错误类型查找和修改错误!