Other Parts Discussed in Thread:SYSBIOS
用CCS创建了一个简单的SYS/BIOS测试程序,使用Timer64创建定时器。先调用Timer_getNumTimers,一共有16个可用定时器,再通过Timer_getStatus查询所有定时器,只有id为2,3的定时器状态为FREE,其它定时器状态都是INUSE,为什么只有2个定时器可用?查看定时器寄存器,这些显示在用的定时器应该也没有人使用。请教一下,是什么地方设置不正确?
Nancy Wang:
参考以下帖子看一下是否有帮助。
e2e.ti.com/…/266171
,
user6488365:
你好,按照文章中的建议试过了,仍然不行,CFG配置:
ti_sysbios_timers_timer64_Timer.defaultHalf = ti_sysbios_timers_timer64_Timer.Half_DEFAULT;ti_sysbios_timers_timer64_Timer.timerSettings[4].ownerCoreId = 0;Clock.timerId = 4;
编译时出错提示:
Description Resource Path Location Typeti.sysbios.timers.timer64.Timer.Instance#0 : Timer 4 is already in use or reserved (check availMask/availMaskHigh)。
另外这个帖子中讲的“Timers 0-3 are local timers and Timers 4-7 are shared”,我在《sprugv5a.pdf》(KeyStone Architecture Timer64p)文档里没有找到,这是哪个文档里的描述?什么是本地定时器?
,
Nancy Wang:
从 bios_6_75_02_00/docs/cdoc/index.html给出的timer mapping table来看,timer4~7是不支持的。
,
user6488365:
它这里应该不是这个意思,这里只是表示4到7定时器不能通过统一地址直接访问,8个定时器是肯定的。
下面这段话也讲了0、1定时器分别是CORE0和CORE1的专属定时器,但你给的链接说2,3是本地定器就不知道是什么意思了。
,
skysteed:
你好 我现在也遇到这个问题了 我用的6657
sysbios程序在核0 cfg配置文件中clock用的是timer0 如果clock用是timer1 4 5 6 7就会编译提示Timer x is already in use or reserved (check availMask)
使用timer2 timer3可以产生定时中断
当我把核0的程序移植到核1 原本以为timer1专用在核1 结果timer1还是用不了
我的程序中有如下这样的的中断映射 如果cfg配置文件中clock选用timer0,timer2 timer3可以产生定时中断 但如下映射的中断8进不了中断服务
当我把cfg配置文件中clock选用timer2 只保留一个timer3 这时timer3可以产生定时中断 中断8可以进中断服务
情况就是这样!
感觉sysbios中对timer有什么限制!!!不能全用!!! 有没有可能修改这种限制 在哪里修改???
CpIntc_mapSysIntToHostInt(0, SYS_INT_MCBSP0_XINT, 28);CpIntc_dispatchPlug(SYS_INT_MCBSP0_XINT, &McBSP0ISR_TX, SYS_INT_MCBSP0_XINT, TRUE);CpIntc_enableHostInt(0, 8);eventId = CpIntc_getEventId(28);Hwi_Params_init(¶ms);params.eventId = eventId;params.arg = 28;params.enableInt = TRUE;Hwi_create(8, &CpIntc_dispatch, ¶ms, &eb);
,
Nancy Wang:
我已经咨询了相关工程师,正在等待回复。
,
user6488365:
我自己尝试了一下,8个定时器都是可以用的。自己写了一个中断程序,Timer4到Timer7都可以正常工作。
我猜想Timer0到Timer3,因为是Primary中断,实现起来方便,所以SYS/BIOS支持。TI的同事能否给个官方的说法?