Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
T
tools
Manage
Activity
Members
Plan
Wiki
Code
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Deploy
Releases
Package Registry
Model registry
Operate
Terraform modules
Analyze
Contributor analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
CodeLinaro
public-release-test-restored
platform
vendor
qcom-opensource
tools
Commits
311fef1a
Commit
311fef1a
authored
11 years ago
by
Linux Build Service Account
Committed by
Gerrit - the friendly Code Review server
11 years ago
Browse files
Options
Downloads
Plain Diff
Merge "linux-ramdump-parser-v2: Refactor board specification"
parents
862b36cb
8ecb7f56
No related branches found
Branches containing commit
No related tags found
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
linux-ramdump-parser-v2/boards.py
+261
-0
261 additions, 0 deletions
linux-ramdump-parser-v2/boards.py
linux-ramdump-parser-v2/ramdump.py
+32
-367
32 additions, 367 deletions
linux-ramdump-parser-v2/ramdump.py
with
293 additions
and
367 deletions
linux-ramdump-parser-v2/boards.py
0 → 100644
+
261
−
0
View file @
311fef1a
# Copyright (c) 2014, The Linux Foundation. All rights reserved.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 and
# only version 2 as published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
class
Board
(
object
):
"""
Class to describe a board the parser knows how to parse
socid = shared id unique to a board type
board_num = human readable board number indicating the board type
(e.g. 8960, 8974)
ram_start = start of the DDR
imem_start = start of location in which the watchdog address is stored
smem_addr = start of the shared memory region
phys_offset = physical offset of the board (CONFIG_PHYS_OFFSET)
wdog_addr = absolute physical address to check for FIQs
imem_file_name = file name corresponding to imem_start
It is not recommended to create instances of this class directly.
Instead, classes should derive from this class and set fiels appropriately
for each socid
"""
def
__init__
(
self
):
self
.
socid
=
-
1
self
.
board_num
=
-
1
self
.
cpu
=
'
UNKNOWN
'
self
.
ram_start
=
0
self
.
imem_start
=
0
self
.
smem_addr
=
0
self
.
phys_offset
=
0
self
.
wdog_addr
=
0
self
.
imem_file_name
=
None
class
Board8960
(
Board
):
def
__init__
(
self
,
socid
,
board_num
):
super
(
Board8960
,
self
).
__init__
()
self
.
socid
=
socid
self
.
board_num
=
board_num
self
.
cpu
=
'
KRAIT
'
self
.
ram_start
=
0x80000000
self
.
imem_start
=
0x2a03f000
self
.
smem_addr
=
0x0
self
.
phys_offset
=
0x80200000
self
.
wdog_addr
=
0x2a03f658
self
.
imem_file_name
=
'
IMEM_C.BIN
'
class
Board8625
(
Board
):
def
__init__
(
self
,
socid
,
board_num
):
super
(
Board8625
,
self
).
__init__
()
self
.
socid
=
socid
self
.
board_num
=
board_num
self
.
cpu
=
'
SCORPION
'
self
.
ram_start
=
0
self
.
imem_start
=
0x0
self
.
smem_addr
=
0x00100000
self
.
phys_offset
=
0x00200000
class
Board9615
(
Board
):
def
__init__
(
self
,
socid
):
super
(
Board9615
,
self
).
__init__
()
self
.
socid
=
socid
self
.
board_num
=
9615
self
.
cpu
=
'
CORTEXA5
'
self
.
ram_start
=
0x40000000
self
.
imem_start
=
0
self
.
smem_addr
=
0x0
self
.
phys_offset
=
0x40800000
class
Board8974
(
Board
):
def
__init__
(
self
,
socid
,
board_num
=
8974
):
super
(
Board8974
,
self
).
__init__
()
self
.
socid
=
socid
self
.
board_num
=
board_num
self
.
cpu
=
'
KRAIT
'
self
.
ram_start
=
0x0
self
.
imem_start
=
0xfe800000
self
.
smem_addr
=
0xfa00000
self
.
phys_offset
=
0x0
self
.
wdog_addr
=
0xfe805658
self
.
imem_file_name
=
'
OCIMEM.BIN
'
class
Board9625
(
Board
):
def
__init__
(
self
,
socid
):
super
(
Board9625
,
self
).
__init__
()
self
.
socid
=
socid
self
.
board_num
=
9625
self
.
cpu
=
'
CORTEXA5
'
self
.
ram_start
=
0x0
self
.
imem_start
=
0xfe800000
self
.
smem_addr
=
0x0
self
.
phys_offset
=
0x200000
self
.
wdog_addr
=
0xfe805658
self
.
imem_file_name
=
'
OCIMEM.BIN
'
class
Board8626
(
Board
):
def
__init__
(
self
,
socid
,
board_num
=
8626
):
super
(
Board8626
,
self
).
__init__
()
self
.
socid
=
socid
self
.
board_num
=
board_num
self
.
cpu
=
'
CORTEXA7
'
self
.
ram_start
=
0x0
self
.
imem_start
=
0xfe800000
self
.
smem_addr
=
0x0fa00000
self
.
phys_offset
=
0x0
self
.
wdog_addr
=
0xfe805658
self
.
imem_file_name
=
'
OCIMEM.BIN
'
class
Board8610
(
Board
):
def
__init__
(
self
,
socid
,
board_num
=
8610
):
super
(
Board8610
,
self
).
__init__
()
self
.
socid
=
socid
self
.
board_num
=
board_num
self
.
cpu
=
'
CORTEXA7
'
self
.
ram_start
=
0x0
self
.
imem_start
=
0xfe800000
self
.
smem_addr
=
0x0d900000
self
.
phys_offset
=
0x0
self
.
wdog_addr
=
0xfe805658
self
.
imem_file_name
=
'
OCIMEM.BIN
'
class
Board9635
(
Board
):
def
__init__
(
self
,
socid
):
super
(
Board9635
,
self
).
__init__
()
self
.
socid
=
socid
self
.
board_num
=
9635
self
.
cpu
=
'
CORTEXA7
'
self
.
ram_start
=
0x0
self
.
smem_addr
=
0x1100000
self
.
phys_offset
=
0
self
.
wdog_addr
=
0xfe805658
self
.
imem_file_name
=
'
OCIMEM.BIN
'
boards
=
[]
boards
.
append
(
Board8974
(
socid
=
126
))
boards
.
append
(
Board8974
(
socid
=
184
))
boards
.
append
(
Board8974
(
socid
=
185
))
boards
.
append
(
Board8974
(
socid
=
186
))
boards
.
append
(
Board8974
(
socid
=
208
))
boards
.
append
(
Board8974
(
socid
=
211
))
boards
.
append
(
Board8974
(
socid
=
214
))
boards
.
append
(
Board8974
(
socid
=
217
))
boards
.
append
(
Board8974
(
socid
=
209
))
boards
.
append
(
Board8974
(
socid
=
212
))
boards
.
append
(
Board8974
(
socid
=
215
))
boards
.
append
(
Board8974
(
socid
=
218
))
boards
.
append
(
Board8974
(
socid
=
194
))
boards
.
append
(
Board8974
(
socid
=
210
))
boards
.
append
(
Board8974
(
socid
=
213
))
boards
.
append
(
Board8974
(
socid
=
216
))
boards
.
append
(
Board9625
(
socid
=
134
))
boards
.
append
(
Board9625
(
socid
=
148
))
boards
.
append
(
Board9625
(
socid
=
149
))
boards
.
append
(
Board9625
(
socid
=
150
))
boards
.
append
(
Board9625
(
socid
=
151
))
boards
.
append
(
Board9625
(
socid
=
152
))
boards
.
append
(
Board9625
(
socid
=
173
))
boards
.
append
(
Board9625
(
socid
=
174
))
boards
.
append
(
Board9625
(
socid
=
175
))
boards
.
append
(
Board8626
(
socid
=
145
))
boards
.
append
(
Board8626
(
socid
=
158
))
boards
.
append
(
Board8626
(
socid
=
159
))
boards
.
append
(
Board8626
(
socid
=
198
))
boards
.
append
(
Board8626
(
socid
=
199
))
boards
.
append
(
Board8626
(
socid
=
200
))
boards
.
append
(
Board8626
(
socid
=
205
))
boards
.
append
(
Board8626
(
socid
=
219
))
boards
.
append
(
Board8626
(
socid
=
220
))
boards
.
append
(
Board8626
(
socid
=
222
))
boards
.
append
(
Board8626
(
socid
=
223
))
boards
.
append
(
Board8626
(
socid
=
224
))
boards
.
append
(
Board8610
(
socid
=
147
))
boards
.
append
(
Board8610
(
socid
=
161
))
boards
.
append
(
Board8610
(
socid
=
162
))
boards
.
append
(
Board8610
(
socid
=
163
))
boards
.
append
(
Board8610
(
socid
=
164
))
boards
.
append
(
Board8610
(
socid
=
165
))
boards
.
append
(
Board8610
(
socid
=
166
))
boards
.
append
(
Board8974
(
socid
=
178
,
board_num
=
8084
))
boards
.
append
(
Board9635
(
socid
=
187
))
boards
.
append
(
Board9635
(
socid
=
227
))
boards
.
append
(
Board9635
(
socid
=
228
))
boards
.
append
(
Board9635
(
socid
=
229
))
boards
.
append
(
Board9635
(
socid
=
230
))
boards
.
append
(
Board9635
(
socid
=
231
))
boards
.
append
(
Board8960
(
socid
=
87
,
board_num
=
8960
))
boards
.
append
(
Board8960
(
socid
=
122
,
board_num
=
8960
))
boards
.
append
(
Board8960
(
socid
=
123
,
board_num
=
8260
))
boards
.
append
(
Board8960
(
socid
=
124
,
board_num
=
8060
))
boards
.
append
(
Board8960
(
socid
=
109
,
board_num
=
8064
))
boards
.
append
(
Board8960
(
socid
=
130
,
board_num
=
8064
))
boards
.
append
(
Board8960
(
socid
=
153
,
board_num
=
8064
))
boards
.
append
(
Board8960
(
socid
=
116
,
board_num
=
8930
))
boards
.
append
(
Board8960
(
socid
=
117
,
board_num
=
8930
))
boards
.
append
(
Board8960
(
socid
=
118
,
board_num
=
8930
))
boards
.
append
(
Board8960
(
socid
=
119
,
board_num
=
8930
))
boards
.
append
(
Board8960
(
socid
=
154
,
board_num
=
8930
))
boards
.
append
(
Board8960
(
socid
=
155
,
board_num
=
8930
))
boards
.
append
(
Board8960
(
socid
=
156
,
board_num
=
8930
))
boards
.
append
(
Board8960
(
socid
=
157
,
board_num
=
8930
))
boards
.
append
(
Board8960
(
socid
=
160
,
board_num
=
8930
))
boards
.
append
(
Board8960
(
socid
=
120
,
board_num
=
8627
))
boards
.
append
(
Board8960
(
socid
=
121
,
board_num
=
8627
))
boards
.
append
(
Board8960
(
socid
=
138
,
board_num
=
8960
))
boards
.
append
(
Board8960
(
socid
=
139
,
board_num
=
8960
))
boards
.
append
(
Board8960
(
socid
=
140
,
board_num
=
8960
))
boards
.
append
(
Board8960
(
socid
=
141
,
board_num
=
8960
))
boards
.
append
(
Board8960
(
socid
=
142
,
board_num
=
8930
))
boards
.
append
(
Board8960
(
socid
=
143
,
board_num
=
8630
))
boards
.
append
(
Board8960
(
socid
=
144
,
board_num
=
8630
))
boards
.
append
(
Board9615
(
socid
=
104
))
boards
.
append
(
Board9615
(
socid
=
105
))
boards
.
append
(
Board9615
(
socid
=
106
))
boards
.
append
(
Board9615
(
socid
=
107
))
boards
.
append
(
Board8625
(
socid
=
88
,
board_num
=
8625
))
boards
.
append
(
Board8625
(
socid
=
89
,
board_num
=
8625
))
boards
.
append
(
Board8625
(
socid
=
96
,
board_num
=
8625
))
boards
.
append
(
Board8625
(
socid
=
90
,
board_num
=
8625
))
boards
.
append
(
Board8625
(
socid
=
91
,
board_num
=
8625
))
boards
.
append
(
Board8625
(
socid
=
92
,
board_num
=
8625
))
boards
.
append
(
Board8625
(
socid
=
97
,
board_num
=
8625
))
boards
.
append
(
Board8625
(
socid
=
98
,
board_num
=
8625
))
boards
.
append
(
Board8625
(
socid
=
99
,
board_num
=
8625
))
boards
.
append
(
Board8625
(
socid
=
100
,
board_num
=
8625
))
boards
.
append
(
Board8625
(
socid
=
101
,
board_num
=
8625
))
boards
.
append
(
Board8625
(
socid
=
102
,
board_num
=
8625
))
boards
.
append
(
Board8625
(
socid
=
103
,
board_num
=
8625
))
boards
.
append
(
Board8625
(
socid
=
127
,
board_num
=
8625
))
boards
.
append
(
Board8625
(
socid
=
128
,
board_num
=
8625
))
boards
.
append
(
Board8625
(
socid
=
129
,
board_num
=
8625
))
boards
.
append
(
Board8625
(
socid
=
131
,
board_num
=
8625
))
boards
.
append
(
Board8625
(
socid
=
132
,
board_num
=
8625
))
boards
.
append
(
Board8625
(
socid
=
133
,
board_num
=
8625
))
boards
.
append
(
Board8625
(
socid
=
135
,
board_num
=
8625
))
def
get_supported_boards
():
"""
Called by other part of the code to get a list of boards
"""
return
boards
def
get_supported_ids
():
"""
Returns a list of ids to be used with --force-hardware
"""
return
list
(
set
(
b
.
board_num
for
b
in
boards
))
This diff is collapsed.
Click to expand it.
linux-ramdump-parser-v2/ramdump.py
+
32
−
367
View file @
311fef1a
...
...
@@ -15,6 +15,7 @@ import os
import
struct
import
gzip
import
functools
from
boards
import
get_supported_boards
,
get_supported_ids
from
tempfile
import
NamedTemporaryFile
import
gdbmi
...
...
@@ -27,323 +28,6 @@ LR = 14
PC
=
15
THREAD_SIZE
=
8192
HARDWARE_ID_IDX
=
0
MEMORY_START_IDX
=
1
PHYS_OFFSET_IDX
=
2
WATCHDOG_BARK_OFFSET_IDX
=
3
IMEM_START_IDX
=
4
CPU_TYPE
=
5
IMEM_FILENAME
=
6
VERSION_COMPARE
=
7
smem_offsets
=
[
0
,
# 8960/9x15 family and earlier
0x0FA00000
,
# 8974
0x00100000
,
0x0D900000
,
# 8610
0x01100000
,
# 9635
]
hw_ids
=
[
(
8660
,
0x40000000
,
0x40200000
,
0x2a05f658
,
0x2a05f000
,
'
SCORPION
'
,
'
IMEM_C.BIN
'
,
None
),
(
8960
,
0x80000000
,
0x80200000
,
0x2a03f658
,
0x2a03f000
,
'
KRAIT
'
,
'
IMEM_C.BIN
'
,
None
),
(
8064
,
0x80000000
,
0x80200000
,
0x2a03f658
,
0x2a03f000
,
'
KRAIT
'
,
'
IMEM_C.BIN
'
,
None
),
(
9615
,
0x40000000
,
0x40800000
,
0x0
,
0x0
,
'
CORTEXA5
'
,
None
,
None
),
(
8974
,
0x0
,
0x0
,
0xfe805658
,
0xfe800000
,
'
KRAIT
'
,
'
OCIMEM.BIN
'
,
None
),
(
9625
,
0x0
,
0x00200000
,
0xfc42b658
,
0xfc428000
,
'
CORTEXA5
'
,
'
MSGRAM.BIN
'
,
1
),
(
9625
,
0x0
,
0x00200000
,
0xfe805658
,
0xfe800000
,
'
CORTEXA5
'
,
'
OCIMEM.BIN
'
,
2
),
(
8625
,
0x0
,
0x00200000
,
0x0
,
0x0
,
'
SCORPION
'
,
None
,
None
),
(
8226
,
0x0
,
0x00000000
,
0xfe805658
,
0xfe800000
,
'
CORTEXA7
'
,
'
OCIMEM.BIN
'
,
None
),
(
8610
,
0x0
,
0x00000000
,
0xfe805658
,
0xfe800000
,
'
CORTEXA7
'
,
'
OCIMEM.BIN
'
,
None
),
(
8084
,
0x0
,
0x0
,
0xfe805658
,
0xfe800000
,
'
KRAIT
'
,
'
OCIMEM.BIN
'
,
None
),
(
9635
,
0x0
,
0x00000000
,
0xfe805658
,
0xfe800000
,
'
CORTEXA7
'
,
'
OCIMEM.BIN
'
,
None
),
(
8092
,
0x0
,
0x0
,
0xfe805658
,
0xfe800000
,
'
KRAIT
'
,
'
OCIMEM.BIN
'
,
None
),
]
MSM_CPU_UNKNOWN
=
0
MSM_CPU_7X01
=
-
1
MSM_CPU_7X25
=
-
1
MSM_CPU_7X27
=
-
1
MSM_CPU_8X50
=
-
1
MSM_CPU_8X50A
=
-
1
MSM_CPU_7X30
=
-
1
MSM_CPU_8X55
=
-
1
MSM_CPU_8X60
=
8660
MSM_CPU_8960
=
8960
MSM_CPU_8960AB
=
8960
MSM_CPU_7X27A
=
8625
FSM_CPU_9XXX
=
-
1
MSM_CPU_7X25A
=
8625
MSM_CPU_7X25AA
=
8625
MSM_CPU_7X25AB
=
8625
MSM_CPU_8064
=
8064
MSM_CPU_8064AB
=
8064
MSM_CPU_8930
=
8960
MSM_CPU_8930AA
=
8960
MSM_CPU_8930AB
=
8960
MSM_CPU_7X27AA
=
-
1
MSM_CPU_9615
=
9615
MSM_CPU_8974
=
8974
MSM_CPU_8974PRO_AA
=
8974
MSM_CPU_8974PRO_AB
=
8974
MSM_CPU_8974PRO_AC
=
8974
MSM_CPU_8627
=
8960
MSM_CPU_8625
=
9615
MSM_CPU_9625
=
9625
MSM_CPU_8226
=
8226
MSM_CPU_8610
=
8610
MSM_CPU_8084
=
8084
MSM_CPU_KRYPTON
=
9635
MSM_CPU_8092
=
8092
# id, cpu, cpuname
cpu_of_id
=
[
# 7x01 IDs
(
1
,
MSM_CPU_7X01
,
'
MSM_CPU_7X01
'
),
(
16
,
MSM_CPU_7X01
,
'
MSM_CPU_7X01
'
),
(
17
,
MSM_CPU_7X01
,
'
MSM_CPU_7X01
'
),
(
18
,
MSM_CPU_7X01
,
'
MSM_CPU_7X01
'
),
(
19
,
MSM_CPU_7X01
,
'
MSM_CPU_7X01
'
),
(
23
,
MSM_CPU_7X01
,
'
MSM_CPU_7X01
'
),
(
25
,
MSM_CPU_7X01
,
'
MSM_CPU_7X01
'
),
(
26
,
MSM_CPU_7X01
,
'
MSM_CPU_7X01
'
),
(
32
,
MSM_CPU_7X01
,
'
MSM_CPU_7X01
'
),
(
33
,
MSM_CPU_7X01
,
'
MSM_CPU_7X01
'
),
(
34
,
MSM_CPU_7X01
,
'
MSM_CPU_7X01
'
),
(
35
,
MSM_CPU_7X01
,
'
MSM_CPU_7X01
'
),
# 7x25 IDs
(
20
,
MSM_CPU_7X25
,
'
MSM_CPU_7X25
'
),
(
21
,
MSM_CPU_7X25
,
'
MSM_CPU_7X25
'
),
# 7225
(
24
,
MSM_CPU_7X25
,
'
MSM_CPU_7X25
'
),
# 7525
(
27
,
MSM_CPU_7X25
,
'
MSM_CPU_7X25
'
),
# 7625
(
39
,
MSM_CPU_7X25
,
'
MSM_CPU_7X25
'
),
(
40
,
MSM_CPU_7X25
,
'
MSM_CPU_7X25
'
),
(
41
,
MSM_CPU_7X25
,
'
MSM_CPU_7X25
'
),
(
42
,
MSM_CPU_7X25
,
'
MSM_CPU_7X25
'
),
(
62
,
MSM_CPU_7X25
,
'
MSM_CPU_7X25
'
),
# 7625-1
(
63
,
MSM_CPU_7X25
,
'
MSM_CPU_7X25
'
),
# 7225-1
(
66
,
MSM_CPU_7X25
,
'
MSM_CPU_7X25
'
),
# 7225-2
# 7x27 IDs
(
43
,
MSM_CPU_7X27
,
'
MSM_CPU_7X27
'
),
(
44
,
MSM_CPU_7X27
,
'
MSM_CPU_7X27
'
),
(
61
,
MSM_CPU_7X27
,
'
MSM_CPU_7X27
'
),
(
67
,
MSM_CPU_7X27
,
'
MSM_CPU_7X27
'
),
# 7227-1
(
68
,
MSM_CPU_7X27
,
'
MSM_CPU_7X27
'
),
# 7627-1
(
69
,
MSM_CPU_7X27
,
'
MSM_CPU_7X27
'
),
# 7627-2
# 8x50 IDs
(
30
,
MSM_CPU_8X50
,
'
MSM_CPU_8X50
'
),
(
36
,
MSM_CPU_8X50
,
'
MSM_CPU_8X50
'
),
(
37
,
MSM_CPU_8X50
,
'
MSM_CPU_8X50
'
),
(
38
,
MSM_CPU_8X50
,
'
MSM_CPU_8X50
'
),
# 7x30 IDs
(
59
,
MSM_CPU_7X30
,
'
MSM_CPU_7X30
'
),
(
60
,
MSM_CPU_7X30
,
'
MSM_CPU_7X30
'
),
# 8x55 IDs
(
74
,
MSM_CPU_8X55
,
'
MSM_CPU_8X55
'
),
(
75
,
MSM_CPU_8X55
,
'
MSM_CPU_8X55
'
),
(
85
,
MSM_CPU_8X55
,
'
MSM_CPU_8X55
'
),
# 8x60 IDs
(
70
,
MSM_CPU_8X60
,
'
MSM_CPU_8X60
'
),
(
71
,
MSM_CPU_8X60
,
'
MSM_CPU_8X60
'
),
(
86
,
MSM_CPU_8X60
,
'
MSM_CPU_8X60
'
),
# 8960 IDs
(
87
,
MSM_CPU_8960
,
'
MSM_CPU_8960
'
),
# 7x25A IDs
(
88
,
MSM_CPU_7X25A
,
'
MSM_CPU_7X25A
'
),
(
89
,
MSM_CPU_7X25A
,
'
MSM_CPU_7X25A
'
),
(
96
,
MSM_CPU_7X25A
,
'
MSM_CPU_7X25A
'
),
# 7x27A IDs
(
90
,
MSM_CPU_7X27A
,
'
MSM_CPU_7X27A
'
),
(
91
,
MSM_CPU_7X27A
,
'
MSM_CPU_7X27A
'
),
(
92
,
MSM_CPU_7X27A
,
'
MSM_CPU_7X27A
'
),
(
97
,
MSM_CPU_7X27A
,
'
MSM_CPU_7X27A
'
),
# FSM9xxx ID
(
94
,
FSM_CPU_9XXX
,
'
FSM_CPU_9XXX
'
),
(
95
,
FSM_CPU_9XXX
,
'
FSM_CPU_9XXX
'
),
# 7x25AA ID
(
98
,
MSM_CPU_7X25AA
,
'
MSM_CPU_7X25AA
'
),
(
99
,
MSM_CPU_7X25AA
,
'
MSM_CPU_7X25AA
'
),
(
100
,
MSM_CPU_7X25AA
,
'
MSM_CPU_7X25AA
'
),
# 7x27AA ID
(
101
,
MSM_CPU_7X27AA
,
'
MSM_CPU_7X27AA
'
),
(
102
,
MSM_CPU_7X27AA
,
'
MSM_CPU_7X27AA
'
),
(
103
,
MSM_CPU_7X27AA
,
'
MSM_CPU_7X27AA
'
),
# 9x15 ID
(
104
,
MSM_CPU_9615
,
'
MSM_CPU_9615
'
),
(
105
,
MSM_CPU_9615
,
'
MSM_CPU_9615
'
),
(
106
,
MSM_CPU_9615
,
'
MSM_CPU_9615
'
),
(
107
,
MSM_CPU_9615
,
'
MSM_CPU_9615
'
),
# 8064 IDs
(
109
,
MSM_CPU_8064
,
'
MSM_CPU_8064
'
),
(
130
,
MSM_CPU_8064
,
'
MSM_CPU_8064
'
),
# 8930 IDs
(
116
,
MSM_CPU_8930
,
'
MSM_CPU_8930
'
),
(
117
,
MSM_CPU_8930
,
'
MSM_CPU_8930
'
),
(
118
,
MSM_CPU_8930
,
'
MSM_CPU_8930
'
),
(
119
,
MSM_CPU_8930
,
'
MSM_CPU_8930
'
),
# 8627 IDs
(
120
,
MSM_CPU_8627
,
'
MSM_CPU_8627
'
),
(
121
,
MSM_CPU_8627
,
'
MSM_CPU_8627
'
),
# 8660A ID
(
122
,
MSM_CPU_8960
,
'
MSM_CPU_8960
'
),
# 8260A ID
(
123
,
MSM_CPU_8960
,
'
8260A
'
),
# 8060A ID
(
124
,
MSM_CPU_8960
,
'
8060A
'
),
# Copper IDs
(
126
,
MSM_CPU_8974
,
'
MSM_CPU_8974
'
),
(
184
,
MSM_CPU_8974
,
'
MSM_CPU_8974
'
),
(
185
,
MSM_CPU_8974
,
'
MSM_CPU_8974
'
),
(
186
,
MSM_CPU_8974
,
'
MSM_CPU_8974
'
),
# 8974 PRO AA IDs
(
208
,
MSM_CPU_8974PRO_AA
,
'
MSM_CPU_8974PRO_AA
'
),
(
211
,
MSM_CPU_8974PRO_AA
,
'
MSM_CPU_8974PRO_AA
'
),
(
214
,
MSM_CPU_8974PRO_AA
,
'
MSM_CPU_8974PRO_AA
'
),
(
217
,
MSM_CPU_8974PRO_AA
,
'
MSM_CPU_8974PRO_AA
'
),
# 8974 PRO AB IDs
(
209
,
MSM_CPU_8974PRO_AB
,
'
MSM_CPU_8974PRO_AB
'
),
(
212
,
MSM_CPU_8974PRO_AB
,
'
MSM_CPU_8974PRO_AB
'
),
(
215
,
MSM_CPU_8974PRO_AB
,
'
MSM_CPU_8974PRO_AB
'
),
(
218
,
MSM_CPU_8974PRO_AB
,
'
MSM_CPU_8974PRO_AB
'
),
# 8974 PRO AC IDs
(
194
,
MSM_CPU_8974PRO_AC
,
'
MSM_CPU_8974PRO_AC
'
),
(
210
,
MSM_CPU_8974PRO_AC
,
'
MSM_CPU_8974PRO_AC
'
),
(
213
,
MSM_CPU_8974PRO_AC
,
'
MSM_CPU_8974PRO_AC
'
),
(
216
,
MSM_CPU_8974PRO_AC
,
'
MSM_CPU_8974PRO_AC
'
),
# 8625 IDs
(
127
,
MSM_CPU_8625
,
'
MSM_CPU_8625
'
),
(
128
,
MSM_CPU_8625
,
'
MSM_CPU_8625
'
),
(
129
,
MSM_CPU_8625
,
'
MSM_CPU_8625
'
),
# 8064 MPQ ID */
(
130
,
MSM_CPU_8064
,
'
MSM_CPU_8064
'
),
# 7x25AB IDs
(
131
,
MSM_CPU_7X25AB
,
'
MSM_CPU_7X25AB
'
),
(
132
,
MSM_CPU_7X25AB
,
'
MSM_CPU_7X25AB
'
),
(
133
,
MSM_CPU_7X25AB
,
'
MSM_CPU_7X25AB
'
),
(
135
,
MSM_CPU_7X25AB
,
'
MSM_CPU_7X25AB
'
),
# 9625 IDs
(
134
,
MSM_CPU_9625
,
'
MSM_CPU_9625
'
),
(
148
,
MSM_CPU_9625
,
'
MSM_CPU_9625
'
),
(
149
,
MSM_CPU_9625
,
'
MSM_CPU_9625
'
),
(
150
,
MSM_CPU_9625
,
'
MSM_CPU_9625
'
),
(
151
,
MSM_CPU_9625
,
'
MSM_CPU_9625
'
),
(
152
,
MSM_CPU_9625
,
'
MSM_CPU_9625
'
),
(
173
,
MSM_CPU_9625
,
'
MSM_CPU_9625
'
),
(
174
,
MSM_CPU_9625
,
'
MSM_CPU_9625
'
),
(
175
,
MSM_CPU_9625
,
'
MSM_CPU_9625
'
),
# 8960AB IDs
(
138
,
MSM_CPU_8960AB
,
'
MSM_CPU_8960AB
'
),
(
139
,
MSM_CPU_8960AB
,
'
MSM_CPU_8960AB
'
),
(
140
,
MSM_CPU_8960AB
,
'
MSM_CPU_8960AB
'
),
(
141
,
MSM_CPU_8960AB
,
'
MSM_CPU_8960AB
'
),
# 8930AA IDs
(
142
,
MSM_CPU_8930AA
,
'
MSM_CPU_8930AA
'
),
(
143
,
MSM_CPU_8930AA
,
'
MSM_CPU_8930AA
'
),
(
144
,
MSM_CPU_8930AA
,
'
MSM_CPU_8930AA
'
),
# 8226 IDx
(
145
,
MSM_CPU_8226
,
'
MSM_CPU_8226
'
),
(
158
,
MSM_CPU_8226
,
'
MSM_CPU_8226
'
),
(
159
,
MSM_CPU_8226
,
'
MSM_CPU_8226
'
),
(
198
,
MSM_CPU_8226
,
'
MSM_CPU_8226
'
),
(
199
,
MSM_CPU_8226
,
'
MSM_CPU_8226
'
),
(
200
,
MSM_CPU_8226
,
'
MSM_CPU_8226
'
),
(
205
,
MSM_CPU_8226
,
'
MSM_CPU_8226
'
),
(
219
,
MSM_CPU_8226
,
'
MSM_CPU_8226
'
),
(
220
,
MSM_CPU_8226
,
'
MSM_CPU_8226
'
),
(
221
,
MSM_CPU_8226
,
'
MSM_CPU_8226
'
),
(
222
,
MSM_CPU_8226
,
'
MSM_CPU_8226
'
),
(
223
,
MSM_CPU_8226
,
'
MSM_CPU_8226
'
),
(
224
,
MSM_CPU_8226
,
'
MSM_CPU_8226
'
),
# 8610 IDx
(
147
,
MSM_CPU_8610
,
'
MSM_CPU_8610
'
),
(
161
,
MSM_CPU_8610
,
'
MSM_CPU_8610
'
),
(
162
,
MSM_CPU_8610
,
'
MSM_CPU_8610
'
),
(
163
,
MSM_CPU_8610
,
'
MSM_CPU_8610
'
),
(
164
,
MSM_CPU_8610
,
'
MSM_CPU_8610
'
),
(
165
,
MSM_CPU_8610
,
'
MSM_CPU_8610
'
),
(
166
,
MSM_CPU_8610
,
'
MSM_CPU_8610
'
),
# 8064AB IDs
(
153
,
MSM_CPU_8064AB
,
'
MSM_CPU_8064AB
'
),
# 8930AB IDs
(
154
,
MSM_CPU_8930AB
,
'
MSM_CPU_8930AB
'
),
(
155
,
MSM_CPU_8930AB
,
'
MSM_CPU_8930AB
'
),
(
156
,
MSM_CPU_8930AB
,
'
MSM_CPU_8930AB
'
),
(
157
,
MSM_CPU_8930AB
,
'
MSM_CPU_8930AB
'
),
(
160
,
MSM_CPU_8930AA
,
'
MSM_CPU_8930AA
'
),
# 8084 IDs
(
178
,
MSM_CPU_8084
,
'
MSM_CPU_8084
'
),
# 9635 IDs
(
187
,
MSM_CPU_KRYPTON
,
'
MSM_CPU_KRYPTON
'
),
(
227
,
MSM_CPU_KRYPTON
,
'
MSM_CPU_KRYPTON
'
),
(
228
,
MSM_CPU_KRYPTON
,
'
MSM_CPU_KRYPTON
'
),
(
229
,
MSM_CPU_KRYPTON
,
'
MSM_CPU_KRYPTON
'
),
(
230
,
MSM_CPU_KRYPTON
,
'
MSM_CPU_KRYPTON
'
),
(
231
,
MSM_CPU_KRYPTON
,
'
MSM_CPU_KRYPTON
'
),
(
146
,
MSM_CPU_8092
,
'
MSM_CPU_8092
'
),
# Uninitialized IDs are not known to run Linux.
# MSM_CPU_UNKNOWN is set to 0 to ensure these IDs are
# considered as unknown CPU.
]
socinfo_v1
=
functools
.
reduce
(
lambda
x
,
y
:
x
+
y
,
[
'
I
'
,
# format
'
I
'
,
# id
'
I
'
,
# version
])
launch_config_str
=
'
OS=
\n
ID=T32_1000002
\n
TMP=C:
\\
TEMP
\n
SYS=C:
\\
T32
\n
HELP=C:
\\
T32
\\
pdf
\n\n
PBI=SIM
\n
SCREEN=
\n
FONT=SMALL
\n
HEADER=Trace32-ScorpionSimulator
\n
PRINTER=WINDOWS
'
# The smem code is very stable and unlikely to go away or be changed.
...
...
@@ -994,19 +678,6 @@ class RamDump():
else
:
return
self
.
read_word
(
self
.
tz_addr
,
False
)
def
find_hw_id
(
self
,
socinfo_id
,
version
):
if
self
.
hw_version
is
not
None
:
version
=
self
.
hw_version
for
cpuid
in
cpu_of_id
:
if
socinfo_id
==
cpuid
[
0
]:
for
hwid
in
hw_ids
:
if
cpuid
[
1
]
==
hwid
[
HARDWARE_ID_IDX
]:
if
hwid
[
VERSION_COMPARE
]
is
not
None
and
hwid
[
VERSION_COMPARE
]
!=
version
:
continue
return
hwid
return
None
def
get_hw_id
(
self
):
heap_toc_offset
=
self
.
field_offset
(
'
struct smem_shared
'
,
'
heap_toc
'
)
if
heap_toc_offset
is
None
:
...
...
@@ -1024,29 +695,32 @@ class RamDump():
socinfo_id
=
-
1
socinfo_version
=
0
socinfo_build_id
=
'
DUMMY
'
hwid
=
None
chosen_board
=
None
boards
=
get_supported_boards
()
if
(
self
.
hw_id
is
None
):
for
smem_offset
in
smem_offsets
:
socinfo_start_addr
=
self
.
ebi_files
[
0
][
1
]
+
smem_offset
+
heap_toc_offset
+
smem_heap_entry_size
*
SMEM_HW_SW_BUILD_ID
+
offset_offset
for
board
in
boards
:
socinfo_start_addr
=
board
.
ram_start
+
board
.
smem_addr
+
heap_toc_offset
+
smem_heap_entry_size
*
SMEM_HW_SW_BUILD_ID
+
offset_offset
soc_start
=
self
.
read_word
(
socinfo_start_addr
,
False
)
if
soc_start
is
None
:
continue
socinfo_start
=
self
.
ebi_files
[
0
][
1
]
+
smem_offset
+
soc_start
socinfo_start
=
board
.
ram_start
+
board
.
smem_addr
+
soc_start
socinfo_format
=
self
.
read_word
(
socinfo_start
,
False
)
socinfo_id
=
self
.
read_word
(
socinfo_start
+
4
,
False
)
if
socinfo_id
!=
board
.
socid
:
continue
socinfo_format
=
self
.
read_word
(
socinfo_start
,
False
)
socinfo_version
=
self
.
read_word
(
socinfo_start
+
8
,
False
)
socinfo_build_id
=
self
.
read_cstring
(
socinfo_start
+
12
,
BUILD_ID_LENGTH
,
False
)
if
socinfo_id
is
not
None
and
socinfo_version
is
not
None
:
hwid
=
self
.
find_hw_id
(
socinfo_id
,
socinfo_version
>>
16
)
if
(
hwid
is
not
None
):
break
if
(
hwid
is
None
):
chosen_board
=
board
break
if
chosen_board
is
None
:
print_out_str
(
'
!!!! Could not find hardware
'
)
print_out_str
(
"
!!!! The SMEM didn
'
t match anything
"
)
print_out_str
(
...
...
@@ -1054,45 +728,36 @@ class RamDump():
sys
.
exit
(
1
)
else
:
hwid
=
None
for
a
in
hw_ids
:
if
self
.
hw_id
==
a
[
HARDWARE_ID_IDX
]
and
self
.
hw_version
==
a
[
VERSION_COMPARE
]:
for
board
in
boards
:
if
self
.
hw_id
==
board
.
board_num
:
print_out_str
(
'
!!! Hardware id found! The socinfo values given are bogus
'
)
print_out_str
(
'
!!! Proceed with caution!
'
)
hwid
=
a
chosen_board
=
board
break
if
hwi
d
is
None
:
if
chosen_boar
d
is
None
:
print_out_str
(
'
!!! A bogus hardware id was specified: {0}
'
.
format
(
self
.
hw_id
))
print_out_str
(
'
!!! Try passing one of these to --force-hardware.
'
)
print_out_str
(
'
!!! If a version is specified, pass the version with --force-version
'
)
for
a
in
hw_ids
:
if
a
[
VERSION_COMPARE
]
is
not
None
:
v
=
'
v{0}
'
.
format
(
a
[
VERSION_COMPARE
])
else
:
v
=
''
print_out_str
(
'
!!! {0}{1}
'
.
format
(
a
[
HARDWARE_ID_IDX
],
v
))
print_out_str
(
'
!!! Supported ids:
'
)
for
b
in
get_supported_ids
():
print_out_str
(
'
{0}
'
.
format
(
b
))
sys
.
exit
(
1
)
print_out_str
(
'
\n
Hardware match: {0}
'
.
format
(
hwid
[
HARDWARE_ID_IDX
]
))
print_out_str
(
'
\n
Hardware match: {0}
'
.
format
(
board
.
board_num
))
print_out_str
(
'
Socinfo id = {0}, version {1:x}.{2:x}
'
.
format
(
socinfo_id
,
socinfo_version
>>
16
,
socinfo_version
&
0xFFFF
))
print_out_str
(
'
Socinfo build = {0}
'
.
format
(
socinfo_build_id
))
print_out_str
(
'
Now setting phys_offset to {0:x}
'
.
format
(
hwid
[
PHYS_OFFSET_IDX
]
))
'
Now setting phys_offset to {0:x}
'
.
format
(
board
.
phys_offset
))
print_out_str
(
'
TZ address: {0:x}
'
.
format
(
hwid
[
WATCHDOG_BARK_OFFSET_IDX
]
))
self
.
phys_offset
=
hwid
[
PHYS_OFFSET_IDX
]
self
.
tz_addr
=
hwid
[
WATCHDOG_BARK_OFFSET_IDX
]
self
.
ebi_start
=
hwid
[
MEMORY_START_IDX
]
self
.
tz_start
=
hwid
[
IMEM_START_IDX
]
self
.
hw_id
=
hwid
[
HARDWARE_ID_IDX
]
self
.
cpu_type
=
hwid
[
CPU_TYPE
]
self
.
imem_fname
=
hwid
[
IMEM_FILENAME
]
'
TZ address: {0:x}
'
.
format
(
board
.
wdog_addr
))
self
.
phys_offset
=
board
.
phys_offset
self
.
tz_addr
=
board
.
wdog_addr
self
.
ebi_start
=
board
.
ram_start
self
.
tz_start
=
board
.
imem_start
self
.
hw_id
=
board
.
board_num
self
.
cpu_type
=
board
.
cpu
self
.
imem_fname
=
board
.
imem_file_name
return
True
def
virt_to_phys
(
self
,
virt
):
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment