打印
[ZLG-ARM]

向周工道歉!!!

[复制链接]
2408|19
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
VisionShow|  楼主 | 2007-4-3 21:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
搞2220,一开始碰到不能启动的问题,后来碰到看门狗的问题。
看门狗不能够正确的复位,真是无招了.....

看门狗的问题后来我解决了,是程序的问题,还想提一个问题
就是启动的问题: ISP BOOT是不是校验和为零就可以启动?
我的程序很怪,非要这样才能启动:
.text
.align 4
.global _start
.global Reboot

_start:
  B      SystemReset
  B      SystemReset
  B      SystemReset
  B      SystemReset
  LDR    PC, DataAbort
  .long  0xA3400FF2
  LDR    PC,  [PC, #-0xFF0]
  B      SystemReset

DataAbort:
.long    0x80000024

SystemReset:
  LDR    R0,     =0xFFFFF014       @关闭所有中断
  LDR    R1,     =0xFFFFFFFF
  STR    R1,     [R0]

  MRS    R0,     CPSR
  ORR    R0,     R0, #0x80
  MSR    CPSR,   R0

  LDR    R0,     =0xE0000000
  MOV    R1,     #0
  STR    R1,     [R0]

  LDR    R0,     =0xE002C014
  LDR    R1,     =0x0F814920
  STR    R1,     [R0]

  LDR    R0,     =0xFFE00000
  LDR    R1,     =0x1000FFEF
  STR    R1,     [R0]

  LDR    R0,     =0xFFE00004
  LDR    R1,     =0x2000FFEF
  STR    R1,     [R0]

  LDR    R0,     =0xFFE00008
  LDR    R1,     =0x0000FFEF
  STR    R1,     [R0]

  LDR    R0,     =0xFFE0000C
  LDR    R1,     =0x00002400
  STR    R1,     [R0]

  MSR    CPSR_c, #0xD2
  LDR    SP,     =0x40010000

  MSR    CPSR_c, #0xD3
  LDR    SP,     =0x4000E000

  LDR    R0,     =0x80000000
  MOV    R1,     #0x40000000
  MOV    R2,     #0xC000
CopyProgram:
  LDR    R3,     [R0], #4
  STR    R3,     [R1], #4
  SUBS   R2,     R2,   #4
  BNE    CopyProgram

  LDR    R0,     =0xE01FC040
  MOV    R1,     #2
  STRB   R1,     [R0]
  
  MRS    R1,     CPSR
  BIC    R1,     R1, #0x80
  MSR    CPSR,   R1

  LDR    R0,     DataAbort
  LDR    R1,     =SystemReset
  STR    R1,     [R0]

  LDR    PC,     =Startup

Reboot:
  LDR    PC,     =0x80000000

相关帖子

沙发
Swd21ic| | 2007-4-3 21:51 | 只看该作者

~~

..先检查下自己的问题吧老兄

使用特权

评论回复
板凳
VisionShow|  楼主 | 2007-4-3 21:55 | 只看该作者

楼上


别扯了,Philips的芯片问题就是很多,下面是一段程序,接收到:ROOT_UPDATE可以复位成功,
接收到ROOT_FONTSET就不行了,这种问题会是什么问题,很显而易见的了。。。
void CommitData(BYTE *buffer,DWORD size, PDeviceInfo from)
{
  int i;
  DWORD dwSize;
  switch (((PRoot)buffer)->id) {
    case ROOT_UPDATE:
      watchdog_clk();
      UpdateProgram((WORD *)(buffer+sizeof(TRoot)),size-sizeof(TRoot));
      SendCommand(PKC_NOTIFY,0x00010001,from);
      while (1);
    case ROOT_FONTSET:
      watchdog_clk();
        SendCommand(PKC_NOTIFY,0x00010001,from);
      while (1);
  }
}

使用特权

评论回复
地板
VisionShow|  楼主 | 2007-4-4 15:34 | 只看该作者

请周工解释一下


试验条件:
板子: 
CPU:    LPC2220
FLASH:  AM29LV160DB
RAM:    BANK1上两片16位SRAM凑成32位SRAM,共512K(ISSI  12816)
 
当执行一次:RAM_Test后看门狗将不起作用, 下面两个函数顺序执行就完蛋了
void RAM_Test(void)
{
  int i;
  volatile DWORD *RAM=(DWORD *)0x81000000;
  for (i=0; i<64*1024; i++)  //当大约32*1024也就是128K后,看门狗就不起作用了
  {
    *RAM=0xAAAAAAAA;
    if (*RAM!=0xAAAAAAAA)
    {
      uart_Write("SRAM Test Failed ", 18, NULL);
      uart_Write(RAM, 4, NULL);
      return;
    }
    RAM++;
  }
  uart_Write("SRAM Test OK ", 14, NULL);
}
void watchdog_Test(int iType)
{
  watchdog_clk();
  RAM_Test();
  switch (iType){
    case ROOT_UPDATE:
      while (1);
    case ROOT_FONTSET:
      while (1);
  }
}

使用特权

评论回复
5
HWM| | 2007-4-4 16:24 | 只看该作者

别一有问题就说某某芯片不行,这样没人会帮你的。

因为这似乎是你没问题,而问题全在他人那里,这叫别人如何帮你。

使用特权

评论回复
6
VisionShow|  楼主 | 2007-4-4 17:01 | 只看该作者

没有指望别人帮忙

我搞设计很多年了,不要认为我需要人帮忙,实话说搞设计,也没有人能帮忙,都是自己摸索的,一旦碰到问题,会有很多方式来查找问题,排除问题,确认问题,不会没有确认问题,就乱说的

使用特权

评论回复
7
HWM| | 2007-4-4 18:05 | 只看该作者

如果LZ确认是LPC2220的问题的话,建议直接和NXP(原Philips)联系

使用特权

评论回复
8
zlgARM| | 2007-4-4 18:18 | 只看该作者

VisionShow

  可否请您设计一个最小例程,里面只有必要的函数,请您将RAM_Test()里的语句一个一个注释掉,然后观察看门狗的失效情况,逐步缩小范围,直至找出触发故障的地方?

使用特权

评论回复
9
zcq30| | 2007-4-4 20:05 | 只看该作者

原来是这样,现在能启动了吗?

这也是芯片的问题,看来我们得找自己的问题!

使用特权

评论回复
10
luhuaren| | 2007-4-4 21:48 | 只看该作者

RE

void RAM_Test(void)
{
  int i;
  volatile DWORD *RAM=(DWORD *)0x81000000;
  for (i=0; i<64*1024; i++)  //当大约32*1024也就是128K后,看门狗就不起作用了
  {
    *RAM=0xAAAAAAAA;
    if (*RAM!=0xAAAAAAAA)
    {
      uart_Write("SRAM Test Failed ", 18, NULL);
      uart_Write(RAM, 4, NULL);
      return;
    }
    RAM++;
  }
  uart_Write("SRAM Test OK ", 14, NULL);
}


楼主说的不起作用是什么意思?

使用特权

评论回复
11
luhuaren| | 2007-4-4 21:57 | 只看该作者

RE

当大约32*1024也就是128K后,看门狗就不起作用了

给人的感觉是
1:程序跑飞导致看门狗没被调用,而导致系统复位(不太象)
2:程序跑飞导致看门狗没被调用,而系统没有复位

不知道是哪一种。。

使用特权

评论回复
12
蛋蛋的老公| | 2007-4-4 23:57 | 只看该作者

BS一下LZ

BS一下LZ,还说自己会解决问题,问题都没说清楚,别人能帮你吗?
我刚做完2220的项目,本来想看一下你的问题,结果看了半天不知你在说什么.

使用特权

评论回复
13
蛋蛋的老公| | 2007-4-5 00:04 | 只看该作者

羡慕LZ

不过很羡慕LZ,PHLILIPS的芯片还嫌麻烦,有得给你用就不错了,如果给你长年用台湾的,保证会给气晕....
本人毕业多年,一直都用台系货,东家换西家,那个才叫苦!出问题都没人理.
最近有机会用LPC做了一个产品.第一次用欧美系的货,那种感觉叫做爽!资料多多,随手拿来就用.....
呵呵,LZ真是福中不知福.
安心搞搞吧,别一出问题就到处发泄,即是芯片有BUG也没方法的,也是自己选上的没得怪别人的.这是搞技术的硬道理.

使用特权

评论回复
14
ayb_ice| | 2007-4-5 09:41 | 只看该作者

随便说说

 谁也不能保证芯片没有问题....
 绝对可以保证不可能有这么多问题....

使用特权

评论回复
15
zlg315| | 2007-4-5 22:11 | 只看该作者

netjob,怎么如此缺乏远见?

     现在下结论还为时过早吧!请相信我的选择没有错。

使用特权

评论回复
16
VisionShow|  楼主 | 2007-4-5 23:32 | 只看该作者

向周工致歉

很抱歉,这个帖子给周工造成了一些影响,实在很对不起,
因为这个项目很急,开始启动问题耽误了一些时间,后来
碰到了看门狗问题,没有经过仔细的测试,盲目下结论是
芯片的问题,很不对,再次向周工致歉!!!

使用特权

评论回复
17
high| | 2007-4-6 10:10 | 只看该作者

坦白讲,我用nxp的arm也碰到不少问题。

也好在,最后都能找到办法回避这些问题。(并不总是ic问题。)但很多现象是和自己经验矛盾的。

毕竟我们小工程,也不是nxp的engineer,没有义务去收集证据。

使用特权

评论回复
18
蛋蛋的老公| | 2007-4-7 22:51 | 只看该作者

TO楼主

---------------------------------------------
看门狗的问题后来我解决了,是程序的问题,还想提一个问题
就是启动的问题: ISP BOOT是不是校验和为零就可以启动?
---------------------------------------------

查查DATASHEET,或者买本书看看吧..这个是全世界人都知道的事情.没看清楚就说别人有问题...
你为什么不使用ZLG的模板呢?

使用特权

评论回复
19
王紫豪| | 2007-4-8 01:33 | 只看该作者

道歉什么?关键是应该给自己道歉

使用特权

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

本版积分规则

7

主题

28

帖子

0

粉丝