FREERTOS指令测试的思考
采用freertos编程后,有必要增加指令测试的功能:
1、便于对于软件各个子模块或功能点进行测试。
2、便于对硬件各个功能点是否正常进行测试。
在裸机编程中,我们一般使用串口进行运行数据的打印,同时使用串口接收上位机的控制命令,这样做当然是有局限性的,一方面,如果功能复杂,资源有限,所以的串口都被占用,则无法使用串口进行测试命令的收发,另一方面,测试命令并不一定通过串口传输,也可以通过CAN USB等接口。由于在freertos中,各个功能是模块化的,常见的思路是通过消息队列或者信号量由测试入口发送测试命令给各个测试单元,例如:
1、使用xQueueSend从中断消息中发送到的FIFO中读出发送的控制命令
2、TASK1使用xQueueReceive读取消息队列
3、TASK2使用xQueueReceive读取消息队列
问题在于,使用xQueueReceive读取消息队列对于消息来说是一次性的,如果TASK1读取了,TASK2就无法读取,可能的结果是消息队列内的消息对TASK1没有用处但是被TASK1读取了;TASK2需要消息队列内的控制命令,但是读取到的消息队列内容却是空的。在FREERTOS中,还有另外一个消息队列读取方法xQueuePeek,该方法读取消息队列后,消息仍在队列中,不影响其他任务对消息队列中数据的订阅。
综上,一发多收应用场景下,消息队列的使用方法如下:
1、发送任务中,使用xQueueSend发送控制命令;为了防止消息队列的写满溢出或堵塞,在每次填充消息队列前,使用xQueueReset方法将消息队列清空。
2、TASK1使用xQueuePeek读取消息队列,如果读取到的控制命令是针对自身任务测试的,则执行。否则,只获取消息,不执行消息,也不影响当前的消息队列。
3、TASK2使用xQueuePeek读取消息队列,如果读取到的控制命令是针对自身任务测试的,则执行。否则,只获取消息,不执行消息,也不影响当前的消息队列。
当然,在使用消息队列前,不要忘记先要创建消息队列。
FREERTOS指令测试的思考的更多相关文章
- 关于html转换为pdf案例的一些测试与思考
由于工作所需,最近花时间研究了html转换为pdf的功能.html转换为pdf的关键技术是如何处理网页中复杂的css样式,通过在网上收集资料,发现目前html 转换为pdf的解决方案主要分为三类: 客 ...
- MinHook测试与分析(x86下 E8,E9,EB,CALL指令测试,且逆推测试微软热补丁)
依稀记得第一次接触Hook的概念是在周伟民先生的书中-><<多任务下的数据结构与算法>>,当时觉得Hook的本质就是拦截,就算到现在也是如此认为. 本篇文章是在x86下测 ...
- [原创]MinHook测试与分析(x64下 E9,EB,CALL指令测试,且逆推测试微软热补丁)
依稀记得第一次接触Hook的概念是在周伟民先生的书中-><<多任务下的数据结构与算法>>,当时觉得Hook很奇妙,有机会要学习到,正好近段日子找来了MiniHook,就一 ...
- 4-51单片机ESP8266学习-AT指令(测试TCP服务器--使用串口调试助手--不连接路由器)
上一篇连接 http://www.cnblogs.com/yangfengwu/p/8757513.html 源码链接:https://pan.baidu.com/s/1wT8KAOIzvkOXXN ...
- 移动onenet基础通信套件V1.08版本的AT指令测试
1. 本次测试版本V1.08,AT+MIPLCREATE,首先需要一个配置文件.该指令创建一个基础通信套件的实例 2. 看下CGFID=2的配置,这个连接类型,UDP是1还是0?用户名和密码是什么?哪 ...
- FreeRTOS中断测试
configMAX_SYSCALL_INTERRUPT_PRIORITY 高于此优先级的中断,不能被禁止 #ifdef __NVIC_PRIO_BITS #define configPRIO_BITS ...
- EC20指令测试
cat /dev/ttyUSB2 & echo -e "AT+CGMM\r\n" >/dev/ttyUSB2 //输出模块型号 echo -e "AT+ ...
- Ubuntu+Fedora进阶学习,指令迅速查询,Bug迅速查询(Ctrl+F)
There is some notes while I am learning Ubuntu Operate System! (Ask Ubuntu & Fedora) 1-- Hard li ...
- tst、cmp、bne、beq指令
1.tst:逻辑处理指令,用于把一个寄存器的内容和另一个寄存器的内容或立即数进行按位的与运算,并根据运算结果更新CPSR中条件标志位的值.当前运算结果为1,则Z=0:当前运算结果为0,则Z=1 cmp ...
- Http压力测试工具HttpTest4Net
HttpTest4Net是一款基于C#实现的和HTTP压力测试工具,通过工具可以简单地对HTTP服务进行一个压力测试.虽然VS.NET也集成了压力测试项目,但由于VS自身占用的资源导致了在配置不高的P ...
随机推荐
- Java API 之集合
1. 包装类 (基本类型中没有多少我们能够使用的方法和属性,为了便捷我们需要自己去写) 针对每一种基本类型提供了对应的类的形式 --- 包装类 byte short int long float ...
- 利用坦克PWA3快速为应用配置域名:以Gogs为例
全文概述 本文介绍了如何利用坦克PWA3平台快速为Gogs应用配置域名的过程.随着互联网技术的发展,自托管Git服务变得越来越受欢迎,其中Gogs凭借其轻量级和易于安装的特点受到众多开发者的青睐.为提 ...
- win10 linux子系统的一些想法
什么是linux子系统 具体的概念网上很多,作为个技术人简单粗暴来说就是微软脑子瓦特,突然爱上了linux, 可以在win10安装linux子系统 子系统不同于虚拟机,但是其优点是安装很快,对于新手和 ...
- 抽取网易云音乐热门评论:html+css+python+js 音乐与灵魂的碰撞
抽取网易云音乐热门评论:html+css+python+js 音乐与灵魂的碰撞 代码链接 不说废话,上代码!!! get.py # get.py import urllib.request impor ...
- 极客时间《Redis核心技术与实战》阅读笔记
极客时间<Redis核心技术与实战>阅读笔记 数据结构 为了实现从键到值的快速访问,Redis 使用了一个哈希表来保存所有键值对. 哈希桶中的元素保存的并不 ...
- CRISP-DM的应用与理解
本文分享自天翼云开发者社区<CRISP-DM的应用与理解>,作者:吴****嫄 CRISP-DM是一个数据挖掘项目规划的开放标准流程框架模型,主要分为业务理解.数据理解.数据准备.建模.评 ...
- Iceberg问题记录-数据湖问题记录跟进
一.问题追踪 问题 详细描述 提出问题时间 是否完成 计划完成时间 备注 了解Iceberg数据存储方式 了解元数据存储信息.数据组织方式.查询时处理流程等 20231013 是 20231019 ! ...
- Mac安装Charles抓包工具
一.下载安装 地址1:官网 下载地址: https://www.charlesproxy.com/download/ 激活信息 Registered Name: https://zhile.io Li ...
- dp 常见套路总结
dp 里存的东西值域不大的时候,考虑把状态中某一维和 dp 里存的东西交换,进行 dp. 连续段 dp 时,考虑把连续段化为对每个元素考虑接上一个元素. dp 里的值可能存在某个上界,超过这个值一定不 ...
- 一分钟搞定!CentOS 7.9上用Ansible自动化部署SQL Server 2019
一分钟搞定!CentOS 7.9上用Ansible自动化部署SQL Server 2019 不熟悉整个流程的朋友可以先看之前的部署文章,手动部署一遍 一步步教你在CentOS 7.9上安装SQL Se ...