原创
FreeRTOS学习笔记一 了解Free RTOS移植
Free RTOS学习笔记一
了解Free RTOS
了解其中的内容:
FreeRTOS
FreeRTOS-Plus
对应的是FreeRTOS的两个不同的版本,带有Plus的是更加高级的版本(具备的功能可能会更多)
FreeRTOS中有三个文件夹:
Dome FreeRTOS的相关例程 移植的时候可以参考这个文件夹中的工程
License 许可文件 这个文件中只有一个文本文件,里面全是英文,讲的内容并没有认真的阅读。这个文件对学习FreeRTOS并没有影响。
Source 源代码 这个文件加里面的文件是学习需要重点关注的。
里面的include文件夹中是一些头文件,在移植的时候是需要使用的。
partable文件夹中的文件家属FreeRTOS系统和具体的硬件之间的桥梁。对于不同的硬件,不同的开发环境,需要的连接桥梁是不一样的。因此在移植FreeRTOS的时候需要根据自己的硬件以及开发环境选择合适的文件。这个文件中按照不同的开发环境划分。移植的时候选择的是keil开发环境,打开这个文件夹一看,只有一个文本文件。额!不会吧,难道不支持keil环境?不应该啊,如果不支持应该是不会出现Keil这个文件夹的啊!仔细看看里面的文本文件的名称“See-also-the-RVDS-directory.txt”参考RVDS文件夹里面的东西!原来是这样,Kiel环境所需的连接文件和RVDS环境的文件一样啊!想想问什么这样处理呢?这样是为了减少相同的文件避免内存的浪费。如果是一般人可能做这件事就直接在每个文件夹中放一个连接文件,不去管是不是重复了。这就是一般的思维。在RVDS文件夹中针对不同的架构的MCU做了详细的分类,注意这里的分类方式是对不同的架构进行分类,而不是对不同的MCU进行分类。MCU的型号有很多,他们可能是不同公司的、可能是一个公司的不同型号。但是很多的芯片使用的架构是相同的。我们知道世界上一个个公司不生产芯片,但是印有该公司的丝印的芯片数不胜数。这个公司是arm。对于我们使用的相同架构的芯片之间的区别可能就是芯片有的外设的不同,拥有的内存大小的不同、引脚数的不同。其根本还是相同的。这也是我们学习一款单片机对于其他的就能快速上手其他型号的单片机的原因(这里指的是相同架构的单片机,当然对于不同架构的单片机的使用方法类似)
partable中的MemMang文件夹是跟内存管理有关的,在移植的过程中必须要移植。
FreeRTOS的移植
了解了FreeRTOS的内容之后开始移植FreeRTOS
对于系统的原理先不做详细的分析,先学会应该怎么使用,之后再去学习其内核最本质的东西。也就是先从简单的入手,循序渐进,由浅入深。
首先,需要一个简单的工程文件。在这个文件夹中创建一个FreeRTOS的文件夹用于存放FreeRTOS的源码。
将FreeRTOS的源码(Source文件夹中的所有文件)复制到新建的FreeRTOS文件夹中。再将Source文件夹中的partable文件夹中的不需要的文件删除(需要的文件是keil、MemMang、RVDS这三个文件夹,其他的就是不需要的,可以全部删除)
准备好文件之后,打开工程,创建两个分组:FreeRTOS_CORE和FreeRTOS_PORTANLE.
将源文件的的六个.C文件添加到FreeRTOS_CORE中,将RVDS中的port.c文件和MemMang文件夹中的heap_4.c添加到FreeRTOS_PORTANLE文件夹中。
之后再给工程添加FreeRTOS的头文件,见之前看都的那个头文件夹的路径添加进工程。编译之后会发现没有FreeRTOSConfig.h文件,这个文件时系统配置文件,是由移植系统时根据自己的需求配置的文件。这个文件可以从FreeRTOS提供的Dome中找到。但是这个可能会与自己的工程冲突。毕竟这个头文件对应的工程并不是自己创建的工程所需要的。这个可以直接使用正点原子提供的工程。当然学习FreeRTOS也是再正点原子的教程之下进行的。这里应该感谢正点原子,让技术变得更简单。
eeNick 2019-1-7 10:27