winglion 发表于 2006-1-3 14:30:13

44b0为什么寄存器写不进去!

搞了一个假期还是没有弄通!
在把ucos移植到2410上,编译通过后发现写中断控制寄存器写不进去。
改写hello4skyeye也是一样的效果。下面的代码是我在仿真44b0的程序,
程序是能跑的,串口正常,watchdog的寄存器和中断的寄存器都写不进去,全是 F.
那位大虾指点一下问题出在那里!同一个函数我在真板上跑通的阿!
**************************
hello.c
void hello(void)
{       
        int i;
        char * hellostr="helloworld";
        long* paddr=(long*)0x01d20028;
        *paddr=0x1aaaa;
        paddr=(long*)0x01d00020;//0xfffd001c;
      //(long *)0x01d20028=(long)0x28;
        for(i=0;i<10;i++)
        {
                * paddr=hellostr;
        }
        return;       
}
void initTimer(void)
{
        int i;
        long* paddr=(long*)0x1d30004;
        *paddr=0x6000;
        paddr++;
        *paddr=0x6000;
        paddr--;
        paddr--;
        *paddr=0x8024;
        paddr=(long*)0x01e00000;
        *paddr=0x05;
        paddr=(long *)0x01e0000c;
        *paddr=0x03ff7fff;
}
**************************************
START.S

begin:
        b      Reset_begin
        b      .
        b      .
        b      .
        b      .
        b      .
        b      IRQ_handle
        b      FIQ_handle
Reset_begin:       
        @set up irq stack
        mov    r0, #0xd2                @ make irq mode with all irqs disabled
        msr    cpsr, r0
        ldr    sp, =irq_stack         @ set sp_irq = irq_stack
        bl   initTimer
        mov    r0,#52
        msr    cpsr,r0
      bl   hello
        b      begin
IRQ_handle:
      @handle irqs
      b      .
FIQ_handle:
      @handle fiq
        b      .
        b      begin
.data
        .align4
irq_stack:
        .space        4096
******************************************
这是完成的打包!

winglion 发表于 2006-1-5 10:36:00

见鬼了,我刚才把修改后的hello4skyeye调到win下用adx和真的44b0板调试,
adx很好的认出了arm-elf工具做成的影像文件,还跟对应的hello.c
联系起来了,除了不能很好的对应每一行外,一切正常!
最重要的是,我的程序在真板子上是能引起中断的阿!
为什么在skyeye下就连寄存器都写不进去呢!我真倒霉:-(

那位大虾帮忙调试调试,我用的是skyeye-0.94 for debian的bin包,
系统是hiweed 0.7的,不知道是不是版本或系统的问题。
希望高手门赶快把1.0 1.2也作出bin文件来,我make 1.0老出错,testsuit 的skyeye只能跑,不能调试!

winglion 发表于 2006-1-7 21:59:17

刚才自己编译了1.0和1.2rc3,编译很顺利,可惜启动后都听在start at 0xxxxxxx地址的提示处,之后就成了输入器,打什么都没反应了!也不见占cpu!
看来拿skyeye调试程序前要先学会调试skyeye:-)

ksh 发表于 2006-1-8 15:32:25

>程序是能跑的,串口正常,watchdog的寄存器和中断的寄存器都写不进去,全是 F.
I think serial run normally .So at the least the serial rgister can be written. I guess watch dog is not simulated at all. You can refer to the source file:
http://gro.clinux.org/scm/cvsweb.php/~checkout~/skyeye_gdb_v5.3/sim/arm/skyeye_mach_at91.c?rev=1.14&contenttype=text/plain&cvsroot=skyeye
>看来拿skyeye调试程序前要先学会调试skyeye:-)
It is necessary that use gdb to trace skyeye if you want skyeye to runsomething that different with testsuite.
页: [1]
查看完整版本: 44b0为什么寄存器写不进去!