TI中文支持网
TI专业的中文技术问题搜集分享网站

求助,OMAP-L137定时器不能正常工作

TI工程师,你好。

我在调试OMAPL137的定时器时遇到如下问题:

连接仿真器的情况下定时器可以正常运行,但是从FLASH加载后定时器无法正常工作(确定FLASH烧写和加载均正常)

定时器使用的是TIMER0的TIM34,双32位,unchained模式,工作方式为连续。

代码如下:

*TIMER0_TGCR = 0x0104;//0x04;  

OMAPL137_UART_putChar(uart1,0x1);  // 从串口输出

_wait(15000);    

*TIMER0_TGCR = *TIMER0_TGCR | 0x3; // remove from reset  

OMAPL137_UART_putChar(uart1,0x2);

 _wait(15000);

 *TIMER0_PRD34 = 0x47ff;   

OMAPL137_UART_putChar(uart1,0x3);  

_wait(15000);   

 *TIMER0_INTCTLSTAT = 0x00020000;//0x00010000;  //关闭timer int

 OMAPL137_UART_putChar(uart1,0x4);  

_wait(15000);     

*TIMER0_TCR = 0x00800000;    // mode1 enable  

OMAPL137_UART_putChar(uart1,0x5);

 _wait(15000);

 IER = 0xFFFF;       // 使能中断INT8  

OMAPL137_UART_putChar(uart1,0x6);

 _wait(15000);  

 *((unsigned int *)0x01800108) = 0x00000040; // 中断挂接 evt40 -> INT8  

OMAPL137_UART_putChar(uart1,0x7);

 _wait(15000);

 *TIMER0_INTCTLSTAT = 0x00010000; //0x00020000; //使能timer int  

OMAPL137_UART_putChar(uart1,0x8);  

_wait(15000);

 

脱机运行发现每次串口输出完0x1后就再无输出,故推断是执行*TIMER0_TGCR = *TIMER0_TGCR | 0x3语句,打开定时器造成死机。

该问题已经困扰了好几天,项目进度比较急,工程师大大拜托啦!!

Shine:

用仿真器跟一下boot后的程序,看是运行到哪里出错了?GEL文件里的初始化代码有没有在aisgen里配置?http://processors.wiki.ti.com/index.php/Debugging_Boot_Issues

jianbo liu1:

回复 Shine:

谢谢回复。

我用的是和c6713类似的nor flash启动的方式,代码是自己写的,没有用GEL文件啊。

现在又发现,除定时器外,在写I2C相关的寄存器时也会死机,感觉像是boot后不能读写某段内存空间。

使用仿真器时一些正常。

Shine:

回复 jianbo liu1:

请问具体用的是nor flash boot里的哪种? Legacy? Direct? AIS?

le chang:

回复 Shine:

谢谢您的回复,我是楼主的同事。

nor flash boot使用的Legacy的方式。

从目前现象来看,我觉得也不像是因为写入某段内存空间就会出问题,因为

*TIMER0_TGCR = 0x0104;//0x04;  

OMAPL137_UART_putChar(uart1,0x1);  // 从串口输出

这一句是可以正常执行的,接下来

*TIMER0_TGCR = *TIMER0_TGCR | 0x3; // remove from reset  

OMAPL137_UART_putChar(uart1,0x2);

从串口调试器看不到02的输出,所以估计是*TIMER0_TGCR = *TIMER0_TGCR | 0x3这一步出了问题。

麻烦您帮忙分析下,谢谢啦

Shine:

回复 le chang:

你用仿真器跟过boot后的代码吗,这个比较容易找出问题的所在。

你的代码有没有超过16KB?

 

le chang:

回复 Shine:

谢谢回复。

nor flash启动的方式也可以用仿真器跟BOOT后的代码吗?我没这么试过,不太会操作,请问有参考文档之类的吗?

再次感谢!

le chang:

回复 Shine:

您说的代码是指二次搬运的代码吗?没有超过16kb,主程序是192kb。
我用仿真器跟了boot后的代码,还是在*TIMER0_TGCR = TIMER0_TGCR | 0x3 这一句一执行就死机。我该怎么办啊,求助,楼主已经被领导撤了,现在我负责这块,我压力好大啊。神啊,救救我吧!

Shine:

回复 le chang:

板子是自己做的吗?量一下clkout有没有稳定的输出?

在仿真器调试阶段,二次bootloader能正确搬运代码并运行吗?

le chang:

回复 Shine:

是自己做的板子,
通过OBSCLK引脚观察,发现flash启动时和通过仿真器运行时的时钟输出不一样,频率呈线性关系,用仿真器时是55mhz,flash启动时是13mhz多,二次搬运代码都正常。

Shine:

回复 le chang:

boot其他简单的程序有问题吗? 还是就这个timer程序不行?如果把TGCR=0x3这句去掉,还能往下执行吗?

赞(0)
未经允许不得转载:TI中文支持网 » 求助,OMAP-L137定时器不能正常工作
分享到: 更多 (0)