31、QF实时框架:关键特性与实现解析

QF实时框架关键特性与实现解析

QF实时框架:关键特性与实现解析

1. QF源文件设计

QF源文件通常每个文件仅包含一个函数或一个数据结构定义。这种设计旨在将QF部署为一个细粒度的库,可与应用程序进行静态链接。细粒度意味着QF库由多个小型、松耦合的模块(目标文件)组成,而非一个包含所有功能的单一模块。

例如,单独的模块 qa_lifo.c 实现了 QActive_postLIFO() 函数。若应用程序从未调用此函数,链接器将不会引入 qa_lifo.obj 模块。这种策略将在链接时自动消除未使用代码的“繁重工作”交给了链接器,而非让应用程序程序员在编译时为每个应用程序配置QF代码。

2. QF中的临界区

与其他系统级软件一样,QF必须保护某些指令序列不被抢占,以确保线程安全操作。必须不可分割执行的代码段称为临界区。

在嵌入式系统环境中,QF使用最简单、最有效的方法来保护代码段不受干扰,即在进入临界区时锁定中断,在退出临界区时解锁中断。在不允许锁定中断的系统中,QF可以采用底层操作系统支持的其他机制,如互斥锁。

需要注意的是,在临界区花费的最长时间会直接影响系统对外部事件的响应能力(中断延迟)。所有QF临界区都经过精心设计,尽可能缩短,与任何商业RTOS中的临界区处于同一数量级。当然,临界区的长度取决于处理器架构和编译器生成的代码质量。

为了隐藏特定处理器、编译器和操作系统可用的实际临界区实现方法,QF平台抽象层包含两个宏 QF_INT_LOCK() QF_INT_UNLOCK()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值