使用 FreeRTOS 时使用 GPIO 监控 CPU 负载的正确方法?



总目录链接==>> AutoSAR入门和实战系列总目录

总目录链接==>> AutoSAR BSW高阶配置系列总目录

文章目录

我想切换一些 GPIO 以监控 CPU 活动和 FreeRTOS 上下文。更具体地说,我想:

在 CPU 休眠时让 GPIO 处于逻辑低状态,在 CPU 运行时(任务、中断中)让 GPIO 处于逻辑状态高,
当 CPU 在工作时,GPIO 处于逻辑状态高,当 CPU 不工作时,GPIO 处于逻辑状态低
,通过重新定义 traceTASK_SWITCHED_OUT 和 traceTASK_SWITCHED_IN 来监控 FreeRTOS 任务活动;

这是我的 traceTASK_SWITCHED_OUT 和 traceTASK_SWITCHED_IN 宏(25 是我用于空闲任务的 GPIO):

#ifndef traceTASK_SWITCHED_OUT
/* Called before a task has been selected to run.  pxCurrentTCB holds a pointer
to the task control block of the task being switched out. */
#define traceTASK_SWITCHED_OUT() if(xTaskGetIdleTaskHandle() == pxCurrentTCB)  \
	{ nrf_gpio_pin_clear(25); } \
	else { nrf_gpio_pin_clear((int)pxCurrentTCB->pxTaskTag ); }
#endif

#ifndef traceTASK_SWITCHED_IN
/* Called after a task has been selected to run.  pxCurrentTCB holds a pointer
to the task control block of the selected task. */
#define traceTASK_SWITCHED_IN() if(xTaskGetIdleTaskHandle() == pxCurrentTCB)  \
	{ nrf_gpio_pin_set(25); } \
	else { nrf_gpio_pin_set((int)pxCurrentTCB->pxTaskTag ); }
#endif
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
FreeRTOS是一个可裁剪的小型RTOS系统,具有以下特点:支持抢占式、合作式和间片调度;提供低功耗的Tickless模式;组件可以选择动态或静态RAM;支持MPU单元;系统简单、小巧、易用,内核占用空间较小;具有高可移植性,主要使用C语言编写;提供高效的软件定器、跟踪执行功能和堆栈溢出检测功能;任务数量和优先级没有限制。[2] 选择FreeRTOS的原因有多个:首先,FreeRTOS是免费的,对于学习RTOS操作系统来说是首选;其次,许多半导体厂商的产品SDK使用FreeRTOS作为操作系统;此外,FreeRTOS的文件数量较少,使用简单;还有SafeRTOS是基于FreeRTOS的,经过安全认证的RTOS,增加了对FreeRTOS安全性的信心;最后,FreeRTOS有大量的开发者使用,并且保持着高速增长趋势。[2] 关于FreeRTOS的内核代码,它具有完整的文档,可以在FreeRTOS官方网站上找到所有需要的资料。代码遵循MISRA代码规则,并支持各种编译器。虽然FreeRTOS的源码中没有引入C99和C11的新特性,但是有一个例外,源码中使用了C99标准引入的头文件stdint.h。[1]所以,如果你想研究FreeRTOS的内核源码,你可以从官方网站获取完整的文档和源码,并仔细研究其中涉及的列表和列表项的内容,这在FreeRTOS中起着重要的作用,类似于人的神经系统,管理整个系统的运行。列表是表示双向链表的数据结构,而列表项则是链表中的每一项。了解这些数据结构和操作函数将有助于你更好地理解FreeRTOS的内核代码。[3]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

糖果Autosar

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

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

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

打赏作者

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

抵扣说明:

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

余额充值