Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 9bd29eb

Browse files
committedMar 30, 2024·
td-layout: move payload to the start of image file
When the payload is loaded into physical memory rather than the ROM space, image-rom mapping of other regions will not be affected if payload is at the start of the image file. Signed-off-by: Jiaqi Gao <[email protected]>
1 parent 06084ca commit 9bd29eb

File tree

3 files changed

+44
-44
lines changed

3 files changed

+44
-44
lines changed
 
+1-1
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
{
2+
"Payload": "0xC2D000",
23
"Config": "0x040000",
34
"Mailbox": "0x001000",
45
"TempStack": "0x020000",
56
"TempHeap": "0x020000",
67
"Metadata": "0x001000",
7-
"Payload": "0xC2D000",
88
"Ipl": "0x348000",
99
"ResetVector": "0x008000"
1010
}

‎devtools/td-layout-config/src/image.rs

+10-10
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ use super::{layout::LayoutConfig, render};
44

55
#[derive(Deserialize, Debug, PartialEq)]
66
struct ImageConfig {
7+
#[serde(rename = "Payload")]
8+
builtin_payload: Option<String>,
79
#[serde(rename = "Config")]
810
config: String,
911
#[serde(rename = "Mailbox")]
@@ -12,8 +14,6 @@ struct ImageConfig {
1214
temp_stack: String,
1315
#[serde(rename = "TempHeap")]
1416
temp_heap: String,
15-
#[serde(rename = "Payload")]
16-
builtin_payload: Option<String>,
1717
#[serde(rename = "TdInfo")]
1818
td_info: Option<String>,
1919
#[serde(rename = "Metadata")]
@@ -29,6 +29,14 @@ pub fn parse_image(data: String) -> String {
2929
.expect("Content is configuration file is invalid");
3030

3131
let mut image_layout = LayoutConfig::new(0, 0x100_0000);
32+
33+
if let Some(payload_config) = image_config.builtin_payload {
34+
image_layout.reserve_low(
35+
"Payload",
36+
parse_int::parse::<u32>(&payload_config).unwrap() as usize,
37+
"Reserved",
38+
)
39+
}
3240
image_layout.reserve_low(
3341
"Config",
3442
parse_int::parse::<u32>(&image_config.config).unwrap() as usize,
@@ -75,13 +83,5 @@ pub fn parse_image(data: String) -> String {
7583
)
7684
}
7785

78-
if let Some(payload_config) = image_config.builtin_payload {
79-
image_layout.reserve_high(
80-
"Payload",
81-
parse_int::parse::<u32>(&payload_config).unwrap() as usize,
82-
"Reserved",
83-
)
84-
}
85-
8686
render::render_image(&image_layout).expect("Render image layout failed!")
8787
}

‎td-layout/src/build_time.rs

+33-33
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Copyright (c) 2021 - 2023 Intel Corporation
1+
// Copyright (c) 2021 - 2024 Intel Corporation
22
//
33
// SPDX-License-Identifier: BSD-2-Clause-Patent
44

@@ -7,55 +7,55 @@
77
/*
88
Image Layout
99
+----------------------------------------+ <- 0x0
10-
| CONFIG | (0x40000) 256 KB
11-
+----------------------------------------+ <- 0x40000
12-
| MAILBOX | (0x1000) 4 KB
13-
+----------------------------------------+ <- 0x41000
14-
| TEMP_STACK | (0x20000) 128 KB
15-
+----------------------------------------+ <- 0x61000
16-
| TEMP_HEAP | (0x20000) 128 KB
17-
+----------------------------------------+ <- 0x81000
18-
| FREE | (0x1000) 4 KB
19-
+----------------------------------------+ <- 0x82000
2010
| PAYLOAD | (0xC2D000) 12.18 MB
11+
+----------------------------------------+ <- 0xC2D000
12+
| CONFIG | (0x40000) 256 kB
13+
+----------------------------------------+ <- 0xC6D000
14+
| MAILBOX | (0x1000) 4 kB
15+
+----------------------------------------+ <- 0xC6E000
16+
| TEMP_STACK | (0x20000) 128 kB
17+
+----------------------------------------+ <- 0xC8E000
18+
| TEMP_HEAP | (0x20000) 128 kB
19+
+----------------------------------------+ <- 0xCAE000
20+
| FREE | (0x1000) 4 kB
2121
+----------------------------------------+ <- 0xCAF000
22-
| METADATA | (0x1000) 4 KB
22+
| METADATA | (0x1000) 4 kB
2323
+----------------------------------------+ <- 0xCB0000
2424
| IPL | (0x348000) 3.28 MB
2525
+----------------------------------------+ <- 0xFF8000
26-
| RESET_VECTOR | (0x8000) 32 KB
26+
| RESET_VECTOR | (0x8000) 32 kB
2727
+----------------------------------------+ <- 0x1000000
2828
Image size: 0x1000000 (16 MB)
2929
*/
3030

3131
// Image Layout Configuration
3232

33-
pub const TD_SHIM_CONFIG_OFFSET: u32 = 0x0;
34-
pub const TD_SHIM_CONFIG_SIZE: u32 = 0x40000; // 256 KB
33+
pub const TD_SHIM_PAYLOAD_OFFSET: u32 = 0x0;
34+
pub const TD_SHIM_PAYLOAD_SIZE: u32 = 0xC2D000; // 12.18 MB
3535

36-
pub const TD_SHIM_MAILBOX_OFFSET: u32 = 0x40000;
37-
pub const TD_SHIM_MAILBOX_SIZE: u32 = 0x1000; // 4 KB
36+
pub const TD_SHIM_CONFIG_OFFSET: u32 = 0xC2D000;
37+
pub const TD_SHIM_CONFIG_SIZE: u32 = 0x40000; // 256 kB
3838

39-
pub const TD_SHIM_TEMP_STACK_OFFSET: u32 = 0x41000;
40-
pub const TD_SHIM_TEMP_STACK_SIZE: u32 = 0x20000; // 128 KB
39+
pub const TD_SHIM_MAILBOX_OFFSET: u32 = 0xC6D000;
40+
pub const TD_SHIM_MAILBOX_SIZE: u32 = 0x1000; // 4 kB
4141

42-
pub const TD_SHIM_TEMP_HEAP_OFFSET: u32 = 0x61000;
43-
pub const TD_SHIM_TEMP_HEAP_SIZE: u32 = 0x20000; // 128 KB
42+
pub const TD_SHIM_TEMP_STACK_OFFSET: u32 = 0xC6E000;
43+
pub const TD_SHIM_TEMP_STACK_SIZE: u32 = 0x20000; // 128 kB
4444

45-
pub const TD_SHIM_FREE_OFFSET: u32 = 0x81000;
46-
pub const TD_SHIM_FREE_SIZE: u32 = 0x1000; // 4 KB
45+
pub const TD_SHIM_TEMP_HEAP_OFFSET: u32 = 0xC8E000;
46+
pub const TD_SHIM_TEMP_HEAP_SIZE: u32 = 0x20000; // 128 kB
4747

48-
pub const TD_SHIM_PAYLOAD_OFFSET: u32 = 0x82000;
49-
pub const TD_SHIM_PAYLOAD_SIZE: u32 = 0xC2D000; // 12.18 MB
48+
pub const TD_SHIM_FREE_OFFSET: u32 = 0xCAE000;
49+
pub const TD_SHIM_FREE_SIZE: u32 = 0x1000; // 4 kB
5050

5151
pub const TD_SHIM_METADATA_OFFSET: u32 = 0xCAF000;
52-
pub const TD_SHIM_METADATA_SIZE: u32 = 0x1000; // 4 KB
52+
pub const TD_SHIM_METADATA_SIZE: u32 = 0x1000; // 4 kB
5353

5454
pub const TD_SHIM_IPL_OFFSET: u32 = 0xCB0000;
5555
pub const TD_SHIM_IPL_SIZE: u32 = 0x348000; // 3.28 MB
5656

5757
pub const TD_SHIM_RESET_VECTOR_OFFSET: u32 = 0xFF8000;
58-
pub const TD_SHIM_RESET_VECTOR_SIZE: u32 = 0x8000; // 32 KB
58+
pub const TD_SHIM_RESET_VECTOR_SIZE: u32 = 0x8000; // 32 kB
5959

6060
// Offset when Loading into Memory
6161
pub const TD_SHIM_FIRMWARE_BASE: u32 = 0xFF000000;
@@ -67,12 +67,12 @@ pub const TD_SHIM_SEC_CORE_INFO_OFFSET: u32 = 0xFFFFAC;
6767
pub const TD_SHIM_SEC_CORE_INFO_BASE: u32 = 0xFFFFFFAC;
6868

6969
// Base Address after Loaded into Memory
70-
pub const TD_SHIM_CONFIG_BASE: u32 = 0xFF000000;
71-
pub const TD_SHIM_MAILBOX_BASE: u32 = 0xFF040000;
72-
pub const TD_SHIM_TEMP_STACK_BASE: u32 = 0xFF041000;
73-
pub const TD_SHIM_TEMP_HEAP_BASE: u32 = 0xFF061000;
74-
pub const TD_SHIM_FREE_BASE: u32 = 0xFF081000;
75-
pub const TD_SHIM_PAYLOAD_BASE: u32 = 0xFF082000;
70+
pub const TD_SHIM_PAYLOAD_BASE: u32 = 0xFF000000;
71+
pub const TD_SHIM_CONFIG_BASE: u32 = 0xFFC2D000;
72+
pub const TD_SHIM_MAILBOX_BASE: u32 = 0xFFC6D000;
73+
pub const TD_SHIM_TEMP_STACK_BASE: u32 = 0xFFC6E000;
74+
pub const TD_SHIM_TEMP_HEAP_BASE: u32 = 0xFFC8E000;
75+
pub const TD_SHIM_FREE_BASE: u32 = 0xFFCAE000;
7676
pub const TD_SHIM_METADATA_BASE: u32 = 0xFFCAF000;
7777
pub const TD_SHIM_IPL_BASE: u32 = 0xFFCB0000;
7878
pub const TD_SHIM_RESET_VECTOR_BASE: u32 = 0xFFFF8000;

0 commit comments

Comments
 (0)
Please sign in to comment.