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
******************************************
这是完成的打包! 见鬼了,我刚才把修改后的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只能跑,不能调试! 刚才自己编译了1.0和1.2rc3,编译很顺利,可惜启动后都听在start at 0xxxxxxx地址的提示处,之后就成了输入器,打什么都没反应了!也不见占cpu!
看来拿skyeye调试程序前要先学会调试skyeye:-) >程序是能跑的,串口正常,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]