Part Number:TDA4VMOther Parts Discussed in Thread:SYSBIOS
问题描述:
TDA4的R5工程中需要用到Timerk定时器,参考了\ti-processor-sdk-rtos-j721e-evm-07_03_00_07\bios_6_83_02_07\packages\ti\sysbios\timers\gptimer\Timer.c中的定时器初始化和配置程序,但是在编译过程中
遇到了以下问题
因此想请问下两个问题:
问题1:Timer.c文件中的程序是否可以支持R5,R5的sysbios工程中是否可以直接调用?
问题2:如果可以支持的话,那么这个未定义的错误需要去链接哪个目录下的哪一个.lib库呢?
cfg配置文件
makefile
Cherry Zhou:
您好我们已收到您的问题并升级到英文论坛寻求帮助,链接如下,如有答复将尽快回复您。谢谢!
e2e.ti.com/…/tda4vm-r5-issue
,
Cherry Zhou:
您好,
能否提供下您使用的cfg 和 makefile?
,
hangtai wang:
cfg和makefile截图我添加到帖子下方了,这里放不了截图,您看上面吧
,
Cherry Zhou:
好的我们跟进给工程师了,如您需要插入图片,可以在回复框中选择“插入”-“图像/视频/文件”-然后选择您需要上传的图片进行上传即可。
,
Cherry Zhou:
您好,
看起来似乎不支持 GP 定时器模块。请参阅以下帖子:https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1045917/am5728-why-dm-timer-and-not-gp-timer-in-ccs-for-am572x?tisearch=e2e-sitesearch&keymatch=gp%2520timer%2520am57xx#
出于所有目的,我们都使用 dmTimer 本身。在您提供的 cfg 文件中,gp 计时器模块也不存在。请问具体是为什么使用 GPTimer呢?有没有试过使用 DMTimer 的 API?
,
hangtai wang:
您好,使用GPT的原因是因为在芯片的介绍的框图中发现了main域有20个GPT,所以想找GPT的示例,那么要使用DMT定时器的话,TI有没有提供有关的demo程序可以参考呢,如果有的话,请提示下目录是在哪里,包括带系统的sysbios版本,和不带系统的CSL版本
,
Cherry Zhou:
好的我们跟进给工程师了哈。
,
Cherry Zhou:
您好,
从系统 BIOS 的角度来看,您可以使用 DMTimers 并将其传递为 GP 计时器的实例。该名称已从以前的平台转发,您可以将 DMTimer 用于所有目的。
您可以参阅<pdk_Install_Path>\packages\ti\cSL\test\dmTimerUt 中的 CSL dm 计时器示例。
,
hangtai wang:
您好,我按照<pdk_Install_Path>\packages\ti\cSL\test\dmTimerUt\dmTimer_funcTest.c中的测试进行如下测试,首先调用csldmTimer_funcTest()函数,然后发现无法进入中断,并且配置过程中并未出现配置失败的情况,测试是在并未对其进行修改,唯一修改的地方是在csldmTimer_funcTest()中加入了cslApp_initBoard()函数,以及对#define TEST_TIMER_BASE_ADDR (CSL_TIMER12_CFG_BASE)和#define TEST_TIMER_INT_NUM (CSLR_R5FSS1_CORE1_INTR_TIMER12_INTR_PEND_0) 两个宏定义进行了如此修改,因为我的工程是MCU2_1,因此如此修改。尝试过换成其他的Timer也是无法进入中断。具体修改部分程序如下
想请问下,我这样修改是否可以,或者用于MCU2_1的工程的话,我这样的配置是否有问题,或者需要修改哪些地方才可以使用MCU2_1的工程
,
hangtai wang:
您好,对于系统BIOS的dmTimer接口,我按照下图所示的接口进行Timer_create,发现创建总是失败,返回NULL,请问这个是因为什么原因呢,使用的接口截图如下
代码截图如下
,
Cherry Zhou:
我们一起反馈给工程师了,您也可以多多关注英文论坛的相关答复:
e2e.ti.com/…/tda4vm-r5-issue
,
hangtai wang:
您好,那个系统BIOS的dmTimer接口创建定时器失败的问题找到了,是因为没有Error_init初始化eb,但是那个Timer_create接口,第一个参数Timer id,当id为Timer_ANY的时候是可以创建成功的,但是当输入具体的id时候总是创建失败,测试了id为0,12,22的情况,均创建失败
还有一个关于TRM手册的问题,在定时器章节中,TRM手册中的某幅框图中,对于定时器的中断号的描述与PDK中的头文件中的定义貌似是冲突的。具体位置在下图截图中
手册中对于定时器0的中断号239
cslr_intr_r5fss1_introuter0.h头文件中对于定时器0的中断号为240
,
Cherry Zhou:
hangtai wang 说:想请问下,我这样修改是否可以,或者用于MCU2_1的工程的话,我这样的配置是否有问题,或者需要修改哪些地方才可以使用MCU2_1的工程
上述更改对于 MCU2_1来说应该是可以的。可能导致此问题的一个原因是,MCU2_1 Build_MCU 宏可能正在被定义。如果是这个问题的话,您的基址和中断号将被覆盖。根据您的图片来看,您可以尝试在第1399行注释掉完整的#if defined 部分。
其他问题我们跟进给工程师看下哈。
,
hangtai wang:
您好,问题目前已经解决,包括sysbios以及csl的测试程序,具体原因为定时器ID与实际的硬件定时器ID并不一定是一致的,需要查看dmTimer API参考文档中的定时器映射表,并且,如果使用的是sysbios的接口的话,还需要在cfg文件中单独定义好需要使用的定时器地址以及中断号,其中Timer ID参考的便是此映射关系,cfg文件以及Timer映射表下图所示:
,
Cherry Zhou:
好的您的问题解决了就好,如您之后还有其他问题欢迎您随时来论坛参与讨论!