FreeRTOS学习--2

本文介绍了FreeRTOS中固定优先级抢占式调度的基本原理。每个任务都有一个固定的优先级,并且只能由任务自身修改。调度器从所有就绪态的任务中挑选最高优先级的任务执行,若运行态任务优先级较低,则会被更高优先级的任务抢占。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.10调度算法简述

本章的示例程序已经演示了 FreeRTOS 在什么时候以及以什么方式选择一个什么样的任务来执行。

  • 每个任务都赋予了一个优先级。
  • 每个任务都可以存在于一个或多个状态。
  • 在任何时候都只有一个任务可以处于运行状态。

调度器总是在所有处于就绪态的任务中选择具有最高优先级的任务来执行。
这种类型的调度方案被称为”固定优先级抢占式调度”。所谓”固定优先级”是指每个任务都被赋予了一个优先级,这个优先级不能被内核本身改变(只能被任务修改)。 ”抢占式”是指当任务进入就绪态或是优先级被改变时,如果处于运行态的任务优先级更低,则该任务总是抢占当前运行的任务。

### 关于 FreeRTOS-Plus-TCP 的使用指南 #### 配置 FreeRTOS-Plus-TCP 是一个专为嵌入式系统设计的 TCP/IP 协议栈,适用于资源受限的设备。为了成功配置该协议栈,需完成以下几个方面的设置工作: 1. **硬件初始化**:确保目标平台上的网络接口已正确初始化,并且驱动程序支持必要的功能(如发送和接收数据包)。这一步骤通常涉及调用特定函数来启动网卡以及分配内存缓冲区用于存储待处理的数据帧[^1]。 2. **IP 地址及相关参数设定**:通过 API 函数 `vIPv4AddressSet` 或者其他方式指定静态 IP 地址、子网掩码、默认网关等基本信息。如果希望动态获取这些值,则可以启用 DHCP 客户端服务[^3]。 3. **堆栈大小调整**:根据实际应用场景需求合理规划任务优先级及其对应的堆栈尺寸。过小可能导致溢出错误而过大则浪费有限资源[^2]。 4. **中断向量表映射**:对于某些架构而言还需要手动修改中断向量表以便正确响应来自物理层事件的通知信号。 --- #### 示例代码 下面给出一段简单的服务器监听循环作为参考实例之一: ```c #include "FreeRTOS.h" #include "task.h" #include "socket.h" void vSimpleServerTask(void *pvParameters){ struct freertos_socket_t* pxSocket; /* 创建套接字 */ if( (pxSocket = socket(FREERTOS_AF_INET, FREERTOS_SOCK_STREAM, FREERTOS_IPPROTO_TCP)) != NULL ){ /* 绑定到本地地址 */ struct freertos_sockaddr bindAddr; memset(&bindAddr,0,sizeof(bindAddr)); bindAddr.sin_family=FREERTOS_AF_INET; bindAddr.sin_port=htons((uint16_t)80); int iResult = bind(pxSocket,(struct sockaddr*)&bindAddr,sizeof(bindAddr)); if(iResult==pdPASS){ listen(pxSocket,BACKLOG_QUEUE_LENGTH); while(TRUE){ struct freertos_socket_t* newClientConnection; /* 接受连接请求 */ newClientConnection=accept(pxSocket,NULL,PASSIVE_BACKLOG_TIME_MS); if(newClientConnection!=NULL){ // 处理客户端交互逻辑... closesocket(newClientConnection); } } } closesocket(pxSocket); } } ``` 此代码展示了如何创建一个基本的服务端应用程序框架,在其中等待客户建立连接之后再进一步执行具体业务流程[^3]。 --- #### 相关文档下载链接 官方提供了详尽的技术手册帮助开发者深入了解产品特性及最佳实践方法论。可以从以下位置访问更多资料: - GitHub 主页: [https://github.com/FreeRTOS/FreeRTOS](https://github.com/FreeRTOS/FreeRTOS)[^1] - GitCode 存储库: [https://gitcode.com/gh_mirrors/fr/FreeRTOS-Plus-TCP](https://gitcode.com/gh_mirrors/fr/FreeRTOS-Plus-TCP) 另外还有专门针对初学者编写的入门教程可供查阅学习---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值