这个是什么错误啊?请教
把conf改了,出了这个错误...SKYEYE: ep7312_io_read_byte error
SKYEYE: state->pc=0,state->instr=0,addr=80000140 写地址出错,可能skyeye.conf的地址描述不对,导致内核访问某个地址不存在。 mem_bank: map=I, type=RW, addr=0x80000000, size=0x00008000
mem_bank: map=M, type=RW, addr=0x00000000, size=0x00020000, file=./armboot.bin,boot=yes
mem_bank: map=M, type=RW, addr=0x00020000, size=0x000a0000, file=./zImage
mem_bank: map=M, type=RW, addr=0x000c0000, size=0x00100000, file=./rd.gz
mem_bank: map=M, type=RW, addr=0x001c0000, size=0x00240000
mem_bank: map=M, type=RW, addr=0xc0000000, size=0x01000000
这是我的conf文件内容
和实际的板子相对应的呀.... 你可以用skyeye的log信息记录内核的指令流,注意最新的skyeye-0.8.0支持记录最近length条指令。这样结合对内核的反汇编,可定位出出问题的指令。
80000140是IO地址,不知对于的是哪个io寄存器,且指令地址也有问题。
你可以查查看 不太会用log....
这可能会是哪一部分的代码出问题呢?
我在源码里分别搜ep7312_io_read_byte,state->pc,state->instr
都没看见有相关的函数啊 sim/arm/skyeye_math_ep7312.c里面有
ep7312_io_read_byte,ep7312_io_read_halfword,ep7312_io_read_word
等函数啊
0x80000140对应的是SYSFLG
通过ep7312_io_read_word可以访问该地址
如果通过ep7312_io_read_byte访问就会出错
printf("SKYEYE: ep7312_io_read_byte error\n");
printf("SKYEYE: state->pc=%x,state->instr=%x,addr=%x",state->pc,state->instr,addr); 多谢half兄啊,原来我没找到这个目录.....
不过没找到哪里有调用ep7312_io_read_byte这个函数啊...
只有这里this_mach->mach_io_read_byte = ep7312_io_read_byte
我怎么能用ep7312_io_read_word来访问0x80000140呢? 可否贴出内核启动时的所有信息? 在ep7312_io_read_byte中
添加
case 0x00000140:
data=io.sysflg;
break;
然后重新编译skyeye,看看能否跳过这个问题! !
ARMboot 1.0.2 (Dec 17 2003 - 13:32:47)
ARMboot code: c0500000 -> c0517f14
DRAM Configuration:
Bank #0: c0000000 8 MB
Flash: 16 MB
*** Using default environment
Hit any key to stop autoboot:0
Base Address: 0x00000000
EP7312 # lilo
Uncompressing Linux.....................................SKYEYE: ep7312_io_read_byte error
SKYEYE: state->pc=0,state->instr=0,addr=80000140
页:
[1]