加载中…
  
博文
标签:

it

分类: 日常开发记录
    近日开发NRF52832的项目时,发现FreeRTOS使用Tickless模式存在一个隐含问题,即在线程中调用vTaskDelay时候存在一定概率延时到达时也不能从其中返回。

    具体调试过程如下:

    该问题直接体现:
    NRF52832通过串口打印调试信息,当调试信息输出频率很高,运行一段时间之后会出现停止打印的情况。但是程序总体运行没有其他异常。
    
    对该问题进行如下分析和调试:
    (1)怀疑串口模块出现溢出之类错误:
    通过在各种报错回调位置设置断点,并未在出现异常时候停下。

    (2)怀疑专门用于打印错误信息的Debug_out线程出现逻辑问题导致死循环,或者卡死在某个等待操作系统事件位置:
    出现异常后,在线程各部分尝试打断点,皆未停下,且没有继续调用串口发送函数。可认定并未在线程内发生死循环,并非串口发送引起的Bug,卡死或者挂起位置应该在所调用函数内。

在运行RTOS的嵌入式系统中,获取每个线程的CPU使用率,栈空间使用情况,堆空间使用情况对于配置其基本参数和进行各种优化调试是至关重要的。FreeRTOS提供了相关的接口,我们只需稍加改动即可很方便将其用起来。
要开启相关功能,首先freertos_config.h里面,把下面这些宏开起来。
此外还要提供两个回调函数,先这里把函数名加到宏定义里面去。
http://s11/mw690/002VF2gAzy76fJB0H229a&690
要提供的俩函数用来做时间测定的,这个在计算线程运行时间,CPU使用率时是必须的。原理就是任务切入和切出时候记录时间戳,由此即可得到每次线程运行时间并用于计算了。这里我们就
开发时,除调试器以外,也经常使用printf结合串口来输出文本方式的数据或者消息。这种方式蛋疼之处在于:
1、printf使用时栈的占用会迅速升高。尤其是这种小型嵌入式系统,每个任务的栈空间都分配的比较小,如果各种用,很快内存就不够了,一方面,如果出现栈溢出,在这类没有MMU的处理器上找到源头很费事,其不会立刻出错,覆盖掉了其他任务的数据才导致出错,“运气好”的话,可以潜伏甚至好几个版本不被发现。
2、printf使用时会额外增加处理时间,导致程序运行情况和发生一定变化,尤其是如果在中断里面影响最大。
3、printf存在重入问题,主要在于最终调用串口输出那块。即使使用互斥量保护,想想如果在线程用着一半时候进了中断又调用了printf,会咋样?
因此我专门实现一个模块来完成这个任务,需要输出消息的线程或者中断程序通过队列将内容发送至调试模块,由其统一转换和输出,酱紫只需
ANT相对简单,先来ANT的。
首先,要想能让ANT+的表头能接收到,先得把这个网络Key给弄过来....ANT官网有的。
http://s6/mw690/002VF2gAzy76a7Vx22Ve5&690

接下来ANT的初始化。
1、设置ANT的事件回调函数,就是on_ant_evt了,ANT的事件几乎就一个RX和TX需要处理,非常简单后面详细说
2、调下ant_stack_static_config()让他自己去配置各种啥buffer size之类的东东
3、调下ant_plus_key_set()把刚刚说的那个key设置好
然后完事了,接下来可以开启通道干活了
下面这个就是通道配置就是功率计传感器的配置:
使用芯片的通道0(最多
标签:

杂谈

分类: 电子技术小科普
这几年,运动自行车玩家激增,各种相关的电子传感器如功率计,心率计,速度踏频传感器,电变等等以及各种高端表头成为每个车友的标配,ANT+和蓝牙4.0这些本来仅会从IT人士口中说出的词汇,也变成了车友,跑友们的口头禅。然而,他们对于普通大众而言依然只是最熟悉的陌生人,到底有什么特点,选支持哪款的好,安装使用过程中有些什么注意事项,往往只是道听途说。车友们曾经也是捣鼓机械零件出身的,自然对这类神奇事物有着一探究竟的好奇心。因此我就趁此机会,以一个专业开发者身份,从车友们最关心的几个方面入手,从技术角度来对这两个协议进行一番分析,满足下大家的好奇心,也让大家更科学正确的用好相关的传感器。

本文主要还是面向普通大众的,我尽量以最通俗容易理解方式来介绍其中专业性较强的部分,不过依旧可能比较专业难懂。所以老规矩,先上Summary,后上正文,有兴趣小伙伴可以细致看看,以后对着非搞这些技术的还是很可以装装B露两手的http://www/uc/myshow/blog/misc/gif/E___7399ZH00SIGG.gif

Summary
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有