tag 标签: create/delete

相关博文
  • 热度 16
    2012-1-12 21:33
    4446 次阅读|
    0 个评论
    DSP/BIOS:Cannot create/delete a Clock from Hwi or Swi thread 上篇文章提到Task_sleep睡死的问题解决后,添加了系统心跳clock,所有API用到ticks的都可以正常使用了. 但是调试串口的时候还是遇到其他问题了: ti.sysbios.knl.Clock: line 432: assertion failure: A_badThreadType: Cannot create/delete a Clock from Hwi or Swi thread. xdc.runtime.Error.raise: terminating execution 调试进入到Clock模块的某个函数(要么是创建函数要么是析构函数)时候,asser会判断当前调用线程是否是Hw中断或者软件中断,如果是 则产生异常,最后出现以上错误.但是我想,我的串口中断函数怎么和Clock模块发生关系了?忽然想起文档中的一句话:如果系统心跳tick没有的话 ,所有用到tick的API出现除0和forever外的值,都会有问题. 回头检查了下串口中断的函数,里面用到了mailbox,出现了一个10tick的超时! Mailbox_post(SCI_Msg_MailBox, (Ptr)Buffer, 10); 修改后如下: Mailbox_post(SCI_Msg_MailBox, (Ptr)Buffer, BIOS_NO_WAIT); 中断中不能出现无限等待这是一定的,但是如果一些信号量或者邮箱等出现了要用到tick来计量的超时值的时候, DSP/BIOS的clock模块在每一个需要超时值的地方动态建立一个clock,然后start计时.....问题这里是中断啊.