Part Number:CC2642ROther Parts Discussed in Thread:SYSCONFIG
基于CCS10.3 ,sdk_5_10_00_48,simple_peripheral_oad_offchip_CC26X2R1_LAUNCHXL_tirtos_ccs
程序运行了一晚上后出现死机现象,复位后可正常运行。一般此现象会在运行6-10小时以上才会出现,复现比较麻烦。昨晚运行的时间约为8.9小时,可以看到任务轮询时间卡在第几秒,在此之前一直有执行外部中断计数,硬件定器计数,还保存了外部flash数据(5分钟存储一次数据),想知道如果是程序跑飞,该从哪里查找?一般跑飞是否可以进入某些函数,进行打印信息?
Kevin Qiu1:
使用的是自制板还是launchpad,程序中有几个任务?
死机可能是任务之间有冲突,也有可能是内存溢出
参考这里抓取一些日志信息看一下https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/939054/faq-cc2642r-tips-and-tricks-to-use-ble_log_int_-functionalities?tisearch=e2e-sitesearch&keymatch=faq%3Atrue
,
xiaoxiong:
三个,一个默认的系统任务SimplePeripheral,一个是外部flash任务,一个硬件定时任务发布信号量的任务。问题依然没找出来,有一个板子运行了约69个小时,两天多,系统任务SimplePeripheral死机了,此时该任务下的任务不运行了,包括灯不闪了,但是此时搜索蓝牙发现依然在广播,我用蓝牙调试助手连接了一下,发现可以连接上,可以读,后面断开蓝牙后便搜索不到了。但是还没有完全死机,此时我又按了下按键,发现外部中断依然有部分效果。
这种不完全死机应该从哪里下手查找问题呢?
,
Kevin Qiu1:
不好判断是什么引起的,内存溢出或者任务调度有问题都有可能
上面让你抓取log信息,抓取了吗,显示什么信息
,
xiaoxiong:
没有,现在尝试,是否要一直开启仿真模式?等待异常到来时再查看
gBleLogBuffer的数值吗?异常到来时需要先暂停仿真吗
,
xiaoxiong:
大概抓取到这些信息,这次运行了约15小时
,
xiaoxiong:
,
Kevin Qiu1:
xiaoxiong 说:是否要一直开启仿真模式?
不需要一直开启仿真模式,它会保存在flash中,之后读取就可以了,上面的log信息看起来没有有用的信息,一般会触发一些事件
实际测试可以减小连接间隔,这样可以减小复现问题所需要的时间
从最后一张图来看,唤醒有一些问题,关于唤醒、休眠你修改了哪些部分
你的板子是自己制作的还是TI的launchpad?在launchpad上能否复现这个问题
,
xiaoxiong:
自制的板,手上没有launchpad。
没有改动过唤醒和休眠,默认使用POWER_SAVING。先前参考零项目,照着改动过相关的连接间隔,基本都为很小的
,
Kevin Qiu1:
看起来硬件可能也有问题,按照这里排查一下:https://www.ti.com.cn/cn/lit/an/swra640e/swra640e.pdf
最好是用launchpad验证一下,这样有助于快速排查问题
,
xiaoxiong:
如果找不到合适的解决办法,是否可以忽略此部分的内容?即注释掉这部分断言
,
Kevin Qiu1:
注释掉只是看不见断言错误了,不能解决死机的问题
,
Kevin Qiu1:
注释掉只是看不见断言错误了,不能解决死机的问题
,
xiaoxiong:
有一台跑了四天才跑飞,想了一下,休眠和睡眠的,似乎没改什么,只有在初始化的时候,原本main函数执行的是Board_initGeneral();,里面有管脚初始化和flash睡眠的函数,由于flash管脚更改了,且这部分函数不会自动生成新的管脚,所以我没有采用这部分函数,这里的main函数只执行PIN_init(BoardGpioInitTable);了,对比一下,缺少Power_init();,Board_shutDownExtFlash();,Board_initHook();这三个,是否有影响呢,如果有影响,现在能做的便是添加Power_init();,Board_initHook();函数,Flash这个函数难道要自己改一份?管脚不一样
,
Kevin Qiu1:
现在不确定是什么引起的,从上面的结果来看,可能是硬件也可能是软件
不好针对性的修改,只能修改着看
xiaoxiong 说:Flash这个函数难道要自己改一份?管脚不一样
如果用到了片外flash,是需要修改一下,管脚不一样则需要重新修改映射
上面说过,用launchpad有助于快速定位问题所在
,
xiaoxiong:
感谢回复!
FLASH重新映射我了解,但是重新映射后,Board_shutDownExtFlash()函数并不会按照管脚去修改,不知道您是否有了解过这部分代码,这部分是固定的代码,管脚使用的是直接调用IOID_20,并不会随着配置文件syscfg修改,且这个函数的生成在ti_drivers_config.c,是派生文件
,
Kevin Qiu1:
这部分是固化了,不能通过sysconfig动态修改,
在SDK安装目录\simplelink_cc13x2_26x2_sdk_5_20_00_52\source\ti\drivers\.meta\templates
找到BoardCC26XX.c.xdt文件,打开后查找IOID_20将其全部替换为自定义引脚(如IOID_15)
改完后保存,然后rebuild工程就可以替换成功
,
xiaoxiong:
好的,感谢。有一个相关的论坛https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/651951/cc2640r2f-multirole-satck-4-2-and-stack-5-0-problems/2407554#2407554也是有这种偶发性问题,不过看到最后似乎跟我的不太一样
,
Kevin Qiu1:
是和你的不太一样,如果没有launchpad,只能慢慢试了,逐个排除