This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

关于C6657 timer问题



你好,我的目的是测试一段DDR的读写时间,但是看了例程的timer程序,有些疑问

这里tmrcfg.period是设置timer的中断周期吗,如果是这个周期是咋算的,clock_period_ms是1ms所以中断周期就是0.5ms吗?timer的输入是六分之一dsp核时钟,为啥除以6000?另外我也没有看到中断处理程序的注册啊?

还有一个问题,系统有TSCL和TSCH时间戳寄存器,他们和timer有啥关系,如果完成我的目的,我先置这两个寄存器为0,然后ddr读写完成,在读出两个寄存器的值,是不是可以?

新手刚学习c6657,问题多多,希望得到您的解答,谢谢!

  • period=cnt*(1/(core_speed_HZ/6))) =>cnt=period*cpu_speed_HZ/6=period*10^3*cpu_speed_HZ/6000=period_ms*cpu_speed_HZ/6000

    中断函数注册在timer_vectors.asm中配置中断矢量表。

    寄存器TSC单位是cpu clk,如cpu 1GHZ,则每累加1对应计时增加1ns。可以通过都TSC寄存器求差获取某一段代码的执行时间。

  • 你好,对于那个时间戳寄存器TSC,我想问这个对于C6657,是两个核共用这一个吗,还是一个核一个?

    如果我想用它测试时间,那么可不可以核A设置开始,通过中断的方式通知另一个核B,然后核B读取寄存器来算时间?

    谢谢!

  • TSC每个core 一个,没有全局的time stamp,你可以单独测试core A和Core B处理时间,把两个时间加起来就可以了,中断带来的开销很小。

    还有就是利用通用的timer定时器,core a和core b分别记录对应的timer值,计算增量即可,但是这个timer的精度是6个dsp的clock,必用TSCL要低。