b2c信息网

您现在的位置是:首页 > 热点问题 > 正文

热点问题

freertos调度器源码(freertos 调试)

hacker2022-07-30 18:50:15热点问题94
本文目录一览:1、FreeRTOS与无嵌入式系统在代码上的区别是什么?2、

本文目录一览:

FreeRTOS与无嵌入式系统在代码上的区别是什么?

先说没有系统的,没有系统的,就是一个while循环,不断的按步骤循环执行,高级一点的,加入中断处理,可以及时响应意外情况。

有系统的,比如rtos,这样的系统代码,不是用while循环来驱动的,而是一种所谓的调度器来处理,处理什么呢,处理任务,什么是任务呢,就是一个任务,你可以理解成一个while循环,

所以,由上总结,有系统的,相当于可以同时执行多个while循环,而普通的无系统的,就只能执行一个while循环,

大概是这样理解,实际并不是这样,

核心在于调度器,这个是操作系统的核心部分,调度器是用来调度任务的,怎么调度,就是合理的分配每个任务,占用cpu的时间,也就是使用cpu的资源,其实也就相当于一个任务资源调度系统,

更多的,你可以学习了解下,操作系统相关知识,

回到你的问题,,二者代码的区别,也就是框架不同,里面的内容是一样的,

也就是,你的逻辑,在不同的房间一样,只不过,不同的房间,有不同的规则,,,

希望对你有帮助!

如何将linux下的程序,移植到freertos中

方法/步骤

嵌入式操作系统有分时操作系统和实时操作系统,如果操作系统能够使计算机系统及时响应外部事件请求,并能控制所有实时设备和实时任务协调运行,且能在一个规定的时间内完成对事件的处理,怎么这种系统称为实时操作系统。

如果系统必须在极其严格的时间内完成的任务叫做硬件的实时操作系统,如果不是很严格的话就是软件的实时操作系统。

前往官网下载最新版的FreeRTOS系统,然后解压缩到本地。有两个文件夹,FreeRTOS文件夹里面是操作系统内核,FreeRTOS-Plus里面是一些中间件如文件系统,网络协议栈等。

值得一提的是,FreeRTOS的教学用书和API参考手册电子版均已免费提供,建议在现在安装FreeRTOS的同时也一并下载到本地,以供后期学习查阅。

FreeRTOS的主要特点如下:

1. 支持抢占式调度,合作式调度和时间片调度

2. 具有低功耗模式,称为tickless模式

3. FreeRTOS-MPU支持M3/M4/M7内核的MPU(内存保护单元)

4. 典型的内核使用大小在4k~9k

5. 支持消息队列、二值信号量、计数信号量、递归信号量和互斥信号量,可用于任务与任务之间的消息传递和同步,任务与终端间的消息传递和同步

6. 任务数量不限,任务优先级数量不限

7. 高效的软件定时器,不需要损耗额外的CPU时间,除非需要执行定时器任务

8. 任务间直接的消息传递,速度较快

9. FreeRTOS的队列是其它通信和同步机制的基础

移植FreeRTOS之前,原有的工程(比如跑马灯,越简单越好)中不能有SysTick、PendSV和SVC三个系统中断的使用,因为FreeRTOS系统要使用这三个中断。

1. 准备好简单工程的模板

2. 在工程模板中创建FreeRTOS文件夹,并将解压后源码FreeRTOS文件夹中Source目录下的所有内容复制进来

3. 在user目录下需要手动窗件FreeRTOSConfig.h的配置文件,也可以从官方demo中拿来修改后使用,比如从下载的源码目录下的FreeRTOS/Demo/CORTEX_M4F_STM32F407ZG-SK中进行拷贝

4. 将源码文件添加到MDK的工程目录中,其中heap_4.c文件路径Source/portable/MemMang,port.c的路径FreeRTOS/Source/portable/RVDS/ARM_CM4F,这是因为我们使用的M451是CM4F内核的

在工程中添加新的头文件搜索路径:

.\FreeRTOS\include;

.\FreeRTOS\portable\RVDS\ARM_CM4F

打开FreeRTOSConfig.h配置文件,根据自己硬件配置进行修改

1. 首先将文件开头的__ICCARM__修改为__CC_ARM,即把编译器从IAR改为RealView

2. 将以下宏配置为0

configUSE_IDLE_HOOK

configUSE_TICK_HOOK

configCHECK_FOR_STACK_OVERFLOW

configUSE_MALLOC_FAILED_HOOK

3. #define configUSE_PREEMPTION 1 将会使能抢占式调度器

4. #define configCPU_CLOCK_HZ ( SystemCoreClock )设置系统主频(M451的系统主频为72MHz)

5. #define configTICK_RATE_HZ ( ( TickType_t ) 1000 )设置系统节拍为1kHz,即1ms

6. #define configMAX_PRIORITIES ( 5 )定义可供用户使用的最大优先级数为5,那么用户可以使用的优先级号是0,1,2,3,4

6. #define configTOTAL_HEAP_SIZE ( ( size_t ) ( 30 * 1024 ) )定义堆大小,FreeRTOS内核,用户动态申请内存,任务栈等都需要这个空间

4. 将工程整体重新编译一次,这样FreeRTOS基本移植结束了

编写测试程序来验证一致的FreeRTOS是否已经可以使用

1. 在main.c中添加一下几个头文件

#include "FreeRTOS.h"

#include "task.h"

#include "queue.h"

#include "croutine.h"

2. 在main函数的开头,禁止全局中断(除了NMI和HardFault),具体方法是:__set_PRIMASK(1);这样做的好处是可以防止执行的中断服务程序中有FreeRTOS的API函数,保证系统正常启动,不受别的中断影响。在port.c中的函数prvStartFirstTask中会重新开启全局中断

3. 创建任务AppTaskCreate();

4. 启动调度,开始执行任务vTaskStartScheduler();

烧写程序,运行,可以从串口看到正确的输出信息

在学习freertos之前,应学习哪些东西

学习FreeRTOS前的准备工作这里只要做好两点就可以了。1, 从官网下载最新的程序包2, 官网有FreeRTOS每个函数的API说明,已经相应API的例子,其实源码的.h文件里面也有大部分函数的使用例子 教程计划1 先把自己做的这几个例子讲解一下,关键是分析一下源码,源码必须得分析,要不知其然不知其所以然。2 然后把官方的这几个例子讲解一下,说这几个例子的主要目的是充分学习官方是如何使用这个RTOS的,非常有参考价值。3 针对我们板子自己的外设,做一套完整的,基于FreeRTOS的底层驱动,让这些驱动能够更加有效的在FreeRTOS下面工作。在学习freertos之前,应学习哪些东西

发表评论

评论列表

  • 双笙忿咬(2022-07-30 21:20:04)回复取消回复

    include "croutine.h"2. 在main函数的开头,禁止全局中断(除了NMI和HardFault),具体方法是:__set_PRIMASK(1)