打印

lm3s9b9x系列锁死问题的解决

[复制链接]
5250|18
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xifengsong|  楼主 | 2011-9-5 16:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
永远的不知| | 2011-9-5 23:03 | 只看该作者
C1都是很老的版本了,现在都是C5的正式版本了。

有些朋友抱怨TI的M3会锁死,通过一些正常的措施是可以避免的。

Tempest C1锁死有以下几个原因:

1> JTAG管脚被设置为了GPIO口

2> 时钟的配置有问题

3> 上电(0~.3.3V)时间不能满足1ms要求



大多数人Jtag死锁都是因为第2点,程序中的晶振设置错误,造成时钟系统在倍频时发生错误,从而芯片不正常;如下所示,hellom3-9b9x板上的晶振是16M,参数应该为SYSCTL_XTAL_16MHZ,如果错误使用SYSCTL_XTAL_8MHZ芯片就会锁死。


    SysCtlClockSet(SYSCTL_SYSDIV_4 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN |
                   SYSCTL_XTAL_16MHZ);




如果原来的程序采用的是8M的晶振,千万要注意修改过来,大多数死锁的情况都是基于这个原因。

如果是C1版本的芯片,死锁后就杯具了,解锁后芯片的patch补丁将丢失,芯片有一定的概率会损坏。

使用特权

评论回复
评分
参与人数 1威望 +2 收起 理由
tianm + 2
板凳
永远的不知| | 2011-9-5 23:05 | 只看该作者
另外,C1的版本还要注意加上下面的电源电路。

使用特权

评论回复
地板
永远的不知| | 2011-9-5 23:07 | 只看该作者
如果没有按照3楼设计电源,建议楼主最好还是换成C5的正式版本。

使用特权

评论回复
5
xifengsong|  楼主 | 2011-9-6 09:35 | 只看该作者
哦  这个明白了。我也确实是这么设计电源了。终于明白为什么要这么设计电源了。我现在有几个解锁的芯片不能下载程序,但是在jlink commonder里面显示的一切正常,不知道这是不是芯片坏了呢?如果是那坏的概率也太大了,我解说3个有两个不能下载程序了。下载程序提示如下:
Tue Sep 06 09:04:52 2011: Loaded macro file: D:\Program Files\Embedded Workbench 5.4 Evaluation\arm\config\flashloader\TexasInstruments\FlashLM3Sxxx.mac
Tue Sep 06 09:04:52 2011: Turning off watchdog
Tue Sep 06 09:04:52 2011: 392 bytes downloaded and verified (0.00 Kbytes/sec)
Tue Sep 06 09:04:52 2011: Loaded debugee: D:\Program Files\Embedded Workbench 5.4 Evaluation\arm\config\flashloader\TexasInstruments\FlashLM3SxxxRAM32K.out
Tue Sep 06 09:04:52 2011: Target reset
Tue Sep 06 09:04:53 2011: The flash loader program reported an error.
如果不是坏了又怎样能解决问题呢?

使用特权

评论回复
6
永远的不知| | 2011-9-6 09:43 | 只看该作者
如果不是坏了,直接就可以用。
如果按照我上面提到的问题注意了,一般也不会锁住,我们原来用C1版本的,一直也很正常,很少有锁住的。

使用特权

评论回复
7
xifengsong|  楼主 | 2011-9-6 14:01 | 只看该作者
好的  谢谢

使用特权

评论回复
8
tianm| | 2011-9-7 01:38 | 只看该作者
LZ 被HOLD住了?
永遠 版主解答的真詳細  辛苦了

使用特权

评论回复
9
xifengsong|  楼主 | 2011-9-7 08:46 | 只看该作者
应该不是锁住吧,而且我也解锁过还是不行啊

使用特权

评论回复
10
永远的不知| | 2011-9-7 08:59 | 只看该作者
11# xifengsong

还是建议楼主使用新的C5正式版本的芯片,C1的芯片挺老的,而且芯片又有内部补丁程序,还要修改程序地址,会给调试带来很多麻烦。

使用特权

评论回复
11
xifengsong|  楼主 | 2011-9-7 11:00 | 只看该作者
就是啊,以后我就用c5的,可是现在的问题我也要解决啊,这种错误大家遇到过吗?

使用特权

评论回复
12
TI_MCU| | 2011-9-8 15:53 | 只看该作者
程序代码,检查一下是否有外设没有初始化正常就使用,比如 timer enable 后在timer 中断里面是不是有使用外设,但其他外设是在timer 初始化之后才初始化的。 这样就有可能导致芯片锁住。

使用特权

评论回复
13
keken| | 2011-9-11 19:03 | 只看该作者
好详细啊

使用特权

评论回复
14
xifengsong|  楼主 | 2011-9-19 14:19 | 只看该作者
c5版本确实是毛病少了。不过听说C5只能下载程序100次,不知道是不是?

使用特权

评论回复
15
lizye| | 2011-9-19 14:32 | 只看该作者
好早的东西了

使用特权

评论回复
16
yqg80| | 2011-9-20 17:44 | 只看该作者
版主回答的真详细,顶一个。

使用特权

评论回复
17
sptt1| | 2011-11-3 09:12 | 只看该作者
版主真是尽心啊,学习啦

使用特权

评论回复
18
xiachu| | 2013-12-11 17:21 | 只看该作者
永远的不知 发表于 2011-9-5 23:03
C1都是很老的版本了,现在都是C5的正式版本了。

有些朋友抱怨TI的M3会锁死,通过一些正常的措施是可以避免 ...

版主,我也遇到一个类似问题
我在LM3S9B92上写了一个看门狗计时器程序LM3S9B92板子里有个看门狗计时器的程序#include "inc/hw_ints.h"
#include "inc/hw_memmap.h"
#include "inc/hw_types.h"
#include "driverlib/debug.h"
#include "driverlib/gpio.h"
#include "driverlib/interrupt.h"
#include "driverlib/pin_map.h"
#include "driverlib/rom.h"
#include "driverlib/sysctl.h"
#include "driverlib/watchdog.h"
#include "utils/uartstdio.h"
//  看门狗定时器中断服务程序,执行喂狗和闪烁用户指示灯功能。

void WatchdogIntHandler(void)
{
//清看门狗定时器中断服务程序
ROM_WatchdogIntClear(WATCHDOG0_BASE);
//翻转GPIOB6
ROM_GPIOPinWrite(GPIO_PORTB_BASE,GPIO_PIN_6,ROM_GPIOPinRead(GPIO_PORTB_BASE,GPIO_PIN_6)^GPIO_PIN_6);

}
//  该例程演示看门狗定时器的用法。
int main(void)
{
ROM_SysCtlClockSet(SYSCTL_SYSDIV_1|SYSCTL_USE_OSC|SYSCTL_OSC_MAIN|SYSCTL_XTAL_16MHZ);
//  使能本例程用到的外设功能单元UART1 GPIOB
    ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_UART1);
    ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);
    GPIOPinConfigure(GPIO_PB4_U1RX);
    GPIOPinConfigure(GPIO_PB5_U1TX);
    ROM_GPIOPinTypeUART(GPIO_PORTB_BASE, GPIO_PIN_4 | GPIO_PIN_5);
    //  配置UART1为115200波特率、8-N-1  数据模式。
    UARTStdioInit(1);
    UARTprintf("Watchdog example\n");



//  使能本例程用到的外设。
ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_WDOG0);

//  使能全局中断。
ROM_IntMasterEnable();
//  设置GPIO B6 为输出口
ROM_GPIOPinTypeGPIOOutput (GPIO_PORTB_BASE, GPIO_PIN_6);
ROM_GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_6, 0<<6);
  //  使能看门狗定时器中断。
ROM_IntEnable(INT_WATCHDOG);
  //  设置看门狗定时器的重载值
ROM_WatchdogReloadSet(WATCHDOG0_BASE, SysCtlClockGet()/100);
//  使能看门狗定时器的复位功能。
ROM_WatchdogResetEnable(WATCHDOG0_BASE);
  //  启动看门狗定时器。
ROM_WatchdogEnable(WATCHDOG0_BASE);
  //  死循环。
while(1);

}
然后现在不能debug了 我怀疑是这个程序不断产生中断然后导致JTAG

未成功,现在板子里看门狗的程序不断运行 用CCS debug就是
CORTEX_M3_0: Error connecting to the target: (Error -2062 @ 0x0) Unable to halt device. Reset the device, and retry the operation. If error persists, confirm configuration, power-cycle the board, and/or try more reliable JTAG settings (e.g. lower TCLK). (Emulation package 5.0.762.0)
麻烦楼主给个参考意见
是不是程序中不断用WHD产生中断也会导致JTAG锁死?那我大概怎么解决呢

使用特权

评论回复
19
zeluo| | 2013-12-11 17:39 | 只看该作者
很好的学习帖子   需要好好学习学习   楼主   先谢谢了   

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

77

帖子

1

粉丝