Debugger overwritten by BL2. Working on better memory map
This commit is contained in:
parent
98033c5d61
commit
3039e1dbc7
@ -2,7 +2,7 @@
|
|||||||
"cells": [
|
"cells": [
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 263,
|
"execution_count": 50,
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"outputs": [],
|
"outputs": [],
|
||||||
"source": [
|
"source": [
|
||||||
@ -20,24 +20,235 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 264,
|
"execution_count": 51,
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"outputs": [],
|
"outputs": [],
|
||||||
"source": [
|
"source": [
|
||||||
"import pandas as pd\n",
|
"import pandas as pd\n",
|
||||||
"data = pd.read_csv('stack_and_functions.csv').to_dict(orient='records')"
|
"data = pd.read_csv('stack_and_functions.csv')\n",
|
||||||
|
"\n",
|
||||||
|
"def convert_to_int(value):\n",
|
||||||
|
" try:\n",
|
||||||
|
" if isinstance(value, str) and value.startswith('0x'):\n",
|
||||||
|
" return int(value, 16)\n",
|
||||||
|
" else:\n",
|
||||||
|
" return int(value)\n",
|
||||||
|
" except ValueError:\n",
|
||||||
|
" return value \n",
|
||||||
|
"\n",
|
||||||
|
"data.sort_values(by=['start'], inplace=True)\n",
|
||||||
|
"data['start'] = data['start'].apply(convert_to_int)\n",
|
||||||
|
"data['end'] = data['end'].apply(convert_to_int)\n",
|
||||||
|
"\n",
|
||||||
|
"# Check for overlapping ranges, annotatie row with overlap\n",
|
||||||
|
"data['overlap'] = False\n",
|
||||||
|
"for i, row in data.iterrows():\n",
|
||||||
|
" for j, row2 in data.iterrows():\n",
|
||||||
|
" if i == j:\n",
|
||||||
|
" continue\n",
|
||||||
|
" if row['start'] < row2['end'] and row['end'] > row2['start']:\n",
|
||||||
|
" data.at[i, 'overlap'] = True\n",
|
||||||
|
" data.at[j, 'overlap'] = True\n",
|
||||||
|
" data.at[i, 'overlap_with'] = j"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 52,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"data": {
|
||||||
|
"text/html": [
|
||||||
|
"<div>\n",
|
||||||
|
"<style scoped>\n",
|
||||||
|
" .dataframe tbody tr th:only-of-type {\n",
|
||||||
|
" vertical-align: middle;\n",
|
||||||
|
" }\n",
|
||||||
|
"\n",
|
||||||
|
" .dataframe tbody tr th {\n",
|
||||||
|
" vertical-align: top;\n",
|
||||||
|
" }\n",
|
||||||
|
"\n",
|
||||||
|
" .dataframe thead th {\n",
|
||||||
|
" text-align: right;\n",
|
||||||
|
" }\n",
|
||||||
|
"</style>\n",
|
||||||
|
"<table border=\"1\" class=\"dataframe\">\n",
|
||||||
|
" <thead>\n",
|
||||||
|
" <tr style=\"text-align: right;\">\n",
|
||||||
|
" <th></th>\n",
|
||||||
|
" <th>start</th>\n",
|
||||||
|
" <th>end</th>\n",
|
||||||
|
" <th>name</th>\n",
|
||||||
|
" <th>order</th>\n",
|
||||||
|
" <th>comment</th>\n",
|
||||||
|
" <th>overlap</th>\n",
|
||||||
|
" <th>overlap_with</th>\n",
|
||||||
|
" </tr>\n",
|
||||||
|
" </thead>\n",
|
||||||
|
" <tbody>\n",
|
||||||
|
" <tr>\n",
|
||||||
|
" <th>0</th>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>131072</td>\n",
|
||||||
|
" <td>BootROM</td>\n",
|
||||||
|
" <td>NaN</td>\n",
|
||||||
|
" <td>NaN</td>\n",
|
||||||
|
" <td>True</td>\n",
|
||||||
|
" <td>4.0</td>\n",
|
||||||
|
" </tr>\n",
|
||||||
|
" <tr>\n",
|
||||||
|
" <th>1</th>\n",
|
||||||
|
" <td>704</td>\n",
|
||||||
|
" <td>21184</td>\n",
|
||||||
|
" <td>BL1 boot entry point</td>\n",
|
||||||
|
" <td>ENTRY</td>\n",
|
||||||
|
" <td>NaN</td>\n",
|
||||||
|
" <td>True</td>\n",
|
||||||
|
" <td>0.0</td>\n",
|
||||||
|
" </tr>\n",
|
||||||
|
" <tr>\n",
|
||||||
|
" <th>2</th>\n",
|
||||||
|
" <td>25824</td>\n",
|
||||||
|
" <td>46304</td>\n",
|
||||||
|
" <td>Boot USB function</td>\n",
|
||||||
|
" <td>NaN</td>\n",
|
||||||
|
" <td>NaN</td>\n",
|
||||||
|
" <td>True</td>\n",
|
||||||
|
" <td>0.0</td>\n",
|
||||||
|
" </tr>\n",
|
||||||
|
" <tr>\n",
|
||||||
|
" <th>3</th>\n",
|
||||||
|
" <td>75848</td>\n",
|
||||||
|
" <td>96328</td>\n",
|
||||||
|
" <td>bootrom authentication function</td>\n",
|
||||||
|
" <td>NaN</td>\n",
|
||||||
|
" <td>NaN</td>\n",
|
||||||
|
" <td>True</td>\n",
|
||||||
|
" <td>0.0</td>\n",
|
||||||
|
" </tr>\n",
|
||||||
|
" <tr>\n",
|
||||||
|
" <th>4</th>\n",
|
||||||
|
" <td>103184</td>\n",
|
||||||
|
" <td>123664</td>\n",
|
||||||
|
" <td>BL1 boot function</td>\n",
|
||||||
|
" <td>NaN</td>\n",
|
||||||
|
" <td>NaN</td>\n",
|
||||||
|
" <td>True</td>\n",
|
||||||
|
" <td>0.0</td>\n",
|
||||||
|
" </tr>\n",
|
||||||
|
" <tr>\n",
|
||||||
|
" <th>5</th>\n",
|
||||||
|
" <td>2146304</td>\n",
|
||||||
|
" <td>2166784</td>\n",
|
||||||
|
" <td>Frederic Destination pointer</td>\n",
|
||||||
|
" <td>NaN</td>\n",
|
||||||
|
" <td>NaN</td>\n",
|
||||||
|
" <td>False</td>\n",
|
||||||
|
" <td>NaN</td>\n",
|
||||||
|
" </tr>\n",
|
||||||
|
" <tr>\n",
|
||||||
|
" <th>6</th>\n",
|
||||||
|
" <td>33689440</td>\n",
|
||||||
|
" <td>33689448</td>\n",
|
||||||
|
" <td>Boot USB return address</td>\n",
|
||||||
|
" <td>NaN</td>\n",
|
||||||
|
" <td>NaN</td>\n",
|
||||||
|
" <td>False</td>\n",
|
||||||
|
" <td>NaN</td>\n",
|
||||||
|
" </tr>\n",
|
||||||
|
" <tr>\n",
|
||||||
|
" <th>7</th>\n",
|
||||||
|
" <td>33691000</td>\n",
|
||||||
|
" <td>33711480</td>\n",
|
||||||
|
" <td>Event buffer pointer</td>\n",
|
||||||
|
" <td>NaN</td>\n",
|
||||||
|
" <td>NaN</td>\n",
|
||||||
|
" <td>True</td>\n",
|
||||||
|
" <td>8.0</td>\n",
|
||||||
|
" </tr>\n",
|
||||||
|
" <tr>\n",
|
||||||
|
" <th>8</th>\n",
|
||||||
|
" <td>33691648</td>\n",
|
||||||
|
" <td>33712128</td>\n",
|
||||||
|
" <td>BL1 pointer</td>\n",
|
||||||
|
" <td>NaN</td>\n",
|
||||||
|
" <td>NaN</td>\n",
|
||||||
|
" <td>True</td>\n",
|
||||||
|
" <td>7.0</td>\n",
|
||||||
|
" </tr>\n",
|
||||||
|
" <tr>\n",
|
||||||
|
" <th>9</th>\n",
|
||||||
|
" <td>33984512</td>\n",
|
||||||
|
" <td>34004992</td>\n",
|
||||||
|
" <td>First debugger location</td>\n",
|
||||||
|
" <td>NaN</td>\n",
|
||||||
|
" <td>NaN</td>\n",
|
||||||
|
" <td>True</td>\n",
|
||||||
|
" <td>10.0</td>\n",
|
||||||
|
" </tr>\n",
|
||||||
|
" <tr>\n",
|
||||||
|
" <th>10</th>\n",
|
||||||
|
" <td>33992704</td>\n",
|
||||||
|
" <td>34013184</td>\n",
|
||||||
|
" <td>End of memory stack</td>\n",
|
||||||
|
" <td>NaN</td>\n",
|
||||||
|
" <td>NaN</td>\n",
|
||||||
|
" <td>True</td>\n",
|
||||||
|
" <td>9.0</td>\n",
|
||||||
|
" </tr>\n",
|
||||||
|
" </tbody>\n",
|
||||||
|
"</table>\n",
|
||||||
|
"</div>"
|
||||||
|
],
|
||||||
|
"text/plain": [
|
||||||
|
" start end name order comment \\\n",
|
||||||
|
"0 0 131072 BootROM NaN NaN \n",
|
||||||
|
"1 704 21184 BL1 boot entry point ENTRY NaN \n",
|
||||||
|
"2 25824 46304 Boot USB function NaN NaN \n",
|
||||||
|
"3 75848 96328 bootrom authentication function NaN NaN \n",
|
||||||
|
"4 103184 123664 BL1 boot function NaN NaN \n",
|
||||||
|
"5 2146304 2166784 Frederic Destination pointer NaN NaN \n",
|
||||||
|
"6 33689440 33689448 Boot USB return address NaN NaN \n",
|
||||||
|
"7 33691000 33711480 Event buffer pointer NaN NaN \n",
|
||||||
|
"8 33691648 33712128 BL1 pointer NaN NaN \n",
|
||||||
|
"9 33984512 34004992 First debugger location NaN NaN \n",
|
||||||
|
"10 33992704 34013184 End of memory stack NaN NaN \n",
|
||||||
|
"\n",
|
||||||
|
" overlap overlap_with \n",
|
||||||
|
"0 True 4.0 \n",
|
||||||
|
"1 True 0.0 \n",
|
||||||
|
"2 True 0.0 \n",
|
||||||
|
"3 True 0.0 \n",
|
||||||
|
"4 True 0.0 \n",
|
||||||
|
"5 False NaN \n",
|
||||||
|
"6 False NaN \n",
|
||||||
|
"7 True 8.0 \n",
|
||||||
|
"8 True 7.0 \n",
|
||||||
|
"9 True 10.0 \n",
|
||||||
|
"10 True 9.0 "
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"execution_count": 52,
|
||||||
|
"metadata": {},
|
||||||
|
"output_type": "execute_result"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"source": [
|
||||||
|
"data"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "markdown",
|
"cell_type": "markdown",
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"source": [
|
"source": [
|
||||||
"Create block diagram"
|
"Create stacked block diagram"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 266,
|
"execution_count": 53,
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"outputs": [
|
"outputs": [
|
||||||
{
|
{
|
||||||
@ -49,7 +260,7 @@
|
|||||||
"data": [
|
"data": [
|
||||||
{
|
{
|
||||||
"marker": {
|
"marker": {
|
||||||
"color": "#768f95"
|
"color": "#2b5c62"
|
||||||
},
|
},
|
||||||
"mode": "text",
|
"mode": "text",
|
||||||
"name": "BootROM",
|
"name": "BootROM",
|
||||||
@ -57,15 +268,15 @@
|
|||||||
"textposition": "middle center",
|
"textposition": "middle center",
|
||||||
"type": "scatter",
|
"type": "scatter",
|
||||||
"x": [
|
"x": [
|
||||||
0.5
|
1.5
|
||||||
],
|
],
|
||||||
"y": [
|
"y": [
|
||||||
2.1463414634146343
|
2.2856563094483198
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"marker": {
|
"marker": {
|
||||||
"color": "#2564cb"
|
"color": "#c3bb78"
|
||||||
},
|
},
|
||||||
"mode": "text",
|
"mode": "text",
|
||||||
"name": "BL1 boot entry point",
|
"name": "BL1 boot entry point",
|
||||||
@ -76,12 +287,12 @@
|
|||||||
0.5
|
0.5
|
||||||
],
|
],
|
||||||
"y": [
|
"y": [
|
||||||
4.628048780487806
|
4.928446417247939
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"marker": {
|
"marker": {
|
||||||
"color": "#9e0519"
|
"color": "#086666"
|
||||||
},
|
},
|
||||||
"mode": "text",
|
"mode": "text",
|
||||||
"name": "Boot USB function",
|
"name": "Boot USB function",
|
||||||
@ -89,15 +300,15 @@
|
|||||||
"textposition": "middle center",
|
"textposition": "middle center",
|
||||||
"type": "scatter",
|
"type": "scatter",
|
||||||
"x": [
|
"x": [
|
||||||
0.5
|
1.5
|
||||||
],
|
],
|
||||||
"y": [
|
"y": [
|
||||||
5.298780487804878
|
5.64271401395054
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"marker": {
|
"marker": {
|
||||||
"color": "#2f0c12"
|
"color": "#9744a8"
|
||||||
},
|
},
|
||||||
"mode": "text",
|
"mode": "text",
|
||||||
"name": "bootrom authentication function",
|
"name": "bootrom authentication function",
|
||||||
@ -105,15 +316,15 @@
|
|||||||
"textposition": "middle center",
|
"textposition": "middle center",
|
||||||
"type": "scatter",
|
"type": "scatter",
|
||||||
"x": [
|
"x": [
|
||||||
0.5
|
1.5
|
||||||
],
|
],
|
||||||
"y": [
|
"y": [
|
||||||
5.969512195121951
|
6.356981610653138
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"marker": {
|
"marker": {
|
||||||
"color": "#7e4e8a"
|
"color": "#331fdf"
|
||||||
},
|
},
|
||||||
"mode": "text",
|
"mode": "text",
|
||||||
"name": "BL1 boot function",
|
"name": "BL1 boot function",
|
||||||
@ -121,15 +332,15 @@
|
|||||||
"textposition": "middle center",
|
"textposition": "middle center",
|
||||||
"type": "scatter",
|
"type": "scatter",
|
||||||
"x": [
|
"x": [
|
||||||
0.5
|
1.5
|
||||||
],
|
],
|
||||||
"y": [
|
"y": [
|
||||||
6.640243902439026
|
7.07124920735574
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"marker": {
|
"marker": {
|
||||||
"color": "#43f7e5"
|
"color": "#972c60"
|
||||||
},
|
},
|
||||||
"mode": "text",
|
"mode": "text",
|
||||||
"name": "Frederic Destination pointer",
|
"name": "Frederic Destination pointer",
|
||||||
@ -137,15 +348,15 @@
|
|||||||
"textposition": "middle center",
|
"textposition": "middle center",
|
||||||
"type": "scatter",
|
"type": "scatter",
|
||||||
"x": [
|
"x": [
|
||||||
0.5
|
1.5
|
||||||
],
|
],
|
||||||
"y": [
|
"y": [
|
||||||
7.310975609756099
|
7.7855168040583385
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"marker": {
|
"marker": {
|
||||||
"color": "#d4b036"
|
"color": "#2c2ca0"
|
||||||
},
|
},
|
||||||
"mode": "text",
|
"mode": "text",
|
||||||
"name": "Boot USB return address",
|
"name": "Boot USB return address",
|
||||||
@ -153,15 +364,15 @@
|
|||||||
"textposition": "middle center",
|
"textposition": "middle center",
|
||||||
"type": "scatter",
|
"type": "scatter",
|
||||||
"x": [
|
"x": [
|
||||||
0.5
|
1.5
|
||||||
],
|
],
|
||||||
"y": [
|
"y": [
|
||||||
7.981707317073173
|
8.14279010779962
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"marker": {
|
"marker": {
|
||||||
"color": "#574d7b"
|
"color": "#d1058f"
|
||||||
},
|
},
|
||||||
"mode": "text",
|
"mode": "text",
|
||||||
"name": "Event buffer pointer",
|
"name": "Event buffer pointer",
|
||||||
@ -169,15 +380,15 @@
|
|||||||
"textposition": "middle center",
|
"textposition": "middle center",
|
||||||
"type": "scatter",
|
"type": "scatter",
|
||||||
"x": [
|
"x": [
|
||||||
0.5
|
1.5
|
||||||
],
|
],
|
||||||
"y": [
|
"y": [
|
||||||
8.652439024390247
|
8.500063411540902
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"marker": {
|
"marker": {
|
||||||
"color": "#34619d"
|
"color": "#7d4052"
|
||||||
},
|
},
|
||||||
"mode": "text",
|
"mode": "text",
|
||||||
"name": "BL1 pointer",
|
"name": "BL1 pointer",
|
||||||
@ -185,15 +396,15 @@
|
|||||||
"textposition": "middle center",
|
"textposition": "middle center",
|
||||||
"type": "scatter",
|
"type": "scatter",
|
||||||
"x": [
|
"x": [
|
||||||
0.5
|
1.5
|
||||||
],
|
],
|
||||||
"y": [
|
"y": [
|
||||||
9.32317073170732
|
9.2143310082435
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"marker": {
|
"marker": {
|
||||||
"color": "#57f720"
|
"color": "#e8bcfa"
|
||||||
},
|
},
|
||||||
"mode": "text",
|
"mode": "text",
|
||||||
"name": "First debugger location",
|
"name": "First debugger location",
|
||||||
@ -201,15 +412,15 @@
|
|||||||
"textposition": "middle center",
|
"textposition": "middle center",
|
||||||
"type": "scatter",
|
"type": "scatter",
|
||||||
"x": [
|
"x": [
|
||||||
0.5
|
1.5
|
||||||
],
|
],
|
||||||
"y": [
|
"y": [
|
||||||
9.993902439024394
|
9.928598604946101
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"marker": {
|
"marker": {
|
||||||
"color": "#dca8fd"
|
"color": "#81a246"
|
||||||
},
|
},
|
||||||
"mode": "text",
|
"mode": "text",
|
||||||
"name": "End of memory stack",
|
"name": "End of memory stack",
|
||||||
@ -217,10 +428,10 @@
|
|||||||
"textposition": "middle center",
|
"textposition": "middle center",
|
||||||
"type": "scatter",
|
"type": "scatter",
|
||||||
"x": [
|
"x": [
|
||||||
0.5
|
1.5
|
||||||
],
|
],
|
||||||
"y": [
|
"y": [
|
||||||
10.664634146341468
|
10.6428662016487
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
@ -243,20 +454,20 @@
|
|||||||
},
|
},
|
||||||
"shapes": [
|
"shapes": [
|
||||||
{
|
{
|
||||||
"fillcolor": "#768f95",
|
"fillcolor": "#2b5c62",
|
||||||
"layer": "below",
|
"layer": "below",
|
||||||
"line": {
|
"line": {
|
||||||
"width": 2
|
"width": 2
|
||||||
},
|
},
|
||||||
"opacity": 0.5,
|
"opacity": 0.5,
|
||||||
"type": "rect",
|
"type": "rect",
|
||||||
"x0": 0.1,
|
"x0": 1,
|
||||||
"x1": 1,
|
"x1": 2,
|
||||||
"y0": 0,
|
"y0": 0,
|
||||||
"y1": 4.2926829268292686
|
"y1": 4.5713126188966395
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"fillcolor": "#2564cb",
|
"fillcolor": "#c3bb78",
|
||||||
"layer": "below",
|
"layer": "below",
|
||||||
"line": {
|
"line": {
|
||||||
"width": 2
|
"width": 2
|
||||||
@ -265,125 +476,125 @@
|
|||||||
"type": "rect",
|
"type": "rect",
|
||||||
"x0": 0,
|
"x0": 0,
|
||||||
"x1": 1,
|
"x1": 1,
|
||||||
"y0": 4.2926829268292686,
|
"y0": 4.5713126188966395,
|
||||||
"y1": 4.963414634146342
|
"y1": 5.285580215599239
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"fillcolor": "#9e0519",
|
"fillcolor": "#086666",
|
||||||
"layer": "below",
|
"layer": "below",
|
||||||
"line": {
|
"line": {
|
||||||
"width": 2
|
"width": 2
|
||||||
},
|
},
|
||||||
"opacity": 0.5,
|
"opacity": 0.5,
|
||||||
"type": "rect",
|
"type": "rect",
|
||||||
"x0": 0.1,
|
"x0": 1,
|
||||||
"x1": 1,
|
"x1": 2,
|
||||||
"y0": 4.963414634146342,
|
"y0": 5.285580215599239,
|
||||||
"y1": 5.634146341463415
|
"y1": 5.999847812301839
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"fillcolor": "#2f0c12",
|
"fillcolor": "#9744a8",
|
||||||
"layer": "below",
|
"layer": "below",
|
||||||
"line": {
|
"line": {
|
||||||
"width": 2
|
"width": 2
|
||||||
},
|
},
|
||||||
"opacity": 0.5,
|
"opacity": 0.5,
|
||||||
"type": "rect",
|
"type": "rect",
|
||||||
"x0": 0.1,
|
"x0": 1,
|
||||||
"x1": 1,
|
"x1": 2,
|
||||||
"y0": 5.634146341463415,
|
"y0": 5.999847812301839,
|
||||||
"y1": 6.3048780487804885
|
"y1": 6.714115409004439
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"fillcolor": "#7e4e8a",
|
"fillcolor": "#331fdf",
|
||||||
"layer": "below",
|
"layer": "below",
|
||||||
"line": {
|
"line": {
|
||||||
"width": 2
|
"width": 2
|
||||||
},
|
},
|
||||||
"opacity": 0.5,
|
"opacity": 0.5,
|
||||||
"type": "rect",
|
"type": "rect",
|
||||||
"x0": 0.1,
|
"x0": 1,
|
||||||
"x1": 1,
|
"x1": 2,
|
||||||
"y0": 6.3048780487804885,
|
"y0": 6.714115409004439,
|
||||||
"y1": 6.975609756097562
|
"y1": 7.428383005707039
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"fillcolor": "#43f7e5",
|
"fillcolor": "#972c60",
|
||||||
"layer": "below",
|
"layer": "below",
|
||||||
"line": {
|
"line": {
|
||||||
"width": 2
|
"width": 2
|
||||||
},
|
},
|
||||||
"opacity": 0.5,
|
"opacity": 0.5,
|
||||||
"type": "rect",
|
"type": "rect",
|
||||||
"x0": 0.1,
|
"x0": 1,
|
||||||
"x1": 1,
|
"x1": 2,
|
||||||
"y0": 6.975609756097562,
|
"y0": 7.428383005707039,
|
||||||
"y1": 7.646341463414636
|
"y1": 8.142650602409638
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"fillcolor": "#d4b036",
|
"fillcolor": "#2c2ca0",
|
||||||
"layer": "below",
|
"layer": "below",
|
||||||
"line": {
|
"line": {
|
||||||
"width": 2
|
"width": 2
|
||||||
},
|
},
|
||||||
"opacity": 0.5,
|
"opacity": 0.5,
|
||||||
"type": "rect",
|
"type": "rect",
|
||||||
"x0": 0.1,
|
"x0": 1,
|
||||||
"x1": 1,
|
"x1": 2,
|
||||||
"y0": 7.646341463414636,
|
"y0": 8.142650602409638,
|
||||||
"y1": 8.31707317073171
|
"y1": 8.142929613189601
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"fillcolor": "#574d7b",
|
"fillcolor": "#d1058f",
|
||||||
"layer": "below",
|
"layer": "below",
|
||||||
"line": {
|
"line": {
|
||||||
"width": 2
|
"width": 2
|
||||||
},
|
},
|
||||||
"opacity": 0.5,
|
"opacity": 0.5,
|
||||||
"type": "rect",
|
"type": "rect",
|
||||||
"x0": 0.1,
|
"x0": 1,
|
||||||
"x1": 1,
|
"x1": 2,
|
||||||
"y0": 8.31707317073171,
|
"y0": 8.142929613189601,
|
||||||
"y1": 8.987804878048784
|
"y1": 8.8571972098922
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"fillcolor": "#34619d",
|
"fillcolor": "#7d4052",
|
||||||
"layer": "below",
|
"layer": "below",
|
||||||
"line": {
|
"line": {
|
||||||
"width": 2
|
"width": 2
|
||||||
},
|
},
|
||||||
"opacity": 0.5,
|
"opacity": 0.5,
|
||||||
"type": "rect",
|
"type": "rect",
|
||||||
"x0": 0.1,
|
"x0": 1,
|
||||||
"x1": 1,
|
"x1": 2,
|
||||||
"y0": 8.987804878048784,
|
"y0": 8.8571972098922,
|
||||||
"y1": 9.658536585365857
|
"y1": 9.5714648065948
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"fillcolor": "#57f720",
|
"fillcolor": "#e8bcfa",
|
||||||
"layer": "below",
|
"layer": "below",
|
||||||
"line": {
|
"line": {
|
||||||
"width": 2
|
"width": 2
|
||||||
},
|
},
|
||||||
"opacity": 0.5,
|
"opacity": 0.5,
|
||||||
"type": "rect",
|
"type": "rect",
|
||||||
"x0": 0.1,
|
"x0": 1,
|
||||||
"x1": 1,
|
"x1": 2,
|
||||||
"y0": 9.658536585365857,
|
"y0": 9.5714648065948,
|
||||||
"y1": 10.329268292682931
|
"y1": 10.2857324032974
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"fillcolor": "#dca8fd",
|
"fillcolor": "#81a246",
|
||||||
"layer": "below",
|
"layer": "below",
|
||||||
"line": {
|
"line": {
|
||||||
"width": 2
|
"width": 2
|
||||||
},
|
},
|
||||||
"opacity": 0.5,
|
"opacity": 0.5,
|
||||||
"type": "rect",
|
"type": "rect",
|
||||||
"x0": 0.1,
|
"x0": 1,
|
||||||
"x1": 1,
|
"x1": 2,
|
||||||
"y0": 10.329268292682931,
|
"y0": 10.2857324032974,
|
||||||
"y1": 11.000000000000005
|
"y1": 11
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"template": {
|
"template": {
|
||||||
@ -1202,16 +1413,18 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"width": 1000,
|
"width": 1600,
|
||||||
"xaxis": {
|
"xaxis": {
|
||||||
"range": [
|
"range": [
|
||||||
0,
|
0,
|
||||||
1
|
3
|
||||||
],
|
],
|
||||||
"showticklabels": false,
|
"showticklabels": false,
|
||||||
"tickvals": [
|
"tickvals": [
|
||||||
0,
|
0,
|
||||||
1
|
1,
|
||||||
|
2,
|
||||||
|
3
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"yaxis": {
|
"yaxis": {
|
||||||
@ -1226,7 +1439,7 @@
|
|||||||
"0x17848<br>0x12848",
|
"0x17848<br>0x12848",
|
||||||
"0x1e310<br>0x19310",
|
"0x1e310<br>0x19310",
|
||||||
"0x211000<br>0x20c000",
|
"0x211000<br>0x20c000",
|
||||||
"0x2025f60<br>0x2020f60",
|
"0x2020f68<br>0x2020f60",
|
||||||
"0x2026578<br>0x2021578",
|
"0x2026578<br>0x2021578",
|
||||||
"0x2026800<br>0x2021800",
|
"0x2026800<br>0x2021800",
|
||||||
"0x206e000<br>0x2069000",
|
"0x206e000<br>0x2069000",
|
||||||
@ -1245,7 +1458,7 @@
|
|||||||
"0x20c000",
|
"0x20c000",
|
||||||
"0x211000",
|
"0x211000",
|
||||||
"0x2020f60",
|
"0x2020f60",
|
||||||
"0x2025f60",
|
"0x2020f68",
|
||||||
"0x2021578",
|
"0x2021578",
|
||||||
"0x2026578",
|
"0x2026578",
|
||||||
"0x2021800",
|
"0x2021800",
|
||||||
@ -1258,16 +1471,16 @@
|
|||||||
],
|
],
|
||||||
"tickvals": [
|
"tickvals": [
|
||||||
0,
|
0,
|
||||||
4.2926829268292686,
|
4.5713126188966395,
|
||||||
4.963414634146342,
|
5.285580215599239,
|
||||||
5.634146341463415,
|
5.999847812301839,
|
||||||
6.3048780487804885,
|
6.714115409004439,
|
||||||
6.975609756097562,
|
7.428383005707039,
|
||||||
7.646341463414636,
|
8.142650602409638,
|
||||||
8.31707317073171,
|
8.142929613189601,
|
||||||
8.987804878048784,
|
8.8571972098922,
|
||||||
9.658536585365857,
|
9.5714648065948,
|
||||||
10.329268292682931
|
10.2857324032974
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1281,6 +1494,8 @@
|
|||||||
"import plotly.graph_objects as go\n",
|
"import plotly.graph_objects as go\n",
|
||||||
"import random\n",
|
"import random\n",
|
||||||
"\n",
|
"\n",
|
||||||
|
"data = data.to_dict(orient='records')\n",
|
||||||
|
"\n",
|
||||||
"# If there is no end, set it to start + 0x1000\n",
|
"# If there is no end, set it to start + 0x1000\n",
|
||||||
"for d in data:\n",
|
"for d in data:\n",
|
||||||
" if 'end' not in d:\n",
|
" if 'end' not in d:\n",
|
||||||
@ -1307,16 +1522,16 @@
|
|||||||
" max_y = (prev_y + ((d['end'] - d['start']) / total_used_len))\n",
|
" max_y = (prev_y + ((d['end'] - d['start']) / total_used_len))\n",
|
||||||
" fillcolor = random_color()\n",
|
" fillcolor = random_color()\n",
|
||||||
"\n",
|
"\n",
|
||||||
" if d['Order'] == \"ENTRY\":\n",
|
" if d['order'] == \"ENTRY\":\n",
|
||||||
" x0 = 0\n",
|
" x0 = 0\n",
|
||||||
" else:\n",
|
" else:\n",
|
||||||
" x0 = 0.1\n",
|
" x0 = 1\n",
|
||||||
"\n",
|
"\n",
|
||||||
" fig.add_shape(\n",
|
" fig.add_shape(\n",
|
||||||
" type=\"rect\",\n",
|
" type=\"rect\",\n",
|
||||||
" x0=x0,\n",
|
" x0=x0,\n",
|
||||||
" y0=prev_y * len(data),\n",
|
" y0=prev_y * len(data),\n",
|
||||||
" x1=0 + 1,\n",
|
" x1=x0 + 1,\n",
|
||||||
" y1=max_y * len(data),\n",
|
" y1=max_y * len(data),\n",
|
||||||
" line=dict(width=2),\n",
|
" line=dict(width=2),\n",
|
||||||
" fillcolor=fillcolor,\n",
|
" fillcolor=fillcolor,\n",
|
||||||
@ -1329,7 +1544,7 @@
|
|||||||
"\n",
|
"\n",
|
||||||
" fig.add_trace(go.Scatter\n",
|
" fig.add_trace(go.Scatter\n",
|
||||||
" (\n",
|
" (\n",
|
||||||
" x=[0.5],\n",
|
" x=[x0+0.5],\n",
|
||||||
" y=tickpoint,\n",
|
" y=tickpoint,\n",
|
||||||
" text=d['name'],\n",
|
" text=d['name'],\n",
|
||||||
" mode=\"text\",\n",
|
" mode=\"text\",\n",
|
||||||
@ -1344,8 +1559,8 @@
|
|||||||
" prev_y = max_y\n",
|
" prev_y = max_y\n",
|
||||||
"\n",
|
"\n",
|
||||||
"fig.update_xaxes(\n",
|
"fig.update_xaxes(\n",
|
||||||
" range=[0, 1],\n",
|
" range=[0, 3],\n",
|
||||||
" tickvals=[0, 1],\n",
|
" tickvals=[0, 1, 2, 3],\n",
|
||||||
")\n",
|
")\n",
|
||||||
"\n",
|
"\n",
|
||||||
"labels = [hex(value) for d in data for value in (d.get('start'), d['end']) if 'end' in d]\n",
|
"labels = [hex(value) for d in data for value in (d.get('start'), d['end']) if 'end' in d]\n",
|
||||||
@ -1377,7 +1592,7 @@
|
|||||||
")\n",
|
")\n",
|
||||||
"\n",
|
"\n",
|
||||||
"fig.update_layout(\n",
|
"fig.update_layout(\n",
|
||||||
" width=1000,\n",
|
" width=1600,\n",
|
||||||
" height=1200,\n",
|
" height=1200,\n",
|
||||||
" autosize=True,\n",
|
" autosize=True,\n",
|
||||||
" margin=dict(l=200, r=20, t=20, b=20),\n",
|
" margin=dict(l=200, r=20, t=20, b=20),\n",
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
start,end,name,Order,Comment
|
start,end,name,order,comment
|
||||||
0,131072,BootROM,,
|
0,131072,BootROM,,
|
||||||
704,21184,BL1 boot entry point,ENTRY,
|
704,21184,BL1 boot entry point,ENTRY,
|
||||||
25824,46304,Boot USB function,,
|
25824,46304,Boot USB function,,
|
||||||
75848,96328,bootrom authentication function,,
|
75848,96328,bootrom authentication function,,
|
||||||
103184,123664,BL1 boot function,,
|
103184,123664,BL1 boot function,,
|
||||||
2146304,2166784,Frederic Destination pointer,,
|
2146304,2166784,Frederic Destination pointer,,
|
||||||
33689440,33709920,Boot USB return address,,
|
33689440,33689448,Boot USB return address,,
|
||||||
33691000,33711480,Event buffer pointer,,
|
33691000,33711480,Event buffer pointer,,
|
||||||
33691648,33712128,BL1 pointer,,
|
33691648,33712128,BL1 pointer,,
|
||||||
33984512,34004992,First debugger location,,
|
33984512,34004992,First debugger location,,
|
||||||
|
|
@ -401,6 +401,25 @@ class ExynosDevice():
|
|||||||
self.cd.restore_stack_and_jump(0x020c0000)
|
self.cd.restore_stack_and_jump(0x020c0000)
|
||||||
assert self.usb_read(0x200) == b"GiAs", "Failed to relocate debugger"
|
assert self.usb_read(0x200) == b"GiAs", "Failed to relocate debugger"
|
||||||
self.cd.relocate_debugger(0x020c7000, 0x020c0000, 0x020c4000)
|
self.cd.relocate_debugger(0x020c7000, 0x020c0000, 0x020c4000)
|
||||||
|
|
||||||
|
def relocate_debugger_3(self):
|
||||||
|
"""
|
||||||
|
Relocate debugger to 0x0201a000, 0x0201c000, 0x0201a000
|
||||||
|
"""
|
||||||
|
if os.getenv("USER") == "eljakim":
|
||||||
|
debugger_reloc = open("/home/eljakim/Source/gupje/source/bin/samsung_s7/debugger_0x0201a000.bin", "rb").read()
|
||||||
|
else:
|
||||||
|
try:
|
||||||
|
debugger_reloc = open("../../dump/reloc_debugger.bin", "rb").read()
|
||||||
|
except Exception as e:
|
||||||
|
print(f'Are you missing your debugger? Please ensure it is present in dump/debugger_0x0201a000.bin. {e}')
|
||||||
|
sys.exit(0)
|
||||||
|
|
||||||
|
self.cd.memwrite_region(0x020c0000, debugger_reloc)
|
||||||
|
# self.usb_write(b"FLSH") # Flush cache
|
||||||
|
self.cd.restore_stack_and_jump(0x020c0000)
|
||||||
|
assert self.usb_read(0x200) == b"GiAs", "Failed to relocate debugger"
|
||||||
|
self.cd.relocate_debugger(0x020c7000, 0x020c0000, 0x020c4000)
|
||||||
|
|
||||||
|
|
||||||
def dumb_interact(self, dump_imems=False):
|
def dumb_interact(self, dump_imems=False):
|
||||||
@ -664,7 +683,7 @@ class ExynosDevice():
|
|||||||
# self.cd.memwrite_region(0x02020, p32(DEBUGGER_ADDR)) # Restore original boot flow
|
# self.cd.memwrite_region(0x02020, p32(DEBUGGER_ADDR)) # Restore original boot flow
|
||||||
|
|
||||||
# Jump into USB download function
|
# Jump into USB download function
|
||||||
# self.cd.arch_dbg.state.LR = DEBUGGER_ADDR
|
self.cd.arch_dbg.state.LR = DEBUGGER_ADDR
|
||||||
|
|
||||||
# WORKS
|
# WORKS
|
||||||
self.cd.restore_stack_and_jump(hijacked_fun)
|
self.cd.restore_stack_and_jump(hijacked_fun)
|
||||||
|
Loading…
Reference in New Issue
Block a user