
FreeRTOS
文章平均质量分 92
记录下个人学习的见解
la_fe_
这个作者很懒,什么都没留下…
展开
-
FreeRTOS学习(十)列表与列表项
文章目录1.列表与列表项1.1 列表1.2 列表项2.列表项操作2.1 列表项插入2.2 列表项删除与遍历1.列表与列表项 在前面的介绍中提到过,任务的管理涉及到了列表与列表项,针对不同的任务状态建立不同的列表,实现任务的追踪与管理。//就绪列表和阻塞列表PRIVILEGED_DATA static List_t pxReadyTasksLists[ configMAX_PRIORITIES ];//就绪列表PRIVILEGED_DATA static List_t xDelayedTaskLi原创 2021-03-22 16:54:14 · 399 阅读 · 0 评论 -
FreeRTOS学习(九)资源管理
文章目录1.资源管理概述1.1 必要性1.2 互斥机制2.资源管理方法2.1 临界区2.2 挂起调度器2.3 互斥量2.4 守护任务3.总结1.资源管理概述1.1 必要性 在多任务系统中,会存在一种潜在的风险。比如,当一个任务正在使用某个资源时,被另一个任务或中断抢占访问该资源,将造成数据损坏。可能存在类似风险的场景有以下几种:(1)访问外设比如 UART I2C SPI 这些常用的公共资源,存在多个任务共享的情况 举个例子,任务A通过串口向主机发送传感器数据,任务B抢占任务A发送命令请转载 2021-03-22 10:28:40 · 799 阅读 · 0 评论 -
FreeRTOS学习(八)内存管理
文章目录1.内存管理概述1.1 必要性1.2 内存碎片1.3 字节对齐2.内存管理方法2.1 heap_2 方法2.2 heap_4 方法1.内存管理概述1.1 必要性 在创建任务时,需要申请内存来存放任务控制块和任务堆栈,同样地,创建队列时也需要内存来存放队列结构体和队列存储区。在开发应用中,肯定要创建和删除一些任务或队列等,那么它们所需内存的申请和释放必须有一定的方法来管理。 在介绍内存管理方法之前,先来看看FreeRTOS提供的可用内存,在FreeRTOS的内存管理方法 heap_x.c中原创 2021-03-18 17:04:37 · 1101 阅读 · 0 评论 -
FreeRTOS学习(一)配置文件
文章目录1.配置文件1.1 配置文件概述1.2 配置文件内容1.配置文件1.1 配置文件概述 FreeRTOS 提供了一个配置文件FreeRTOSConfig.h用来对系统内核进行裁剪配置,这个头文件在Source源码文件中并没有,可以在Demo对应例程中找到。 FreeRTOSConfig.h主要包含以下几部分内容:(1)INCLUDE_开头的宏 这部分宏主要用来使能/失能对应的内核函数,如task相关函数。(2)config开头的宏 这部分宏主要用来定义内核的属性,使能/失能内核原创 2021-03-17 15:44:10 · 483 阅读 · 0 评论 -
FreeRTOS学习(七)中断配置与管理
文章目录1.中断配置1.1 中断概述1.2 优先级分组1.3 中断屏蔽寄存器1.4 中断配置宏2.临界区1.中断配置1.1 中断概述 中断是处理器的一个常见特性,由硬件产生,中断产生后CPU就会中断当前流程转去处理中断服务。Cortex-M内核的MCU还挺过来一个用于管理中断的嵌套向量中断控制器 NVIC,它支持多种中断和异常管理。 Cortex-M处理器提供了多个管理中断和异常的可编程寄存器,重点需要关注的是3个中断屏蔽寄存器:PRIMASK、FAULTMASK和BASEPRI。1.2 优先原创 2021-03-17 11:35:34 · 5647 阅读 · 0 评论 -
FreeRTOS学习(六)时间管理
文章目录1.延时函数1.1 vTaskDelay()1.2 vTaskDelayUntil()1.3 系统时钟节拍2.软件定时器2.1 定时器概述2.2 定时器 API1.延时函数 当任务需要调用延时函数延时时,任务会进入阻塞态,同时发生任务切换,指导延时完成,任务重回阻塞态。1.1 vTaskDelay()(1)相对延时 vTaskDelay延时函数实现的是相对延时,其主要特点是时间计算的节点是将调用 API 的时刻作为起点。void vTaskDelay( const TickType_原创 2021-03-16 16:48:18 · 1294 阅读 · 0 评论 -
FreeRTOS学习(五)队列与信号量
文章目录1.队列1.1 队列特性1.2 队列创建1.2.1 接口函数1.2.2 内存占用1.2.3 创建过程分析1.3 入队与出队1.3.1 队列项入队1.3.1 队列项出队2.信号量1.队列 FreeRTOS支持多任务操作,那么任务之间以及任务与中断之间肯定需要通讯与同步,因此,继任务相关内容学习之后,下一个重要的概念就是队列。1.1 队列特性 队列能够存储一定数目、大小固定的数据项目。因此创建队列时,需要指明数据的长度length和数据元素的大小 size。这里将队列类比成火车,长度leng原创 2021-03-15 15:53:35 · 2621 阅读 · 0 评论 -
FreeRTOS学习(四)任务调度与切换
文章目录1.SVC 和 PendSV1.1 SVC 中断1.2 PendSV 中断1.SVC 和 PendSV 在上一节中也提到了这两个中断的中断服务函数的功能,这里再详细介绍一下。1.1 SVC 中断 SVC是系统服务调用,由 SVC 指令触发调用。在 FreeRTOS 中用来在任务调度中开启第一个任务。触发指令:svc 01.2 PendSV 中断 与SVC相关的是PendSV中断,称为可悬起的系统调用。两者不同之处在于响转载 2021-03-15 10:31:05 · 6334 阅读 · 2 评论 -
FreeRTOS学习(三)任务管理
文章目录1.任务创建1.1 动态创建1.2 静态创建1.3 任务创建过程2.任务删除1.任务创建FreeRTOS 提供了多种任务创建的API,这里主要列举了动态创建和静态创建函数 API功能描述xTaskCreate()动态创建,堆栈由 FreeRTOS 动态分配xTaskCreateStatic()静态创建,堆栈由用户指定分配1.1 动态创建任务的创建一般都采用动态的方式,其API涉及的参数如下BaseType_t xTaskCreate( TaskFunct原创 2021-03-12 15:16:21 · 910 阅读 · 0 评论 -
FreeRTOS学习(二)任务基础
1.任务引入在嵌入式开发中,有两种常见的开发方式:前后台系统和嵌入式操作系统。1.1 前后台系统后台:一个无限循环,在循环中调用相关函数完成相应操作前台:就是中断,可以多级嵌套,处于处理一些实时性要求比较高的事件,比如按键的状态获取。这种编程方式的主要缺陷在于两方面(1)复杂度方面:无法实现复杂的系统(2)实时性方面:难以保证较高的实时性尤其是一些穿戴类产品,集成了多种传感器,还涉及蓝牙 BLE数据通讯等,系统复杂度高、实时性要求高 ,因此针对类似这种产品开发就需要引入实时操作系统。1.原创 2021-03-12 09:39:37 · 646 阅读 · 0 评论 -
嵌入式系统架构层次
1.嵌入式系统结构分层(1)硬件层(2)驱动层(3)操作系统层(4)应用层1.1 硬件层硬件平台是基础,增值还要靠软件。作为一名嵌入式软件工程师,应能够看懂硬件原理图,这一部分在这里提到过,可从以下三方面入手:- 芯片复位方式 - 硬件复位方式 - 软件复位方式- 电源树 - 开发板的电源输入 - 电源供电器件 - 5V 电压供电器件 ...原创 2019-10-16 09:17:46 · 9183 阅读 · 0 评论