1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
|
memory address over 0x2000_7ffc is not accessible in mps2-an505
I currently run qemu with the following options
`qemu-system-aarch64 -machine mps2-an505 -cpu cortex-m33 -m 16`
For some reason, memory address over 0x2000_7ffc is not accessible.
It can be tested in gdb as follow.
(gdb) x/x 0x20007ffc
0x20007ffc: 0x00000000
(gdb) x/x 0x20007ffd
0x20007ffd: Cannot access memory at address 0x20007ffd
(gdb) x/x 0x20008000
0x20008000: Cannot access memory at address 0x20008000
This is expected behaviour. The memory at 0x2000_0000 in this board is the "FPGA block RAM", and there is only 32K of it, so it finishes at 0x2000_7fff, and attempts to access beyond that will fail because there is no device or memory at the address immediately after it in the memory map.
PS: you don't need to pass "-cpu cortex-m33" as it is the default for the mps2-an505 board, and you don't need to pass a -m argument either, as 16MB is the fixed value for this board.
(If you were just interested in having a large area of contiguous RAM, the "PSRAM" is the largest lump on this board: it's 16MB starting at 0x8000_0000.)
On 9/29/20 8:57 AM, Changho Choi wrote:
> Public bug reported:
>
> I currently run qemu with the following options
> `qemu-system-aarch64 -machine mps2-an505 -cpu cortex-m33 -m 16`
>
> For some reason, memory address over 0x2000_7ffc is not accessible.
> It can be tested in gdb as follow.
>
> (gdb) x/x 0x20007ffc
> 0x20007ffc: 0x00000000
> (gdb) x/x 0x20007ffd
> 0x20007ffd: Cannot access memory at address 0x20007ffd
Works for me:
(gdb) x/xg 0x20007ff8
0x20007ff8: 0x0000000000000000
(gdb) x/xw 0x20007ffc
0x20007ffc: 0x00000000
(gdb) x/xh 0x20007ffe
0x20007ffe: 0x0000
(gdb) x/xb 0x20007fff
0x20007fff: 0x00
I suppose GDB uses 32-bit access size by default,
so requesting 32-bit at 0x20007ffd would access
out of bound memory.
> (gdb) x/x 0x20008000
> 0x20008000: Cannot access memory at address 0x20008000
For TYPE_IOTKIT there is only 1 SRAM bank (see armsse_variants[])
initialized to SRAM_ADDR_WIDTH bits, which is 15 by default:
DEFINE_PROP_UINT32("SRAM_ADDR_WIDTH", ARMSSE, sram_addr_width, 15),
So this MPC downstream region is a 32KB SRAM. The size looks correct.
>
> ** Affects: qemu
> Importance: Undecided
> Status: New
>
Thank you for all your kind answers and suggestions.
I also have confirmed that the memory address over 0x2000_8000 is not
accessible in the real board.
Regards,
Changho Choi
2020년 9월 29일 (화) 오후 6:25, Peter Maydell <email address hidden>님이 작성:
> (If you were just interested in having a large area of contiguous RAM,
> the "PSRAM" is the largest lump on this board: it's 16MB starting at
> 0x8000_0000.)
>
> --
> You received this bug notification because you are subscribed to the bug
> report.
> https://bugs.launchpad.net/bugs/1897680
>
> Title:
> memory address over 0x2000_7ffc is not accessible in mps2-an505
>
> Status in QEMU:
> New
>
> Bug description:
> I currently run qemu with the following options
> `qemu-system-aarch64 -machine mps2-an505 -cpu cortex-m33 -m 16`
>
> For some reason, memory address over 0x2000_7ffc is not accessible.
> It can be tested in gdb as follow.
>
> (gdb) x/x 0x20007ffc
> 0x20007ffc: 0x00000000
> (gdb) x/x 0x20007ffd
> 0x20007ffd: Cannot access memory at address 0x20007ffd
> (gdb) x/x 0x20008000
> 0x20008000: Cannot access memory at address 0x20008000
>
> To manage notifications about this bug go to:
> https://bugs.launchpad.net/qemu/+bug/1897680/+subscriptions
>
|