1、必要的准备工作

工欲善其事,必先利其器,在开始学习和移植之前,相应的准备工作必不可少。所以在开始我们写要准备如下:

  • 测试环境:我准备在STM32F103平台上移植和测试FreeRTOS系统

  • 准备FreeRTOS系统源码,从官网下载最新版本的程序包,最新为v9.0.0,地址:https://sourceforge.net/projects/freertos/

  • 从官网查看FreeRTOS每个函数的API说明,以及相应的例子。根据以往的经验,在学习过程中应该会经常查看,地址: http://www.freertos.org/a00106.html

2、了解FreeRTOS源文件的目录结构

下载的FreeRTOS下载包是一个自解压的文件,解压后包含的内容比较丰富,不过不露结构很清晰,主要包含两个子目录:FreeRTOS和FreeRTOS-Plus。如下所示:

  • FreeRTOS-Plus           包含FreeRTOS+组件和演示例程;

  • FreeRTOS                  包含FreeRTOS实时内核源文件和演示例程。

我们学习的FreeRTOS内核部分在FreeRTOS目录之下,打开FreeRTOS文件夹它又被分成两个主要的子目录,如下所示:

  • Demo          包含演示例程工程;

  • Source         包含实时内核源文件。

RTOS代码的核心包含在三个文件中:tasks.c、queue.c、list.c。这三个文件位于FreeRTOS/Source目录。在该目录下还包含三个可选的文件:timers.c、event_groups.c、croutine.c,分别实现软件定时、事件组和协程功能。

打开Source文件夹,FreeRTOS/Source目录结构如下所示:

  • include        FreeRTOS内核代码头文件。

  • portable              面向特定环境的接口描述。

  • 以及前面所述的6个文件。

应用平台的不同,所以每个支持的处理器架构都有一段与处理器架构相关的RTOS代码。这个是RTOS移植层,它位于FreeRTOS/Source/Portable/[相应编译器]/[相应CPU架构]子目录。

对于FreeRTOS,堆栈设计也属于移植层。FreeRTOS/Source/portable/MemMang目录下heap_x.c文件给出了多种堆栈方案,后续文章将会详细介绍堆栈操作。

如果FreeRTOS在IAR环境下移植到STM32F103平台则为需要移植\FreeRTOS\Source\portable\IAR\ARM_CM3目录下的文件,除此之外位于\FreeRTOS\Source\portable\MemMang目录之下的堆栈设计文件也需要移植。其他部分则可忽略。

打开Demo文件夹,其中包含各种处理器架构和编译器的演示例程。大多数的演示例程代码对所有移植都是通用的,位于FreeRTOS/Demo/Common/Minimal目录。Demo目录下剩余的子目录包含预先配置好的工程,可以用于构建个人演示例程。子目录的命名与移植平台和编译器相关。如果我们查看在IAR环境下STM32F103平台演示工程,则可以查看\FreeRTOS\Demo\CORTEX_STM32F103_IAR目录。

3、开启简单的快乐之旅

有了以上的了解我们现在通过Demo简单学习一下,在IAREWARM开发环境中打开\FreeRTOS\Demo\CORTEX_STM32F103_IAR目录下的RTOSDemo.eww工程。

该项目打开后的文件组织形式如下:

编译该工程,该Demo项目在IAR EWARMV6.4平台下编译无错误:

下载到STM32F103VET6目标MCU运行正确。至此,测试Demo项目正确。

欢迎关注:

FreeRTOS学习及移植笔记之一:开始FreeRTOS之旅相关推荐

  1. FreeRTOS学习及移植笔记之二:在IAR和STM32F103VET上移植FreeRTOS

     上一次,我们简单的测试了FreeRTOS的基于IAR EWARMv6.4和STM32F103VET6平台的Demo,对其有了一个基本认识.接下来我们开始自己移植FreeRTOS的过程. 1.创建 ...

  2. FreeRTOS学习笔记——互斥型信号量

    来自:http://blog.csdn.net/xukai871105/article/details/43456985 0.前言 在嵌入式操作系统中互斥型信号量是任务间资源保护的重要手段.下面结合一 ...

  3. FreeRTOS学习记录

    FreeRTOS学习记录 前言 FreeRTOS学习记录 在STM32CubeMX中配置FreeRTOS 前言 本人小白,最近学习了FreeRTOS操作系统,打算做一点记录. 学习的过程中虽然做了点练 ...

  4. freeRtos学习笔记 (9) 移植和CPU利用率统计

    freeRtos学习笔记 (9) 移植和CPU利用率统计 使用官方固件移植 首先准备一个能跑的裸机工程 注意,freertos需要使用systick定时器,而stm32HAL库默认使用systick作 ...

  5. STM32F407霸天虎FreeRTOS学习笔记——移植FreeRTOS到开发板上

    STM32F407霸天虎FreeRTOS学习笔记--移植FreeRTOS到开发板上 FreeRTOS源码获取 移植第一步:创建文件夹 Keil main.c 实验效果 FreeRTOS源码获取 在移植 ...

  6. FreeRTOS学习笔记【二】——FreeRTOS 移植

    上一章中我们初步的了解了一下 FreeRTOS,本章就正式踏上 FreeRTOS 的学习之路, 首先 肯定是把 FreeRTOS 移植到我们所使用的平台上, 这里以 ALIENTEK 的 STM32F ...

  7. FreeRTOS学习笔记20200526

    FreeRTOS学习笔记-Day1-20200526 nFlag = TRUE; 先立个Flag,是时候点亮嵌入式实时操作系统这个技能了.座右铭:坚持.认真.沉静.笃行. FreeRTOS优势 总结F ...

  8. FreeRtos学习笔记(11)查找就绪任务中优先级最高任务原理刨析

    FreeRtos学习笔记(11)查找就绪任务中优先级最高任务原理刨析 怎么查找就绪任务中优先级最高的? tasks.c中声明了一个全局变量 uxTopReadyPriority,任务从其他状态进入就绪 ...

  9. freeRtos学习笔记 (8) 任务通知

    freeRtos学习笔记 freeRtos任务通知 任务通知的优缺点 freeRtos任务控制块中包含两个32位的变量,用于任务通知,在一些情况下,任务通知可以替代信号量和事件组,并且比信号量和事件组 ...

最新文章

  1. MySQL面试题 | 附答案解析(三)
  2. 设置mysql远程连接root权限
  3. Django MTV模型思想
  4. Leaflet绘制热力图【转】
  5. ubuntu下nextcloud性能和安全设置优化_Ubuntu linux 18.04安装图解及IPV6协议处理和优化...
  6. jdbc操作步骤和preparedStatment相比Statment的好处
  7. android 9patch 漏洞,Android 9patch 图片解析堆溢出漏洞分析(CVE-2015-1532)
  8. NYOJ 116 士兵杀敌(二)
  9. 如何使用 kubectl 通过命令行的方式操作 SAP Kyma
  10. 路由器桥接显示服务器已满,两个迅捷路由器经过有线桥接已经成功连接上,但是测试的时候副路由器却连接不上服务器?为什么?谢谢!...
  11. XP的用户账户使用了HTML界面,XP系统点击用户账户显示参数无效怎么办?WinXp下点击用户账户提示参数无效解决方案...
  12. 助力飞鸽传书高效沟通
  13. STM32工作笔记0091---ADC模数转换实验-M3
  14. 【网络信息安全】网络信息安全概述
  15. 实现日志文件直接导入数据库
  16. Android 超级工具类
  17. cocos creator 台球小游戏
  18. html图片旁边加文字
  19. NOI 1818:红与黑(C++)
  20. 1.8万字详解实时数仓建设方案

热门文章

  1. 【网络搜索】学习资料
  2. C语言:fopen与open的总结
  3. LeetCode 206 Reverse Linked List 解题报告
  4. VM虚拟机下配置centos linux系统
  5. 16重新安装HA0.63
  6. (4.14)向上取整、向下取整、四舍五入取整的实例
  7. Python shutil.md
  8. GWT(Google Web Tookit) Eclipse Plugin的zip下载地址(同时提供GWT Designer下载地址)
  9. 计算机网络(十)-数据链路层-差错控制
  10. Spring AOP解析