FreeRTOS学习第1篇--系统介绍与移植


FreeRTOS学习第1篇–系统介绍与移植

一、FreeRTOS简介

FreeRTOS是一个轻量级的实时操作系统,它提供了实时操作系统所需的所有功能,包括资源管理、同步、任务通信等。它适用于各种不同的硬件平台,并且可以灵活地配置以满足不同的应用需求。FreeRTOS具有可移植性、可扩展性和可维护性,因此被广泛应用于嵌入式系统和物联网设备中。

二、FreeRTOS的优势

FreeRTOS 最大的优势就是开源免费,商业使用的话不需要用户公开源代码,也不存在任何版权问题,是当前小型嵌入式操作系统市场使用率最高的。

有几下几个特点:

  • 免费和开源,遵循 MIT 许可协议,可以在商业和个人项目中自由使用和修改。
  • 可裁剪和可配置,可以根据应用的需求和硬件的资源,选择需要的功能和参数,优化系统的性能和占用空间。
  • 可剥夺和可抢占,可以根据任务的优先级,随时中断低优先级的任务,切换到高优先级的任务,保证实时性和响应性。
  • 支持多种编译器和架构,已经移植到了 40 多种不同的处理器系列,包括 ARM、MIPS、AVR、PIC、x86 等。
  • 支持多种扩展库和组件,提供了网络、文件系统、安全、OTA 更新等功能,以及与 AWS IoT 服务的集成。

三、FreeRTOS的移植

需要的准备工作:准备一个硬件硬件跑代码。

FreeRTOS中有少部分与硬件密切相关的源代码,需要针对不同架构的MCU进行一些改写。例如:针对STM32系列单片机,就需要改写相应的代码,这个过程称为移植。一套移植的FreeRTOS源代码称为一个接口(port)。而在本例中,笔者针对自己现有硬件使用STM32CubeMX进行移植,简单高效,做到一个抛砖引玉的作用。

四、使用STM32CubeMX生成FreeRTOS的代码模板

基本工程配置:

在这里插入图片描述

打开组件选项卡中FreeRTOS,进行启用。

在这里插入图片描述

其中接口选用CMMSIS_V2,这里是ARM公司定义的RTOS接口,学习就学习使用新的版本,但是代码量会多一些。

在这里插入图片描述

使用默认配置进行代码生成,生成代码时会提示

在这里插入图片描述

这个提示的意思就是说FreeRTOS中使用SysTick作为为基础时钟源,而HAL库中也会有一些函数会有时钟需求如:HAL_Delay();这里需要在额外配置一个定时器供HAL库中的延迟函数使用,就需要额外添加一个定时器。

在这里插入图片描述

接着还是要生成代码,但是在NVIC的选项卡中又出现了一些警告,先无视警告,看一下生成的代码

在这里插入图片描述

编译代码并没有错误,使用常规的点灯,能成功跑起来

在这里插入图片描述

此次实验模板成功创建,成功操作系统入坑第一步点灯已成,万事开头难,后期会持续纪录学习纪录。

参考资料:

RTOS - Free professionally developed and robust real time operating system for small embedded systems development (freertos.org)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
DSP和标准外设库: 资源编号 : STSW-STM32065 资源名称 : STM32F4 DSP and standard peripherals library 文件名 : stm32_f105-07_f2_f4_usb-host-device_lib.zip 下载地址 : http://www.st.com/web/catalog/tools/FM147/CL1794/SC961/SS1743/PF257901# USB库: 资源编号 : STSW-STM32046 资源名称 : STM32F105/7, STM32F2 and STM32F4 USB on-the-go Host and device library (UM1021) 文件名 : stm32_f105-07_f2_f4_usb-host-device_lib.zip 下载地址 : http://www.st.com/web/en/catalog/tools/PF257882 ETH以太网库: 资源编号 : STSW-STM32046 资源名称 : LwIP TCP/IP stack demonstration for STM32F4x7 microcontrollers (AN3966) 文件名 : stsw-stm32070.zip 下载地址 : http://www.st.com/web/catalog/tools/FM147/CL1794/SC961/SS1743/PF257906 【CMSIS】 Cortex微控制器软件接口程序(Cortex Microcontroller Software Interface Standard (CMSIS). ) 版本: V4.2 发布日期: 31. July 2014 【STM32F4xx_StdPeriph_Driver】 STM32F40x系列CPU标准外设驱动程序 版本: V1.5.0 发布日期: 06-March-2015 【STM32_USB_OTG_Driver】 STM32F105/7xx, STM32F2xx and STM32F4xx USB Device Library 版本: V2.1.0 发布日期: 2012-03-19 【STM32_USB_Device_Library】 STM32F105/7xx, STM32F2xx and STM32F4xx USB Device Library 版本: V1.1.0 发布日期: 2012-03-05 【STM32_USB_HOST_Library】 STM32F105/7xx, STM32F2xx and STM32F4xx USB Host Library 版本: V2.1.0 发布日期: 2012-03-19 【STM32F4x7_ETH_Driver】 STM32F4x7 Eth Library 版本: V1.1.0 发布日期: 31-July-2013 ********************************************************************************************************* * * 版 本 : V1.0 * 说 明 : 本实验主要实现FreeRTOS+STemWin+FatFS+USB Host综合 * 实验目的: * 1. 学习FreeRTOS+STemWin+FatFS+USB Host综合 * 2. 这里的USB Host主要实现U盘相关处理,支持U盘热插拔。 * 用户可以根据需要在usb_usr.c文件中的插入检测函数: * USBH_USR_Configuration_DescAvailable或者函数USBH_USR_Init函数加入插入标志 * 拔出检测函数: * USBH_USR_DeviceDisconnected * 实验内容: * 1. 按下按键K1可以通过串口打印任务执行情况(波特率115200,数据位8,奇偶校验位无,停止位1) * ================================================= * 任务名 任务状态 优先级 剩余栈 任务序号 * vTaskUserIF R 2 272 2 * vTaskGUI R 1 657 1 * IDLE R 0 113 6 * vTaskMsgPro B 4 1957 4 * vTaskLED B 3 483 3 * vTaskStart B 5 489 5 * * * 任务名 运行计数 使用率 * vTaskUserIF 5583 1% * vTaskGUI 10782 2% * IDLE 355589 91% * vTaskLED 0 <1% * vTaskMsgPro 16770 4% * vTaskStart 17 <1% * 串口软件建议使用SecureCRT(V6光盘里面有此软件)查看打印信息。 * 各个任务实现的功能如下: * vTaskGUI 任务: emWin任务 * vTaskTaskUserIF 任务: 接口消息处理 * vTaskLED 任务: LED闪烁 * vTaskMsgPro 任务: U盘中文件处理和浏览 * vTaskStart 任务: 启动任务,也就是最高优先级任务,这里实现按键扫描和触摸检测 * 2. 任务运行状态的定义如下,跟上面串口打印字母B, R, D, S对应: * #define tskBLOCKED_CHAR ( 'B' ) 阻塞 * #define tskREADY_CHAR ( 'R' ) 就绪 * #define tskDELETED_CHAR ( 'D' ) 删除 * #define tskSUSPENDED_CHAR ( 'S' ) 挂起 * 3. 本实验的USB Host主要是对U盘的操作,通过电脑端的串口软件SecureCRT软件, * 给板子发送相关命令实现操作,具体实现在demo_fatfs文件里面。 * printf("请选择操作命令:\r\n"); * printf("1 - 显示根目录下的文件列表\r\n"); * printf("2 - 创建一个新文件armfly.txt\r\n"); * printf("3 - 读armfly.txt文件的内容\r\n"); * printf("4 - 创建目录\r\n"); * printf("5 - 删除文件和目录\r\n"); * printf("6 - 读写文件速度测试\r\n"); * printf("7 - 挂载U盘\r\n"); * printf("8 - 卸载U盘\r\n"); * 注意事项: * 1. 本实验推荐使用串口软件SecureCRT,要不串口打印效果不整齐。此软件在 * V5开发板光盘里面有。 * 2. 务必将编辑器的缩进参数和TAB设置为4来阅读本文件,要不代码显示不整齐。 * * 修改记录 : * 版本号 日期 作者 说明 * V1.0 2016-03-15 Eric2013 1. ST固件库到V1.5.0版本 * 2. BSP驱动包V1.2 * 3. FreeRTOS版本V8.2.3 * 4. STemWin版本V5.28 * 5. FatFS版本V0.11a * * Copyright (C), 2016-2020, 安富莱电子 www.armfly.com * *********************************************************************************************************
FreeRTOS是一款非常流行的嵌入式实时操作系统(RTOS),它为嵌入式系统提供了多任务管理、任务调度、时间管理、内存管理等功能。STM32F407是STMicroelectronics公司生产的一款高性能的32位ARM Cortex-M4微控制器,其具有丰富的外设和内存资源。 要在STM32F407上移植FreeRTOS,首先需要下载FreeRTOS的源代码,并获取适当的移植文件。移植文件针对不同的处理器架构和编译器进行了优化,因此需要确保选择正确的移植文件。 接下来,需要在STM32F407上配置编译环境。这包括设置正确的编译器和调试器,并配置适当的编译选项和链接脚本。一般来说,可以使用基于Eclipse的集成开发环境(IDE)或者命令行工具链进行编译。 在移植过程中,需要根据STM32F407的硬件特性,对FreeRTOS进行适当的配置。这包括调整任务堆栈大小、调整定时器参数、配置中断控制器等。这些配置可以在FreeRTOS的配置文件中完成,一般为FreeRTOSConfig.h。 移植过程中,需要实现启动和初始化代码。启动代码负责初始化处理器和外设,并启动第一个任务。初始化代码负责创建和配置FreeRTOS的各种任务和资源,例如任务控制块(TCB)、队列、信号量等。 完成移植后,可以开始编写应用程序。在应用程序中,可以使用FreeRTOS提供的任务和资源管理功能,实现多任务并行处理、任务间通信和同步等功能。同时,也可以利用STM32F407的丰富外设资源,实现各种应用逻辑。 总之,移植FreeRTOSSTM32F407需要完成以下步骤:获取源代码和移植文件;配置编译环境;调整FreeRTOS的配置;实现启动和初始化代码;编写应用程序。移植完成后,就可以利用FreeRTOS的功能和STM32F407的性能,开发高可靠、高性能的嵌入式应用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

独处东汉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值