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.

[参考译文] RTOS/AM5728:来自 DSP 的计时器控制

Guru**** 2587365 points
Other Parts Discussed in Thread: SYSBIOS

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/634017/rtos-am5728-timer-control-from-dsp

器件型号:AM5728
Thread 中讨论的其他器件:SYSBIOS

工具/软件:TI-RTOS

您好!

我是 TaekSeung Lee。

我正在评估 EvmAm57xx 上的测试代码。(A15上的 Linux、DSP1上的 RTOS、其他内核(DSP2、IPU1、2……) 未使用)

在我的应用中、DSP1需要2个硬件计时器。 第一个用于 RTOS 的1毫秒 Clock_tick ()、第二个用于 FPGA 138uSec 中断。

我的理解是 GPTimer 5和6被分配给 AM57x 系列中的 DSP。

在 Linux 端、编辑"am57xx-beagle-x15-common.dtsi"以禁用 DSP2、并将 timer6分配给 DSP1。


dsp1{.dsp1}(&D)
状态="正常";
Memory-region =<&dsp1_CMA_pool>;
mbox =<&mailbox5 &mbox_dsp1_ipc3x>;
/*timers =<&timer5>;*/
定时器=<&timer5>、<&timer6>;
安全装置定时器=<&timer10>;
};

//注释掉

/*dsp2{
状态="正常";
STATUS ="禁用";
Memory-region =<&dsp2_CMA_pool>;
mbox =<&mailbox6 &mbox_dsp2_ipc3x>;
计时器=<&timer6>;
安全装置定时器=<&timer13>;
};*/

在 RTOS 上、创建两个计时器。  

Timer_Params_init (&timerParams);
timerParams.period = 138;
timerParams.periodType = Timer_PeriodType_micros;
timerParams.startMode = Timer_StartMode_user;
timerParams.arg = 1;
myTimer = Timer_create (Timer_any、myIsr、&timerParams、&EB);
if (myTimer==空)

System_abort ("计时器创建失败");

创建成功。 定时器5 (ID 4)

但第二个计时器失败了。

Timer_Params_init (&timerParams);
timerParams.period = 1000;
timerParams.periodType = Timer_PeriodType_micros;
timerParams.arg = 2;
系统定时器= Timer_create (Timer_any、myTimerTick、&timerParams、&EB);
if (系统定时器==空)

System_abort ("计时器创建失败");

跟踪日志:

CAT /sys/kernel/debug/remoteproc/remoteproc0/trace0
[0.000]看门狗已启用:TimerBase = 0x48086000频率= 0
[0.000]在0x95000000处提供19个资源条目

[0.000][t=0x0020b256] ti.sysbios.family.c64p.Hwi:错误:第194行:e_alreadyDefined:Hwi 已定义:INTR# 15
[0.000] ti.sysbios.family.c64p.Hwi:第194行:e_alreadyDefined:Hwi 已定义:INTR# 15

谁使用了 intr 15 (timer 6)? 我可以在哪里配置中断?

我阅读了以下主题、但没有帮助。

谢谢你。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    RTOS 团队已收到通知。 他们将在这里作出回应。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    链接: software-dl.ti.com/.../TimerTables.html

    9GPTimer100x48086000157219200000

    timer10使用中断#15、似乎已经使用"启用看门狗:TimerBase = 0x48086000 Freq = 0"。 您可以进行双重检查吗?

    此致、Eric
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢、Eric。
    我看到、我使用 intNum 8将"*。cfg"文件编辑为计时器6 (id 5)。

    VAR 计时器= xdc.useModule('ti.sysbios.timers.dmtimer.Timer');
    timer.timerSettings[5].intNum = 8;

    可以了。

    还有另一个问题。
    在哪里可以检查当前使用的 DSP 中断矢量(Hwi)表?
    例如、
    IRQ 0:?
    IRQ 1:?
    (笑声)
    IRQ 8:定时器6
    (笑声)
    IRQ 14:定时器5
    IRQ 15:定时器10

    此致、TeakSeung Lee
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    您是否在 dtsi 文件中看到这些中断矢量的用法?

    此致、Eric
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    从 Linux DTSI 文件中、DSP1分配了2个计时器(5和10)。 DSP2分配了另外2个计时器(6和11)。 我与 Linux 团队进行了检查、但 Linux 中未配置中断编号。

    因此、中断编号由 SYSBIOS 根据我之前发布的链接配置、仅使用中断编号14和15。 您可以使用其他、它们应该未使用。

    此致、Eric