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.

tms6424需求帮助

Other Parts Discussed in Thread: TMS320C6424

感谢所有工程师的回答:

        尊敬的高手你好!   我们想用TMS320C6424做产品开发。

        我的问题是:

        (1) 6424没有cls6424.lib怎么办?

        (2) 6424的rts对应是不是rts64pluse.lib,这个做什么用的,在什么情况下需要添加这个库?

       (3) TI的库如cls6416.lib有开源的原代码或手册吗?因为我想查看 IRQ_setVecs(vectors)各数组地址表和IRQ_map(IRQ_EVT_TINT2,13)设置具体寄存器。

       不管得到你们的任何帮助,我都会很感激!!!!!!

                                                                                                                                                                            Mr Wei

  • 1. C6424没有csl库,只有基于register的rcsl函数可以调用。

    2. 用c语言写代码时需要用rts库。

    3.源代码可以看csl6000.src这个文件。

  • 我需要写6424代码,但是我参考合众达公司开发板6417代码:
    void IRQ_init()   ::代码1
    {     IRQ_resetAll();              //Point to the IRQ vector table 
          IRQ_setVecs(vectors);        //Point to the IRQ vector table
          IRQ_map(4,13);               //Map TIMER events to physical interrupt number
          IRQ_reset(4);                //Reset the timer events
          IRQ_globalEnable();          //Globally enable interrupts
    }
    -------------------------------------------------------------------------------------------------------
    因为我们项目是6424不是6416。故不能用6416的CLS,于是参考CSL6000.src将IRQ_setVecs(vectors)改写了一下。
    void *IRQ_setVecs(void *vecs) {  :代码2
      void *oldVecs;
      oldVecs =(void*)( ISTP & _CHIP_ISTP_ISTB_MASK);
      ISTP=(Uint32)vecs & _CHIP_ISTP_ISTB_MASK;
      return oldVecs;
    }
    ----------------------------------------------------------------------------------------------------------
    IRQ_init()有5个子函数,这样全部改写下去很繁琐。特别是IRQ_map()又牵涉到其他函数,我这样改写函数,
    总觉得自己把问题复杂化了,TI公司这些底层代码应该是做了的!

    我的问题是:就用代码1初始化不改写子函数内部代码,直接调用代码1就可以设置中断?但是需要添加什么库呢?
                有没有直接调用接口函数直接设置,不需要对函数内部改写而设置中断初始化的方法呢??

  • C6424不能用C6416的CSL库函数.

    PSP里有基于rcsl函数的中断例程, 你可以参考一下.
    C:\ti\DM648_BIOSPSP_RELEASE_01_10_03\pspdrivers_1_10_03\packages\ti\sdo\pspdrivers\soc\c6424\examples

  •     我安装了一个PSP文件夹,只看见...\ packages\ti\sdo\pspdrivers\soc\c6424\examples\只有(GPIO例子,EMIF例子,DDR例子)其他没有看见,你安装PSP是那个版本的呢?我在官网下载,安装不起。就安装了一个CD上面的PSP!!!!     非常感谢你给我的帮助!

  • 张先生:

            很感谢你这么耐心给我指导! 我按你的说明下载了PSP中断例子(....\pspdrivers\soc\c6424\examples\intc) 例子是Timer0发生一次中断,我将其改成不停产生中断。发现程序很难进入中断子程序,进入后也只产生一次中!!                                                    

         1:函数test_interrupt()内:  CSL_FINST(tmr0Regs->TCR,TMR_TCR_ENAMODE12,EN_CONT);  

                                                     //TI原程序为EN_ONCE,我已改上面.

        2:屏蔽服务子程序interrupt void interrupt4(void)中的:

                                       //CSL_FINST(tmr0Regs->TCR,TMR_TCR_ENAMODE12,DISABLE); 

        3:main()中加了一个while(1);循环,其他都没有变化。

       

          我的疑问是这样的:timer0设置TCR为计数模式,TIM12到了计数周期PRD12,就应该讲TIM12清零,重新计数。   我调试发现TIM12不停加(不自动清零)? ,也很难进入中断服务程序,多次下载程序偶尔会跳到中断复位子程序一次?