goosen 发表于 2010-3-12 20:27:48

skyeye-1.3.0 模拟S3C2410 中断问题

对中断控制寄存器的访问有问题,环境为ubuntu 9.10 , skyeye-1.3.0

init_sparc_register_defs: Registering the GDB stub for remote debugging
(skyeye)start
arch: arm
cpu info: armv4, arm920t, 41009200, ff00fff0, 2
In do_mach_option, mach info: name s3c2410x, mach_init addr 0x581910

uart_mod:3, desc_in:, desc_out:, converter:
In create_uart_console
SKYEYE: use arm920t mmu ops
s3c2410x_io_reset
exec file "build/images/image.boot"'s format is elf32-little.
load section kernel.text: addr = 0x30000000size = 0x00014cbc.
load section kernel.rodata: addr = 0x30014cbcsize = 0x0000873f.
load section kernel.kdebug: addr = 0x3001d3fbsize = 0x00004275.
load section kernel.init: addr = 0x30021670size = 0x00001eec.
load section kernel.roinit: addr = 0x3002355csize = 0x00000004.
load section kernel.elfweaver_info: addr = 0x30023560size = 0x00000068.
load section kernel.data: addr = 0x30023800size = 0x000015cc.
load section kernel.got: addr = 0x30024dccsize = 0x00000004.
load section kernel.got.plt: addr = 0x30024dd0size = 0x0000000c.
load section kernel.kdebug-data: addr = 0x30024ddcsize = 0x000003b0.
not load section kernel.bss: addr = 0x3002518csize = 0x00002b78 .
load section kernel.kspace: addr = 0x30028000size = 0x00004000.
load section kernel.traps: addr = 0x3002c000size = 0x00001000.
load section kernel.utcb_page: addr = 0x3002d000size = 0x00001000.
load section ig_server.data: addr = 0x3002e024size = 0x00000224.
load section ig_server.got: addr = 0x3002e248size = 0x00000010.
not load section ig_server.bss: addr = 0x3002e258size = 0x00000130 .
load section event.data: addr = 0x3002fa30size = 0x00000108.
load section event.got: addr = 0x3002fb38size = 0x00000010.
not load section event.bss: addr = 0x3002fb48size = 0x00000120 .
load section ig_server.text: addr = 0x30030000size = 0x0000c754.
load section ig_server.rodata: addr = 0x3003c754size = 0x000018cd.
load section vtimer.data: addr = 0x3003f5c4size = 0x00000244.
load section vtimer.got: addr = 0x3003f808size = 0x00000010.
not load section vtimer.bss: addr = 0x3003f818size = 0x00000174 .
load section event.text: addr = 0x30040000size = 0x00005200.
load section event.rodata: addr = 0x30045200size = 0x0000082d.
load section vtimer.text: addr = 0x30048000size = 0x000067d0.
load section vtimer.rodata: addr = 0x3004e7d0size = 0x00000df1.
load section vserial.data: addr = 0x30063000size = 0x00000434.
load section vserial.got: addr = 0x30063434size = 0x00000010.
not load section vserial.bss: addr = 0x30063444size = 0x000003fc .
load section vserial.text: addr = 0x30064000size = 0x0000611c.
load section vserial.rodata: addr = 0x3006a11csize = 0x00000aa1.
load section multi_thread.data: addr = 0x3006d9a8size = 0x00000108.
load section multi_thread.got: addr = 0x3006dab0size = 0x00000010.
not load section multi_thread.bss: addr = 0x3006dac0size = 0x000000f0 .
load section iguana_server.cell_environment: addr = 0x3006e000size = 0x00000176.
load section initscript: addr = 0x30082000size = 0x00001000.
load section multi_thread.text: addr = 0x30084000size = 0x0000512c.
load section multi_thread.rodata: addr = 0x3008912csize = 0x00000879.
load section bootinfo: addr = 0x3008c000size = 0x00003000.
not load section elfweaver.notes: addr = 0x00000000size = 0x0000038a .
In SIM_start, Set PC to the address 0x30000000

(skyeye)run
(running)io_write_word(0x4a000000) = 0x00000000
io_write_word(0x4a000004) = 0x00000000
io_read_word(0x4a000010) = 0xffffffff
io_write_word(0x4a000010) = 0x00008000
io_write_word(0x4a000008) = 0xefffffff
io_write_word(0x4a000018) = 0x00000000
io_write_word(0x4a00001c) = 0x00000000
io_read_word(0x4a000008) = 0xffffffff
io_write_word(0x4a000008) = 0x6f7f7fff
io_read_word(0x4a000008) = 0xffffffff
io_write_word(0x4a000008) = 0x6f7f7fff
io_read_word(0x4a000008) = 0xffffffff
io_write_word(0x4a000008) = 0x6f7f7fff
io_read_word(0x4a000008) = 0xffffffff
io_write_word(0x4a000008) = 0x6f7f7fff
io_read_word(0x4a000008) = 0xffffffff
io_write_word(0x4a000008) = 0x6f7f7fff
io_read_word(0x4a000008) = 0xffffffff
io_write_word(0x4a000008) = 0x6f7f7fff
io_read_word(0x4a000008) = 0xffffffff
io_write_word(0x4a000008) = 0x6f7f7fff
io_read_word(0x4a000008) = 0xffffffff
io_write_word(0x4a000008) = 0x6f7f7fff
io_read_word(0x4a000008) = 0xffffffff
io_write_word(0x4a000008) = 0x6f7f7fff
io_read_word(0x4a000008) = 0xffffffff
io_write_word(0x4a000008) = 0x6f7f7fff
io_read_word(0x4a000008) = 0xffffffff
io_write_word(0x4a000008) = 0x6f7f7fff
io_read_word(0x4a000008) = 0xffffffff
io_write_word(0x4a000008) = 0x6f7f7fff
io_read_word(0x4a000008) = 0xffffffff
io_write_word(0x4a000008) = 0x6f7f7fff
io_read_word(0x4a000008) = 0xffffffff
io_write_word(0x4a000008) = 0x6f7f7fff
io_read_word(0x4a000008) = 0xffffffff
io_write_word(0x4a000008) = 0x6f7f7fff
io_read_word(0x4a000008) = 0xffffffff
io_write_word(0x4a000008) = 0x6f7f7fff
io_read_word(0x4a000008) = 0xffffffff
io_write_word(0x4a000008) = 0x6f7f7fff
io_read_word(0x4a000008) = 0xffffffff
io_write_word(0x4a000008) = 0x6f7f7fff
io_read_word(0x4a000008) = 0xffffffff
io_write_word(0x4a000008) = 0x6f7f7fff
io_read_word(0x4a000008) = 0xffffffff
io_write_word(0x4a000008) = 0x6f7f7fff
io_read_word(0x4a000008) = 0xffffffff
io_write_word(0x4a000008) = 0x6f7f7fff
io_read_word(0x4a000008) = 0xffffffff
io_write_word(0x4a000008) = 0x6f7f7fff
io_read_word(0x4a000008) = 0xffffffff
io_write_word(0x4a000008) = 0x6f7f7fff
io_read_word(0x4a000008) = 0xffffffff
io_write_word(0x4a000008) = 0x6f7f7fff
io_read_word(0x4a000008) = 0xffffffff
io_write_word(0x4a000008) = 0x6f7f7fff
io_read_word(0x4a000008) = 0xffffffff
io_write_word(0x4a000008) = 0x6f7f7fff
io_read_word(0x4a000008) = 0xffffffff
io_write_word(0x4a000008) = 0x6f7f7fff
io_read_word(0x4a000008) = 0xffffffff
io_write_word(0x4a000008) = 0x6f7f7fff
io_read_word(0x4a000008) = 0xffffffff
io_write_word(0x4a000008) = 0x6f7f7fff
io_read_word(0x4a000008) = 0xffffffff
io_write_word(0x4a000008) = 0x6f7f7fff
io_read_word(0x4a000008) = 0xffffffff
io_write_word(0x4a000008) = 0x6f7f7fff
io_read_word(0x4a000008) = 0xffffffff
io_write_word(0x4a000008) = 0x6f7f7fff
io_read_word(0x4a00001c) = 0xffffffff
io_write_word(0x4a00001c) = 0x00000001
io_read_word(0x4a00001c) = 0xffffffff
io_write_word(0x4a00001c) = 0x00000003
io_read_word(0x4a00001c) = 0xffffffff
io_write_word(0x4a00001c) = 0x00000007
io_read_word(0x4a00001c) = 0xffffffff
io_write_word(0x4a00001c) = 0x0000000f
io_read_word(0x4a00001c) = 0xffffffff
io_write_word(0x4a00001c) = 0x0000001f
io_read_word(0x4a00001c) = 0xffffffff
io_write_word(0x4a00001c) = 0x0000003f
io_read_word(0x4a00001c) = 0xffffffff
io_write_word(0x4a00001c) = 0x0000007f
io_read_word(0x4a00001c) = 0xffffffff
io_write_word(0x4a00001c) = 0x000000ff
io_read_word(0x4a00001c) = 0xffffffff
io_write_word(0x4a00001c) = 0x000001ff
io_read_word(0x4a00001c) = 0xffffffff
io_write_word(0x4a00001c) = 0x000003ff
io_read_word(0x4a00001c) = 0xffffffff
io_write_word(0x4a00001c) = 0x000007ff
io_write_word(0x51000000) = 0x00000700
timer_write(0x00000000) = 0x00000700
io_read_word(0x51000000) = 0xffffffff
timer_read(0x00000000) = 0xffffffff
io_write_word(0x51000004) = 0x00000700
timer_write(0x00000004) = 0x00000700
io_write_word(0x5100003c) = 0x00009eb0
timer_write(0x0000003c) = 0x00009eb0
io_write_word(0x51000008) = 0x00200000
timer_write(0x00000008) = 0x00200000
io_read_word(0x4a000008) = 0xffffffff
io_write_word(0x4a000008) = 0x6f7f3fff
io_write_word(0x51000008) = 0x00500000
timer_write(0x00000008) = 0x00500000

比如,
io_write_word(0x4a000008) = 0x6f7f7fff
io_read_word(0x4a000008) = 0xffffffff
注意到写入0x41000008的时候是0x6f7f7fff,而读出则成0xffffffff。从log看出,中间并没有别的访问。

以上的log只是在s3c2410x_io_read_word与s3c2410x_io_write_word中增加。

[ 本帖最后由 goosen 于 2010-3-12 20:30 编辑 ]
页: [1]
查看完整版本: skyeye-1.3.0 模拟S3C2410 中断问题