Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
R
risc-v-qemu
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Iterations
Wiki
Requirements
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Locked files
Build
Pipelines
Jobs
Pipeline schedules
Test cases
Artifacts
Deploy
Releases
Package registry
Container registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Code review analytics
Issue analytics
Insights
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
Projekt Telematik SS23 QEMU
risc-v-qemu
Commits
bbc34d2a
Commit
bbc34d2a
authored
2 years ago
by
davip00
Browse files
Options
Downloads
Patches
Plain Diff
Register a dummy RAM region for ESP32-C3 so we can properly initialize all others
parent
bf911514
No related branches found
No related tags found
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
hw/riscv/esp32_c3.c
+6
-5
6 additions, 5 deletions
hw/riscv/esp32_c3.c
include/hw/riscv/esp32_c3.h
+2
-0
2 additions, 0 deletions
include/hw/riscv/esp32_c3.h
with
8 additions
and
5 deletions
hw/riscv/esp32_c3.c
+
6
−
5
View file @
bbc34d2a
...
@@ -32,6 +32,7 @@ static const struct MemmapEntry {
...
@@ -32,6 +32,7 @@ static const struct MemmapEntry {
hwaddr
base
;
hwaddr
base
;
hwaddr
size
;
hwaddr
size
;
}
esp32_c3_memmap
[]
=
{
}
esp32_c3_memmap
[]
=
{
[
ESP32_C3_DUMMY
]
=
{
0x3C800000
,
0x0000F
},
[
ESP32_C3_DROM
]
=
{
0x3FF00000
,
0x1FFFF
},
[
ESP32_C3_DROM
]
=
{
0x3FF00000
,
0x1FFFF
},
[
ESP32_C3_IROM
]
=
{
0x40000000
,
0x5FFFF
},
[
ESP32_C3_IROM
]
=
{
0x40000000
,
0x5FFFF
},
[
ESP32_C3_IRAM
]
=
{
0x4037C000
,
0x63FFF
},
[
ESP32_C3_IRAM
]
=
{
0x4037C000
,
0x63FFF
},
...
@@ -42,7 +43,7 @@ static const struct MemmapEntry {
...
@@ -42,7 +43,7 @@ static const struct MemmapEntry {
// Reset vector according to technical manual page 217
// Reset vector according to technical manual page 217
static
const
hwaddr
esp32_c3_entry
=
0x40000400
;
static
const
hwaddr
esp32_c3_entry
=
0x40000400
;
static
void
esp32_c3_setup_reset_vec
()
{
static
void
esp32_c3_setup_reset_vec
(
void
)
{
// TODO: Implement
// TODO: Implement
}
}
...
@@ -105,7 +106,8 @@ static void esp32_c3_machine_class_init(ObjectClass *klass, void *data)
...
@@ -105,7 +106,8 @@ static void esp32_c3_machine_class_init(ObjectClass *klass, void *data)
mc
->
desc
=
"RISC-V Board compatible with ES32-C3 SDK"
;
mc
->
desc
=
"RISC-V Board compatible with ES32-C3 SDK"
;
mc
->
init
=
esp32_c3_machine_state_init
;
mc
->
init
=
esp32_c3_machine_state_init
;
mc
->
default_cpu_type
=
TYPE_RISCV_CPU_ESP32_C3
;
mc
->
default_cpu_type
=
TYPE_RISCV_CPU_ESP32_C3
;
mc
->
default_ram_id
=
"riscv.esp32.c.dram"
;
// We have to pass something here, but want to initialize the RAM ourselves
mc
->
default_ram_id
=
"riscv.esp32.c.dummyram"
;
}
}
static
const
TypeInfo
esp32_c3_machine_type_info
=
{
static
const
TypeInfo
esp32_c3_machine_type_info
=
{
...
@@ -146,13 +148,12 @@ static void esp32_c3_soc_state_realize(DeviceState *dev, Error **errp)
...
@@ -146,13 +148,12 @@ static void esp32_c3_soc_state_realize(DeviceState *dev, Error **errp)
esp32_c3_memmap
[
ESP32_C3_IRAM
].
size
,
&
error_fatal
);
esp32_c3_memmap
[
ESP32_C3_IRAM
].
size
,
&
error_fatal
);
memory_region_add_subregion
(
sys_mem
,
esp32_c3_memmap
[
ESP32_C3_IRAM
].
base
,
memory_region_add_subregion
(
sys_mem
,
esp32_c3_memmap
[
ESP32_C3_IRAM
].
base
,
&
sss
->
iram
);
&
sss
->
iram
);
/* TODO: How is this supposed to work with the default RAM region?
We have to specify one (otherwise segfault), but then it can't be initialized here.
memory_region_init_ram
(
&
sss
->
dram
,
OBJECT
(
dev
),
"riscv.esp32.c.dram"
,
memory_region_init_ram
(
&
sss
->
dram
,
OBJECT
(
dev
),
"riscv.esp32.c.dram"
,
esp32_c3_memmap
[
ESP32_C3_DRAM
].
size
,
&
error_fatal
);
esp32_c3_memmap
[
ESP32_C3_DRAM
].
size
,
&
error_fatal
);
memory_region_add_subregion
(
sys_mem
,
esp32_c3_memmap
[
ESP32_C3_DRAM
].
base
,
memory_region_add_subregion
(
sys_mem
,
esp32_c3_memmap
[
ESP32_C3_DRAM
].
base
,
&
sss
->
dram
);
&
sss
->
dram
);
*/
// TODO: Do we need to register dummy RAM here?
}
}
static
void
esp32_c3_soc_class_init
(
ObjectClass
*
klass
,
void
*
data
)
static
void
esp32_c3_soc_class_init
(
ObjectClass
*
klass
,
void
*
data
)
...
...
This diff is collapsed.
Click to expand it.
include/hw/riscv/esp32_c3.h
+
2
−
0
View file @
bbc34d2a
...
@@ -39,6 +39,7 @@ typedef struct Esp32C3SoCState {
...
@@ -39,6 +39,7 @@ typedef struct Esp32C3SoCState {
/*< public >*/
/*< public >*/
RISCVHartArrayState
cpus
;
RISCVHartArrayState
cpus
;
DeviceState
*
plic
;
DeviceState
*
plic
;
MemoryRegion
dummy
;
MemoryRegion
irom
;
MemoryRegion
irom
;
MemoryRegion
drom
;
MemoryRegion
drom
;
MemoryRegion
iram
;
MemoryRegion
iram
;
...
@@ -58,6 +59,7 @@ typedef struct Esp32C3MachineState {
...
@@ -58,6 +59,7 @@ typedef struct Esp32C3MachineState {
}
Esp32C3MachineState
;
}
Esp32C3MachineState
;
enum
{
enum
{
ESP32_C3_DUMMY
,
ESP32_C3_DROM
,
ESP32_C3_DROM
,
ESP32_C3_IROM
,
ESP32_C3_IROM
,
ESP32_C3_IRAM
,
ESP32_C3_IRAM
,
...
...
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