|
本人配置串口中断相关寄存器。在系统初始化早期阶段,访问0x9000000000000000+0x3ff0140a 读写一个字节都是正常的,可是等系统起来后,再测试这个寄存器的读写,直接就死机了。 也就是说相同的地址,早期能访问,启动起来后不让访问了。
串口中断线输入10号,输出0号,挂接到0号CPU。
/* 写一个字节到 9000000000000000开始的地址*/
static __inline__ void MIPS_SB64(unsigned int address, unsigned char value)
{
unsigned long long tmp; /* 64bit */
__asm__ volatile (
".set noreorder \n"
"dli %0,0x9000000000000000 \n"
"or %0,%0,%1 \n"
"sb %2, 0(%0) \n"
"sync \n"
".set reorder \n"
: "=&r" (tmp)
: "r" (address) , "r" (value) : "memory"
);
}
void test_0x9000000000000000(void)
{
unsigned int addr = 0x3ff0140a; /* 串口偏移量*/
unsigned char value = 0;
value = 0x11;
MIPS_SB64(addr, value);
}
就是这个测试函数,放在很早的地方能用,晚了就挂机了。搞不清楚这其中哪里的配置影响它了。 请大侠支招,万分感谢!困扰了好多天了。 |
|