This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TDA4VM: An error occurs occasionally when the SBL loads the image From the eMMC.

Part Number: TDA4VM


Hi. Expert

SDK version: ti-processor-sdk-rtos-j721e-evm-07_03_00_07

eMMC:Samsung Electronics KLMBG4GEUF-B04Q057

We have made the following modifications to SBL with reference to this link:

1).Enable boot partition and load firmware from boot partition.

2).Unused file system.

register:

MMCSD0_SS_PHY_CTRL_4_REG=0x106000
MMCSD0_SS_PHY_CTRL_5_REG=0x0

By comparing the MD5 value, it is found that the MD5 value changes when the startup fails,

Can you provide me with some troubleshooting ideas?

Report of comparison log:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
	"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>WinMerge File Compare Report</title>
<style type="text/css">
<!--
table {margin: 0; border: 1px solid #a0a0a0; box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.15);}
td,th {word-break: break-all; font-size: 12pt;padding: 0 3px;}
tr { vertical-align: top; }
.title {color: white; background-color: blue; vertical-align: top; padding: 4px 4px; background: linear-gradient(mediumblue, darkblue);}
.sf3b2 {color: #000000; background-color: #ffffff; }
.sf3b5 {color: #000000; background-color: #0078d7; }
.sf3b14 {color: #000000; background-color: #ffa0a0; }
.sf3b16 {color: #000000; background-color: #f1e2ad; }
.sf3b18 {color: #000000; background-color: #ffaa82; }
.sf3b19 {color: #000000; background-color: #c8816c; }
.sf6b2 {color: #ffffff; background-color: #ffffff; }
.sf6b5 {color: #ffffff; background-color: #0078d7; }
.sf6b14 {color: #ffffff; background-color: #ffa0a0; }
.sf6b16 {color: #ffffff; background-color: #f1e2ad; }
.sf6b18 {color: #ffffff; background-color: #ffaa82; }
.sf6b19 {color: #ffffff; background-color: #c8816c; }
.sf7b2 {color: #0000ff; background-color: #ffffff; font-weight: bold; }
.sf7b5 {color: #0000ff; background-color: #0078d7; font-weight: bold; }
.sf7b14 {color: #0000ff; background-color: #ffa0a0; font-weight: bold; }
.sf7b16 {color: #0000ff; background-color: #f1e2ad; font-weight: bold; }
.sf7b18 {color: #0000ff; background-color: #ffaa82; font-weight: bold; }
.sf7b19 {color: #0000ff; background-color: #c8816c; font-weight: bold; }
.sf8b2 {color: #800080; background-color: #ffffff; }
.sf8b5 {color: #800080; background-color: #0078d7; }
.sf8b14 {color: #800080; background-color: #ffa0a0; }
.sf8b16 {color: #800080; background-color: #f1e2ad; }
.sf8b18 {color: #800080; background-color: #ffaa82; }
.sf8b19 {color: #800080; background-color: #c8816c; }
.sf9b2 {color: #008000; background-color: #ffffff; }
.sf9b5 {color: #008000; background-color: #0078d7; }
.sf9b14 {color: #008000; background-color: #ffa0a0; }
.sf9b16 {color: #008000; background-color: #f1e2ad; }
.sf9b18 {color: #008000; background-color: #ffaa82; }
.sf9b19 {color: #008000; background-color: #c8816c; }
.sf10b2 {color: #ff0000; background-color: #ffffff; }
.sf10b5 {color: #ff0000; background-color: #0078d7; }
.sf10b14 {color: #ff0000; background-color: #ffa0a0; }
.sf10b16 {color: #ff0000; background-color: #f1e2ad; }
.sf10b18 {color: #ff0000; background-color: #ffaa82; }
.sf10b19 {color: #ff0000; background-color: #c8816c; }
.sf11b2 {color: #606060; background-color: #ffffff; }
.sf11b5 {color: #606060; background-color: #0078d7; }
.sf11b14 {color: #606060; background-color: #ffa0a0; }
.sf11b16 {color: #606060; background-color: #f1e2ad; }
.sf11b18 {color: #606060; background-color: #ffaa82; }
.sf11b19 {color: #606060; background-color: #c8816c; }
.sf12b2 {color: #800000; background-color: #ffffff; }
.sf12b5 {color: #800000; background-color: #0078d7; }
.sf12b14 {color: #800000; background-color: #ffa0a0; }
.sf12b16 {color: #800000; background-color: #f1e2ad; }
.sf12b18 {color: #800000; background-color: #ffaa82; }
.sf12b19 {color: #800000; background-color: #c8816c; }
.sf13b2 {color: #0080c0; background-color: #ffffff; }
.sf13b5 {color: #0080c0; background-color: #0078d7; }
.sf13b14 {color: #0080c0; background-color: #ffa0a0; }
.sf13b16 {color: #0080c0; background-color: #f1e2ad; }
.sf13b18 {color: #0080c0; background-color: #ffaa82; }
.sf13b19 {color: #0080c0; background-color: #c8816c; }
.sf15b2 {color: #000000; background-color: #ffffff; }
.sf15b5 {color: #000000; background-color: #0078d7; }
.sf15b14 {color: #000000; background-color: #ffa0a0; }
.sf15b16 {color: #000000; background-color: #f1e2ad; }
.sf15b18 {color: #000000; background-color: #ffaa82; }
.sf15b19 {color: #000000; background-color: #c8816c; }
.sf17b2 {color: #000000; background-color: #ffffff; }
.sf17b5 {color: #000000; background-color: #0078d7; }
.sf17b14 {color: #000000; background-color: #ffa0a0; }
.sf17b16 {color: #000000; background-color: #f1e2ad; }
.sf17b18 {color: #000000; background-color: #ffaa82; }
.sf17b19 {color: #000000; background-color: #c8816c; }
.sf20b2 {color: #000080; background-color: #ffffff; }
.sf20b5 {color: #000080; background-color: #0078d7; }
.sf20b14 {color: #000080; background-color: #ffa0a0; }
.sf20b16 {color: #000080; background-color: #f1e2ad; }
.sf20b18 {color: #000080; background-color: #ffaa82; }
.sf20b19 {color: #000080; background-color: #c8816c; }
.sf21b2 {color: #0080c0; background-color: #ffffff; }
.sf21b5 {color: #0080c0; background-color: #0078d7; }
.sf21b14 {color: #0080c0; background-color: #ffa0a0; }
.sf21b16 {color: #0080c0; background-color: #f1e2ad; }
.sf21b18 {color: #0080c0; background-color: #ffaa82; }
.sf21b19 {color: #0080c0; background-color: #c8816c; }
.sf3b2i {color: #ababab; background-color: #ffffff; }
.sf3b5i {color: #005190; background-color: #0078d7; }
.sf3b14i {color: #ab6b6b; background-color: #ffa0a0; }
.sf3b16i {color: #a19774; background-color: #f1e2ad; }
.sf3b18i {color: #ab7257; background-color: #ffaa82; }
.sf3b19i {color: #865749; background-color: #c8816c; }
.sf6b2i {color: #ffffff; background-color: #ffffff; }
.sf6b5i {color: #54a4e4; background-color: #0078d7; }
.sf6b14i {color: #ffbfbf; background-color: #ffa0a0; }
.sf6b16i {color: #f5ebc8; background-color: #f1e2ad; }
.sf6b18i {color: #ffc6ab; background-color: #ffaa82; }
.sf6b19i {color: #daaa9c; background-color: #c8816c; }
.sf7b2i {color: #ababff; background-color: #ffffff; font-weight: bold; }
.sf7b5i {color: #0051e4; background-color: #0078d7; font-weight: bold; }
.sf7b14i {color: #ab6bbf; background-color: #ffa0a0; font-weight: bold; }
.sf7b16i {color: #a197c8; background-color: #f1e2ad; font-weight: bold; }
.sf7b18i {color: #ab72ab; background-color: #ffaa82; font-weight: bold; }
.sf7b19i {color: #86579c; background-color: #c8816c; font-weight: bold; }
.sf8b2i {color: #d5abd5; background-color: #ffffff; }
.sf8b5i {color: #2a51bb; background-color: #0078d7; }
.sf8b14i {color: #d56b96; background-color: #ffa0a0; }
.sf8b16i {color: #cc979f; background-color: #f1e2ad; }
.sf8b18i {color: #d57282; background-color: #ffaa82; }
.sf8b19i {color: #b15772; background-color: #c8816c; }
.sf9b2i {color: #abd5ab; background-color: #ffffff; }
.sf9b5i {color: #007a90; background-color: #0078d7; }
.sf9b14i {color: #ab966b; background-color: #ffa0a0; }
.sf9b16i {color: #a1c274; background-color: #f1e2ad; }
.sf9b18i {color: #ab9d57; background-color: #ffaa82; }
.sf9b19i {color: #868149; background-color: #c8816c; }
.sf10b2i {color: #ffabab; background-color: #ffffff; }
.sf10b5i {color: #545190; background-color: #0078d7; }
.sf10b14i {color: #ff6b6b; background-color: #ffa0a0; }
.sf10b16i {color: #f59774; background-color: #f1e2ad; }
.sf10b18i {color: #ff7257; background-color: #ffaa82; }
.sf10b19i {color: #da5749; background-color: #c8816c; }
.sf11b2i {color: #cbcbcb; background-color: #ffffff; }
.sf11b5i {color: #1f71b0; background-color: #0078d7; }
.sf11b14i {color: #cb8b8b; background-color: #ffa0a0; }
.sf11b16i {color: #c1b794; background-color: #f1e2ad; }
.sf11b18i {color: #cb9277; background-color: #ffaa82; }
.sf11b19i {color: #a67769; background-color: #c8816c; }
.sf12b2i {color: #d5abab; background-color: #ffffff; }
.sf12b5i {color: #2a5190; background-color: #0078d7; }
.sf12b14i {color: #d56b6b; background-color: #ffa0a0; }
.sf12b16i {color: #cc9774; background-color: #f1e2ad; }
.sf12b18i {color: #d57257; background-color: #ffaa82; }
.sf12b19i {color: #b15749; background-color: #c8816c; }
.sf13b2i {color: #abd5eb; background-color: #ffffff; }
.sf13b5i {color: #007ad0; background-color: #0078d7; }
.sf13b14i {color: #ab96aa; background-color: #ffa0a0; }
.sf13b16i {color: #a1c2b3; background-color: #f1e2ad; }
.sf13b18i {color: #ab9d96; background-color: #ffaa82; }
.sf13b19i {color: #868187; background-color: #c8816c; }
.sf15b2i {color: #ababab; background-color: #ffffff; }
.sf15b5i {color: #005190; background-color: #0078d7; }
.sf15b14i {color: #ab6b6b; background-color: #ffa0a0; }
.sf15b16i {color: #a19774; background-color: #f1e2ad; }
.sf15b18i {color: #ab7257; background-color: #ffaa82; }
.sf15b19i {color: #865749; background-color: #c8816c; }
.sf17b2i {color: #ababab; background-color: #ffffff; }
.sf17b5i {color: #005190; background-color: #0078d7; }
.sf17b14i {color: #ab6b6b; background-color: #ffa0a0; }
.sf17b16i {color: #a19774; background-color: #f1e2ad; }
.sf17b18i {color: #ab7257; background-color: #ffaa82; }
.sf17b19i {color: #865749; background-color: #c8816c; }
.sf20b2i {color: #ababd5; background-color: #ffffff; }
.sf20b5i {color: #0051bb; background-color: #0078d7; }
.sf20b14i {color: #ab6b96; background-color: #ffa0a0; }
.sf20b16i {color: #a1979f; background-color: #f1e2ad; }
.sf20b18i {color: #ab7282; background-color: #ffaa82; }
.sf20b19i {color: #865772; background-color: #c8816c; }
.sf21b2i {color: #abd5eb; background-color: #ffffff; }
.sf21b5i {color: #007ad0; background-color: #0078d7; }
.sf21b14i {color: #ab96aa; background-color: #ffa0a0; }
.sf21b16i {color: #a1c2b3; background-color: #f1e2ad; }
.sf21b18i {color: #ab9d96; background-color: #ffaa82; }
.sf21b19i {color: #868187; background-color: #c8816c; }
.ln {text-align: right; word-break: normal; color: #000000; background-color: #f0f0f0;}
-->
</style>
</head>
<body>
<table cellspacing="0" cellpadding="0" style="width:100%;">
<thead>
<tr>
<th colspan="2" class="title" style="width:50.000000%">未命名 左</th>
<th colspan="2" class="title" style="width:50.000000%">未命名 右</th>
</tr>
</thead>
<tbody>
<tr>
<td class="ln"><a name="d1" href="#d1">.</a></td><td style="color: #000000; background-color: #efcb05; "><code><span style="color: #000000; background-color: #efcb05; ">#BOOT </span><span class="sf17b16">success</span>&nbsp;</code></td>
<td class="ln"></td><td style="color: #000000; background-color: #efcb05; "><code><span style="color: #000000; background-color: #efcb05; ">#BOOT </span><span class="sf17b16">error</span>&nbsp;</code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">SBL Revision: 01.00.10.00 (Jul 20 2022 - 14:16:32)</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">SBL Revision: 01.00.10.00 (Jul 20 2022 - 14:16:32)</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">[</span><span class="sf3b22">sysfw</span><span class="sf3b2">] SBL_Read</span><span class="sf3b22">Sysfw</span><span class="sf3b2">Image in [439]</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">[</span><span class="sf3b22">sysfw</span><span class="sf3b2">] SBL_Read</span><span class="sf3b22">Sysfw</span><span class="sf3b2">Image in [439]</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">[SBL]MMCSD0_SS_PHY_CTRL_4_REG=0x106000</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">[SBL]MMCSD0_SS_PHY_CTRL_4_REG=0x106000</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">[SBL]MMCSD0_SS_PHY_CTRL_5_REG=0x0</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">[SBL]MMCSD0_SS_PHY_CTRL_5_REG=0x0</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Getting eMMC parameters</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Getting eMMC parameters</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">eMMC: BlockCount = 0x3a40000</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">eMMC: BlockCount = 0x3a40000</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">eMMC: part_support = 7,part_config =1</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">eMMC: part_support = 7,part_config =1</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">TIFS &nbsp;ver: 21.1.1--v2021.01a (Terrific Lla</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">TIFS &nbsp;ver: 21.1.1--v2021.01a (Terrific Lla</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">SCISERVER Board Configuration header population... PASSED</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">SCISERVER Board Configuration header population... PASSED</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Sciclient_setBoardConfigHeader... PASSED</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Sciclient_setBoardConfigHeader... PASSED</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Initlialzing PINMUX ...done.</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Initlialzing PINMUX ...done.</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Efuse xlated: VD 2 to 825 mV (OppVid: 0x3c, Slave:0x48, Res:0x0)</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Efuse xlated: VD 2 to 825 mV (OppVid: 0x3c, Slave:0x48, Res:0x0)</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Successfully set voltage to 825 mV for Slave:0x48, Res:0x0</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Successfully set voltage to 825 mV for Slave:0x48, Res:0x0</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Initlialzing PLLs ...done.</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Initlialzing PLLs ...done.</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">InitlialzingClocks ...done.</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">InitlialzingClocks ...done.</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Initlialzing DDR ...done.</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Initlialzing DDR ...done.</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Initializing GTC ...</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Initializing GTC ...</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Begin parsing user application</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Begin parsing user application</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Calling Sciclient_procBootRequestProcessor, ProcId 0x20...</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Calling Sciclient_procBootRequestProcessor, ProcId 0x20...</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Calling Sciclient_procBootRequestProcessor, ProcId 0x21...</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Calling Sciclient_procBootRequestProcessor, ProcId 0x21...</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Calling Sciclient_procBootRequestProcessor, ProcId 0x1...</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Calling Sciclient_procBootRequestProcessor, ProcId 0x1...</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Calling Sciclient_procBootRequestProcessor, ProcId 0x2...</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Calling Sciclient_procBootRequestProcessor, ProcId 0x2...</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Calling Sciclient_procBootRequestProcessor, ProcId 0x6...</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Calling Sciclient_procBootRequestProcessor, ProcId 0x6...</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Calling Sciclient_procBootRequestProcessor, ProcId 0x7...</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Calling Sciclient_procBootRequestProcessor, ProcId 0x7...</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Calling Sciclient_procBootRequestProcessor, ProcId 0x8...</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Calling Sciclient_procBootRequestProcessor, ProcId 0x8...</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Calling Sciclient_procBootRequestProcessor, ProcId 0x9...</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Calling Sciclient_procBootRequestProcessor, ProcId 0x9...</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Calling Sciclient_procBootRequestProcessor, ProcId 0x3...</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Calling Sciclient_procBootRequestProcessor, ProcId 0x3...</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Calling Sciclient_procBootRequestProcessor, ProcId 0x4...</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Calling Sciclient_procBootRequestProcessor, ProcId 0x4...</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Calling Sciclient_procBootRequestProcessor, ProcId 0x30...</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Calling Sciclient_procBootRequestProcessor, ProcId 0x30...</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">[APP] SBL_MMCBootImage in [683]</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">[APP] SBL_MMCBootImage in [683]</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Getting eMMC parameters</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Getting eMMC parameters</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">eMMC: BlockCount = 0x3a40000</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">eMMC: BlockCount = 0x3a40000</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">eMMC: part_support = 7,part_config =1</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">eMMC: part_support = 7,part_config =1</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">MD5SUM [0x80004|4] &nbsp; &nbsp; &nbsp;= [de1ea7677a661fa088ae72a03e814b2b] .</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">MD5SUM [0x80004|4] &nbsp; &nbsp; &nbsp;= [de1ea7677a661fa088ae72a03e814b2b] .</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Searching for X509 certificate ...not found</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Searching for X509 certificate ...not found</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">MD5SUM [0x80010|16] &nbsp; &nbsp; = [4cf1d387a467b71e2d3e79bc10138a67] .</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">MD5SUM [0x80010|16] &nbsp; &nbsp; = [4cf1d387a467b71e2d3e79bc10138a67] .</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">MD5SUM [0x80018|8] &nbsp; &nbsp; &nbsp;= [716be7872ae02a396ce54ffec276532a] .</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">MD5SUM [0x80018|8] &nbsp; &nbsp; &nbsp;= [716be7872ae02a396ce54ffec276532a] .</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">MD5SUM [0x80020|8] &nbsp; &nbsp; &nbsp;= [4f7e12bd8fd97c971e2d1075fe660e70] .</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">MD5SUM [0x80020|8] &nbsp; &nbsp; &nbsp;= [4f7e12bd8fd97c971e2d1075fe660e70] .</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">MD5SUM [0x80028|8] &nbsp; &nbsp; &nbsp;= [1f4c74e74a8b02c53c017d7767b8c3e1] .</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">MD5SUM [0x80028|8] &nbsp; &nbsp; &nbsp;= [1f4c74e74a8b02c53c017d7767b8c3e1] .</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">MD5SUM [0x80030|8] &nbsp; &nbsp; &nbsp;= [455c2c66ef9876469b703d0be81bd604] .</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">MD5SUM [0x80030|8] &nbsp; &nbsp; &nbsp;= [455c2c66ef9876469b703d0be81bd604] .</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">MD5SUM [0x80038|8] &nbsp; &nbsp; &nbsp;= [96c90a352b031c5f9f7f3503cd1909c3] .</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">MD5SUM [0x80038|8] &nbsp; &nbsp; &nbsp;= [96c90a352b031c5f9f7f3503cd1909c3] .</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">MD5SUM [0x8004c|20] &nbsp; &nbsp; = [745063875ea3d0efe84851c34d06ea77] .</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">MD5SUM [0x8004c|20] &nbsp; &nbsp; = [745063875ea3d0efe84851c34d06ea77] .</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Switching core id 4, proc_id 0x1 to split mode...</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Switching core id 4, proc_id 0x1 to split mode...</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Calling Sciclient_procBootGetProcessorState, ProcId 0x1...</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Calling Sciclient_procBootGetProcessorState, ProcId 0x1...</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Sciclient_procBootSetProcessorCfg, ProcId 0x1, enabling split mode...</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Sciclient_procBootSetProcessorCfg, ProcId 0x1, enabling split mode...</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Calling Sciclient_procBootGetProcessorState, ProcId 0x1...</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Calling Sciclient_procBootGetProcessorState, ProcId 0x1...</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Enabling MCU TCMs after reset for core 4</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Enabling MCU TCMs after reset for core 4</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Sciclient_procBootSetProcessorCfg update TCM enable/disable settings...</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Sciclient_procBootSetProcessorCfg update TCM enable/disable settings...</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">MD5SUM [0x80060|20] &nbsp; &nbsp; = [82a570654228f398f4bb4b67c10f2bfe] .</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">MD5SUM [0x80060|20] &nbsp; &nbsp; = [82a570654228f398f4bb4b67c10f2bfe] .</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">[4]Copying 0x40 bytes to 0x41010000</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">[4]Copying 0x40 bytes to 0x41010000</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">MD5SUM [0x800a0|64] &nbsp; &nbsp; = [0f3c4044c063a6bac128dce33ddbc630] .</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">MD5SUM [0x800a0|64] &nbsp; &nbsp; = [0f3c4044c063a6bac128dce33ddbc630] .</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">MD5SUM [0x800b4|20] &nbsp; &nbsp; = [bd078f701ecdf05241685d940e2aa9bf] .</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">MD5SUM [0x800b4|20] &nbsp; &nbsp; = [bd078f701ecdf05241685d940e2aa9bf] .</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">[4]Copying 0x5a0 bytes to 0x41010100</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">[4]Copying 0x5a0 bytes to 0x41010100</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">MD5SUM [0x80654|1440] &nbsp; = [0057b8d746d0ed71fc0dd5c7c7330819] .</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">MD5SUM [0x80654|1440] &nbsp; = [0057b8d746d0ed71fc0dd5c7c7330819] .</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">MD5SUM [0x80668|20] &nbsp; &nbsp; = [c10d06a6d13793eb1ce60eb55f23859c] .</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">MD5SUM [0x80668|20] &nbsp; &nbsp; = [c10d06a6d13793eb1ce60eb55f23859c] .</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">[4]Copying 0x20 bytes to 0x410106a0</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">[4]Copying 0x20 bytes to 0x410106a0</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">MD5SUM [0x80688|32] &nbsp; &nbsp; = [72aa4825540028baeb1cb8909d34ddb0] .</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">MD5SUM [0x80688|32] &nbsp; &nbsp; = [72aa4825540028baeb1cb8909d34ddb0] .</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">MD5SUM [0x8069c|20] &nbsp; &nbsp; = [6fa226764b0bf35a5868f5da886b1185] .</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">MD5SUM [0x8069c|20] &nbsp; &nbsp; = [6fa226764b0bf35a5868f5da886b1185] .</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">[4]Copying 0x10 bytes to 0x410106c0</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">[4]Copying 0x10 bytes to 0x410106c0</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">MD5SUM [0x806ac|16] &nbsp; &nbsp; = [70021447594379421f2ad2a0fb3bd3a9] .</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">MD5SUM [0x806ac|16] &nbsp; &nbsp; = [70021447594379421f2ad2a0fb3bd3a9] .</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">MD5SUM [0x806c0|20] &nbsp; &nbsp; = [7f66aa30a192da3e5ac2bb522c661010] .</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">MD5SUM [0x806c0|20] &nbsp; &nbsp; = [7f66aa30a192da3e5ac2bb522c661010] .</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">[4]Copying 0x19da0 bytes to 0xa04a0ae0</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">[4]Copying 0x19da0 bytes to 0xa04a0ae0</span></code></td>
</tr>
<tr>
<td class="ln"><a name="d2" href="#d2">.</a></td><td style="color: #000000; background-color: #efcb05; "><code><span style="color: #000000; background-color: #efcb05; ">MD5SUM [0x9a460|105888] &nbsp; &nbsp; &nbsp; &nbsp; = [</span><span class="sf17b16">07d06f128ce0d46a38baa161f73921e1</span><span style="color: #000000; background-color: #efcb05; ">] .</span></code></td>
<td class="ln"></td><td style="color: #000000; background-color: #efcb05; "><code><span style="color: #000000; background-color: #efcb05; ">MD5SUM [0x9a460|105888] &nbsp; &nbsp; &nbsp; &nbsp; = [</span><span class="sf17b16">62da6f4f90aa3e6208350ed9d61802d7</span><span style="color: #000000; background-color: #efcb05; ">] .</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">MD5SUM [0x9a474|20] &nbsp; &nbsp; = [c11aed61aa700ec246572d2e2b54a017] .</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">MD5SUM [0x9a474|20] &nbsp; &nbsp; = [c11aed61aa700ec246572d2e2b54a017] .</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">[4]Copying 0xe500 bytes to 0xa04ba880</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">[4]Copying 0xe500 bytes to 0xa04ba880</span></code></td>
</tr>
<tr>
<td class="ln"><a name="d3" href="#d3">.</a></td><td style="color: #000000; background-color: #efcb05; "><code><span style="color: #000000; background-color: #efcb05; ">MD5SUM [0xa8974|58624] &nbsp;= [</span><span class="sf17b16">a3066478e572f57988b5d1b639e71ee9</span><span style="color: #000000; background-color: #efcb05; ">] .</span></code></td>
<td class="ln"></td><td style="color: #000000; background-color: #efcb05; "><code><span style="color: #000000; background-color: #efcb05; ">MD5SUM [0xa8974|58624] &nbsp;= [</span><span class="sf17b16">222ff1d7e08c3435be44120fcc8e6718</span><span style="color: #000000; background-color: #efcb05; ">] .</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">MD5SUM [0xa8988|20] &nbsp; &nbsp; = [192afadec280ef60c4f7d0206a693b18] .</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">MD5SUM [0xa8988|20] &nbsp; &nbsp; = [192afadec280ef60c4f7d0206a693b18] .</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">[4]Copying 0x3b20 bytes to 0xa04d6380</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">[4]Copying 0x3b20 bytes to 0xa04d6380</span></code></td>
</tr>
<tr>
<td class="ln"><a name="d4" href="#d4">.</a></td><td style="color: #000000; background-color: #efcb05; "><code><span style="color: #000000; background-color: #efcb05; ">MD5SUM [0xac4a8|15136] &nbsp;= [</span><span class="sf17b16">60ca861b2e62e78cd887968a479717c5</span><span style="color: #000000; background-color: #efcb05; ">] .</span></code></td>
<td class="ln"></td><td style="color: #000000; background-color: #efcb05; "><code><span style="color: #000000; background-color: #efcb05; ">MD5SUM [0xac4a8|15136] &nbsp;= [</span><span class="sf17b16">98ae31bfc3aed6a9af1085c8a85cc45d</span><span style="color: #000000; background-color: #efcb05; ">] .</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">MD5SUM [0xac4bc|20] &nbsp; &nbsp; = [64eec8636e1e3735bb379b635ce6d9c1] .</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">MD5SUM [0xac4bc|20] &nbsp; &nbsp; = [64eec8636e1e3735bb379b635ce6d9c1] .</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">[4]Copying 0xc bytes to 0xa04dbea0</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">[4]Copying 0xc bytes to 0xa04dbea0</span></code></td>
</tr>
<tr>
<td class="ln"><a name="d5" href="#d5">.</a></td><td style="color: #000000; background-color: #efcb05; "><code><span style="color: #000000; background-color: #efcb05; ">MD5SUM [0xac4c8|12] &nbsp; &nbsp; = [</span><span class="sf17b16">56a538404bb7d1fca1ceb9bf1d1f8ff0</span><span style="color: #000000; background-color: #efcb05; ">] .</span></code></td>
<td class="ln"></td><td style="color: #000000; background-color: #efcb05; "><code><span style="color: #000000; background-color: #efcb05; ">MD5SUM [0xac4c8|12] &nbsp; &nbsp; = [</span><span class="sf17b16">4fc517e00facb2095ef122437cd64b34</span><span style="color: #000000; background-color: #efcb05; ">] .</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">MD5SUM [0xac4dc|20] &nbsp; &nbsp; = [4b773adf9063ed882538dcf661faefd9] .</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">MD5SUM [0xac4dc|20] &nbsp; &nbsp; = [4b773adf9063ed882538dcf661faefd9] .</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">[4]Copying 0x1900 bytes to 0xa04dbf00</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">[4]Copying 0x1900 bytes to 0xa04dbf00</span></code></td>
</tr>
<tr>
<td class="ln"><a name="d6" href="#d6">.</a></td><td style="color: #000000; background-color: #efcb05; "><code><span style="color: #000000; background-color: #efcb05; ">MD5SUM [0xadddc|6400] &nbsp; = [</span><span class="sf17b16">abbee0fad6f71cfa24a7157d29bc1a40</span><span style="color: #000000; background-color: #efcb05; ">] .</span></code></td>
<td class="ln"></td><td style="color: #000000; background-color: #efcb05; "><code><span style="color: #000000; background-color: #efcb05; ">MD5SUM [0xadddc|6400] &nbsp; = [</span><span class="sf17b16">7cfad219419ad5304f88e79e97e1a1c9</span><span style="color: #000000; background-color: #efcb05; ">] .</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">MD5SUM [0xaddf0|20] &nbsp; &nbsp; = [0a699dc45756439bfe699d665309860f] .</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">MD5SUM [0xaddf0|20] &nbsp; &nbsp; = [0a699dc45756439bfe699d665309860f] .</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">[4]Copying 0x1364 bytes to 0xa04dd800</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">[4]Copying 0x1364 bytes to 0xa04dd800</span></code></td>
</tr>
<tr>
<td class="ln"><a name="d7" href="#d7">.</a></td><td style="color: #000000; background-color: #efcb05; "><code><span style="color: #000000; background-color: #efcb05; ">MD5SUM [0xaf154|4964] &nbsp; = [</span><span class="sf17b16">f2146b34a3f3ee49657bbd4b0684025</span><span style="color: #000000; background-color: #efcb05; ">9] .</span></code></td>
<td class="ln"></td><td style="color: #000000; background-color: #efcb05; "><code><span style="color: #000000; background-color: #efcb05; ">MD5SUM [0xaf154|4964] &nbsp; = [</span><span class="sf17b16">34045d183bee49ce4b49971bbcca8f1</span><span style="color: #000000; background-color: #efcb05; ">9] .</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">MD5SUM [0xaf168|20] &nbsp; &nbsp; = [df2efb8f9352167f7f7281f3ed62dd87] .</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">MD5SUM [0xaf168|20] &nbsp; &nbsp; = [df2efb8f9352167f7f7281f3ed62dd87] .</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">[4]Copying 0xc5c bytes to 0xa04dfa78</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">[4]Copying 0xc5c bytes to 0xa04dfa78</span></code></td>
</tr>
<tr>
<td class="ln"><a name="d8" href="#d8">.</a></td><td style="color: #000000; background-color: #efcb05; "><code><span style="color: #000000; background-color: #efcb05; ">MD5SUM [0xafdc4|3164] &nbsp; = [</span><span class="sf17b16">88ac56c7794b4d65903e786f65827aa8</span><span style="color: #000000; background-color: #efcb05; ">] .</span></code></td>
<td class="ln"></td><td style="color: #000000; background-color: #efcb05; "><code><span style="color: #000000; background-color: #efcb05; ">MD5SUM [0xafdc4|3164] &nbsp; = [</span><span class="sf17b16">2d6aae9f2ecb63edf991216663c37797</span><span style="color: #000000; background-color: #efcb05; ">] .</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">MD5SUM [0xafdd8|20] &nbsp; &nbsp; = [2a93c272fc0ff6219930aaea17a64e1e] .</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">MD5SUM [0xafdd8|20] &nbsp; &nbsp; = [2a93c272fc0ff6219930aaea17a64e1e] .</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">[4]Copying 0x770 bytes to 0xa04e19ac</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">[4]Copying 0x770 bytes to 0xa04e19ac</span></code></td>
</tr>
<tr>
<td class="ln"><a name="d9" href="#d9">.</a></td><td style="color: #000000; background-color: #efcb05; "><code><span style="color: #000000; background-color: #efcb05; ">MD5SUM [0xb0548|1904] &nbsp; = [</span><span class="sf17b16">8cccde645e46beb7523b8734ceed3a0d</span><span style="color: #000000; background-color: #efcb05; ">] .</span></code></td>
<td class="ln"></td><td style="color: #000000; background-color: #efcb05; "><code><span style="color: #000000; background-color: #efcb05; ">MD5SUM [0xb0548|1904] &nbsp; = [</span><span class="sf17b16">c4b303bbb32246ab4de50349908a13fb</span><span style="color: #000000; background-color: #efcb05; ">] .</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">MD5SUM [0xb055c|20] &nbsp; &nbsp; = [57f7c793ceb84a7c16e65fe02b9d2f9f] .</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">MD5SUM [0xb055c|20] &nbsp; &nbsp; = [57f7c793ceb84a7c16e65fe02b9d2f9f] .</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">[4]Copying 0xa18 bytes to 0xa04e2b08</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">[4]Copying 0xa18 bytes to 0xa04e2b08</span></code></td>
</tr>
<tr>
<td class="ln"><a name="d10" href="#d10">.</a></td><td style="color: #000000; background-color: #efcb05; "><code><span style="color: #000000; background-color: #efcb05; ">MD5SUM [0xb0f74|2584] &nbsp; = [</span><span class="sf17b16">abaf7e251c83098c1b8e9cb1695aa037</span><span style="color: #000000; background-color: #efcb05; ">] .</span></code></td>
<td class="ln"></td><td style="color: #000000; background-color: #efcb05; "><code><span style="color: #000000; background-color: #efcb05; ">MD5SUM [0xb0f74|2584] &nbsp; = [</span><span class="sf17b16">42c13110e78c408df817f9a4e81c32a1</span><span style="color: #000000; background-color: #efcb05; ">] .</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Setting entry point for core 4 @0x41010000</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Setting entry point for core 4 @0x41010000</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">MD5SUM [0xb0f88|20] &nbsp; &nbsp; = [2d3b9baf3cf0e1390c32eaf884d213f6] .</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">MD5SUM [0xb0f88|20] &nbsp; &nbsp; = [2d3b9baf3cf0e1390c32eaf884d213f6] .</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">MD5SUM [0xb0f9c|20] &nbsp; &nbsp; = [49d0047d0996c67398e15612050340a4] .</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">MD5SUM [0xb0f9c|20] &nbsp; &nbsp; = [49d0047d0996c67398e15612050340a4] .</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">[21]Copying 0x5e6d0 bytes to 0x9e800000</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">[21]Copying 0x5e6d0 bytes to 0x9e800000</span></code></td>
</tr>
<tr>
<td class="ln"><a name="d11" href="#d11">.</a></td><td style="color: #000000; background-color: #efcb05; "><code><span style="color: #000000; background-color: #efcb05; ">MD5SUM [0x10f66c|386768] &nbsp; &nbsp; &nbsp; &nbsp;= [</span><span class="sf17b16">19d321ae0b9b72c532304eefcd06bd29</span><span style="color: #000000; background-color: #efcb05; ">] .</span></code></td>
<td class="ln"></td><td style="color: #000000; background-color: #efcb05; "><code><span style="color: #000000; background-color: #efcb05; ">MD5SUM [0x10f66c|386768] &nbsp; &nbsp; &nbsp; &nbsp;= [</span><span class="sf17b16">4b18e50a415c36cd223f84d250c10950</span><span style="color: #000000; background-color: #efcb05; ">] .</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Only load (not execute) image @0x9e800000</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Only load (not execute) image @0x9e800000</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">MD5SUM [0x10f680|20] &nbsp; &nbsp;= [e90a0b981493c10b203617a6789774b5] .</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">MD5SUM [0x10f680|20] &nbsp; &nbsp;= [e90a0b981493c10b203617a6789774b5] .</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">MD5SUM [0x10f694|20] &nbsp; &nbsp;= [2aaa2af85b9b895815dd3260a70e0ae0] .</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">MD5SUM [0x10f694|20] &nbsp; &nbsp;= [2aaa2af85b9b895815dd3260a70e0ae0] .</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">[21]Copying 0x46e58 bytes to 0x80080000</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">[21]Copying 0x46e58 bytes to 0x80080000</span></code></td>
</tr>
<tr>
<td class="ln"><a name="d12" href="#d12">.</a></td><td style="color: #000000; background-color: #efcb05; "><code><span style="color: #000000; background-color: #efcb05; ">MD5SUM [0x1564ec|290392] &nbsp; &nbsp; &nbsp; &nbsp;= [</span><span class="sf17b16">5618c2c8a50d670d11bd7a0038ba1188</span><span style="color: #000000; background-color: #efcb05; ">] .</span></code></td>
<td class="ln"></td><td style="color: #000000; background-color: #efcb05; "><code><span style="color: #000000; background-color: #efcb05; ">MD5SUM [0x1564ec|290392] &nbsp; &nbsp; &nbsp; &nbsp;= [</span><span class="sf17b16">b4ab9c763b39e022e9d37eda3e5a3b1f</span><span style="color: #000000; background-color: #efcb05; ">] .</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Only load (not execute) image @0x80080000</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Only load (not execute) image @0x80080000</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">MD5SUM [0x156500|20] &nbsp; &nbsp;= [c935892bc092bf41d1d439a38825ca06] .</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">MD5SUM [0x156500|20] &nbsp; &nbsp;= [c935892bc092bf41d1d439a38825ca06] .</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Sciclient_pmSetModuleState On, DevId 0x4...</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Sciclient_pmSetModuleState On, DevId 0x4...</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">MD5SUM [0x156514|20] &nbsp; &nbsp;= [ac401b2906b987b2064e1b9de54cf5ac] .</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">MD5SUM [0x156514|20] &nbsp; &nbsp;= [ac401b2906b987b2064e1b9de54cf5ac] .</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">[0]Copying 0x9bf0 bytes to 0x70000000</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">[0]Copying 0x9bf0 bytes to 0x70000000</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">MD5SUM [0x160104|39920] &nbsp; &nbsp; &nbsp; &nbsp; = [0a50959ce99d73fe440ba99069a9ac3f] .</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">MD5SUM [0x160104|39920] &nbsp; &nbsp; &nbsp; &nbsp; = [0a50959ce99d73fe440ba99069a9ac3f] .</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Setting entry point for core 0 @0x70000000</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Setting entry point for core 0 @0x70000000</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">SBL_MMC APP ImageParse done.[733]</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">SBL_MMC APP ImageParse done.[733]</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Sciclient_procBootReleaseProcessor, ProcId 0x20...</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Sciclient_procBootReleaseProcessor, ProcId 0x20...</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Sciclient_procBootReleaseProcessor, ProcId 0x21...</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Sciclient_procBootReleaseProcessor, ProcId 0x21...</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Sciclient_procBootReleaseProcessor, ProcId 0x1...</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Sciclient_procBootReleaseProcessor, ProcId 0x1...</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Sciclient_procBootReleaseProcessor, ProcId 0x2...</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Sciclient_procBootReleaseProcessor, ProcId 0x2...</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Sciclient_procBootReleaseProcessor, ProcId 0x6...</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Sciclient_procBootReleaseProcessor, ProcId 0x6...</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Sciclient_procBootReleaseProcessor, ProcId 0x7...</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Sciclient_procBootReleaseProcessor, ProcId 0x7...</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Sciclient_procBootReleaseProcessor, ProcId 0x8...</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Sciclient_procBootReleaseProcessor, ProcId 0x8...</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Sciclient_procBootReleaseProcessor, ProcId 0x9...</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Sciclient_procBootReleaseProcessor, ProcId 0x9...</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Sciclient_procBootReleaseProcessor, ProcId 0x3...</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Sciclient_procBootReleaseProcessor, ProcId 0x3...</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Sciclient_procBootReleaseProcessor, ProcId 0x4...</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Sciclient_procBootReleaseProcessor, ProcId 0x4...</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Sciclient_procBootReleaseProcessor, ProcId 0x30...</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Sciclient_procBootReleaseProcessor, ProcId 0x30...</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Calling Sciclient_procBootRequestProcessor, ProcId 0x20...</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Calling Sciclient_procBootRequestProcessor, ProcId 0x20...</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Sciclient_procBootSetProcessorCfg, ProcId 0x20, EntryPoint 0x70000000...</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Sciclient_procBootSetProcessorCfg, ProcId 0x20, EntryPoint 0x70000000...</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Sciclient_pmSetModuleClkFreq, DevId 0xca @ 2000000000Hz...</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Sciclient_pmSetModuleClkFreq, DevId 0xca @ 2000000000Hz...</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Sciclient_pmSetModuleState Off, DevId 0xca...</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Sciclient_pmSetModuleState Off, DevId 0xca...</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Sciclient_pmSetModuleState On, DevId 0xca...</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Sciclient_pmSetModuleState On, DevId 0xca...</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Sciclient_procBootReleaseProcessor, ProcId 0x20...</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Sciclient_procBootReleaseProcessor, ProcId 0x20...</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">sbl init Cortex-A done.[523]</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">sbl init Cortex-A done.[523]</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">sbl init MCU1 start.[536][0x41010000][0xfffffffe]</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">sbl init MCU1 start.[536][0x41010000][0xfffffffe]</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Calling Sciclient_procBootRequestProcessor, ProcId 0x1...</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Calling Sciclient_procBootRequestProcessor, ProcId 0x1...</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Sciclient_procBootSetProcessorCfg, ProcId 0x1, EntryPoint 0x41010000...</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Sciclient_procBootSetProcessorCfg, ProcId 0x1, EntryPoint 0x41010000...</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Sciclient_pmSetModuleClkFreq, DevId 0xfa @ 1000000000Hz...</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Sciclient_pmSetModuleClkFreq, DevId 0xfa @ 1000000000Hz...</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Copying first 128 bytes from app to MCU ATCM @ 0x0 for core 4</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Copying first 128 bytes from app to MCU ATCM @ 0x0 for core 4</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Calling Sciclient_procBootRequestProcessor, ProcId 0x2...</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Calling Sciclient_procBootRequestProcessor, ProcId 0x2...</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Skipping Sciclient_procBootSetProcessorCfg for ProcId 0x2, EntryPoint 0xfffffffe...</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Skipping Sciclient_procBootSetProcessorCfg for ProcId 0x2, EntryPoint 0xfffffffe...</span></code></td>
</tr>
<tr>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Calling Sciclient_procBootRequestProcessor, ProcId 0x1...</span></code></td>
<td class="ln"></td><td class="sf3b2"><code><span class="sf3b2">Calling Sciclient_procBootRequestProcessor, ProcId 0x1...</span></code></td>
</tr>
<tr>
<td class="ln"><a name="d13" href="#d13">.</a></td><td style="color: #000000; background-color: #efcb05; "><code><span class="sf17b18">Starting Sciserver..... PASSED</span>&nbsp;</code></td>
<td class="ln"></td><td style="color: #000000; background-color: #efcb05; "><code>&nbsp;</code></td>
</tr>
</tbody>
</table>
</body>
</html>

 

Thanks.

Best regards,

xin he

  • Hi xie he,

    It seems there are changes from the released SBL, could you please share the changes for the review?

    Regards,

    Brijesh

  • Hi Brijesh,

    Sorry for the late reply.

    sbl_mmcsd patch:

    From 283e6b6733dd958ff22ac75491100f9f1973ba2b Mon Sep 17 00:00:00 2001
    From: "xin.he" <xin.he@hirain.com>
    Date: Thu, 21 Jul 2022 14:37:06 +0800
    Subject: [PATCH] sbl boot
    
    Change-Id: I9d890a045a5e5bc56b042049343a1cf8769b8423
    ---
     .../ti/boot/sbl/src/mmcsd/sbl_mmcsd.c         | 411 ++++++++++++++++--
     1 file changed, 382 insertions(+), 29 deletions(-)
    
    diff --git a/pdk_jacinto_07_03_00_29/packages/ti/boot/sbl/src/mmcsd/sbl_mmcsd.c b/pdk_jacinto_07_03_00_29/packages/ti/boot/sbl/src/mmcsd/sbl_mmcsd.c
    index 3fd80764..a8f15285 100644
    --- a/pdk_jacinto_07_03_00_29/packages/ti/boot/sbl/src/mmcsd/sbl_mmcsd.c
    +++ b/pdk_jacinto_07_03_00_29/packages/ti/boot/sbl/src/mmcsd/sbl_mmcsd.c
    @@ -52,6 +52,7 @@
     /* SBL Header files. */
     #include "sbl_rprc_parse.h"
     #include "sbl_mmcsd.h"
    +#include "mbedtls_md5.h"
     
     /* K3 Header files */
     #ifdef BUILD_MCU
    @@ -62,6 +63,7 @@
     #include "sbl_sec.h"
     #endif
     
    +#define BOOT_EMMC
     /**
      * \brief    SBL_FileRead function reads N bytes from SD card and
      *           advances the cursor.
    @@ -218,70 +220,302 @@ extern MMCSD_v1_HwAttrs MMCSDInitCfg[];
     extern SBL_incomingBootData_S sblInBootData;
     #endif
     
    +
    +
     #ifdef BUILD_MCU
    -int32_t SBL_ReadSysfwImage(void **pBuffer, uint32_t num_bytes)
    +
    +MMCSD_Handle handle = NULL;
    +mbedtls_md5_context md5_ctx;
    +#define SYSFW_ADDR                      (0x3600)
    +#define SPL_APP_ADDR                        (0x400)
    +
    +#define SECTORSIZE                      (512U)
    +#define BLOCKSIZE                       (2048U)
    +#define TESTSECTORS    					(1U) //16 //1
    +
    +#ifndef MIN
    +
    +#define MIN(x, y) __extension__ ({	\
    +	__typeof__(x) _x = (x);		\
    +	__typeof__(y) _y = (y);		\
    +	(void)(&_x == &_y);		\
    +	_x < _y ? _x : _y;		\
    +})
    +
    +#endif
    +//block-->pages
    +#if 1
    +
    +static void mem_cpy(void *dst, const void *src, uint32_t cnt)
     {
    -    int32_t retVal = CSL_PASS;
    -#if defined(SOC_J721E) || defined(SOC_J7200)
    -    const TCHAR *fileName = "0:/tifs.bin";
    +    uint8_t *d = (uint8_t *)dst;
    +    const uint8_t *s = (const uint8_t *)src;
    +
    +    if (cnt)
    +    {
    +        do
    +            *d++ = *s++;
    +        while (--cnt);
    +    }
    +}
    +
    +static int32_t Read_MMCSD (uint8_t *buff, uint32_t offset, uint32_t length)
    +{
    +	uint32_t start_blk = 0;
    +	uint32_t end_blk = 0;
    +	uint32_t num_blk = 0;
    +	uint32_t curr_blk = 0;
    +	uint32_t remainder = 0;
    +	uint32_t size = 0;
    +	uint32_t read_bytes = 0;
    +	int32_t retVal = E_PASS;
    +	uint8_t tmp_buff[SECTORSIZE];
    +
    +	start_blk = offset / SECTORSIZE;
    +	end_blk = (offset + length - 1) / SECTORSIZE;		
    +	num_blk = end_blk - start_blk + 1;
    +
    +	curr_blk = start_blk;
    +	remainder = offset & (SECTORSIZE-1); // offset % 512 != 0
    +
    +	if (remainder) 
    +	{
    +		if(MMCSD_OK != MMCSD_read(handle, tmp_buff, curr_blk, 1))
    +		{
    +			UART_printf("RAW READ/WRITE: FAIL: Read failed on sector %x\n", curr_blk);
    +			retVal = E_FAIL;
    +		}
    +		else 
    +		{
    +			if (remainder+length> SECTORSIZE)
    +				size = SECTORSIZE - remainder;
    +			else
    +				size = length;
    +			mem_cpy((void *)buff, (void *)(tmp_buff+remainder), size);
    +			
    +			num_blk--;
    +			curr_blk++;
    +			read_bytes = size;
    +		}
    +	}
    +
    +	if (retVal == E_PASS)	
    +	{
    +		if (num_blk > 0)
    +		{
    +			uint32_t blk;
    +			remainder = (length-read_bytes) & (SECTORSIZE-1); // length-read_bytes % 512
    +			if (remainder == 0)
    +				blk = num_blk;
    +			else
    +				blk = num_blk - 1;
    +			if (blk)
    +			{
    +				if(MMCSD_OK != MMCSD_read(handle, buff+read_bytes, curr_blk, blk))
    +				{
    +					UART_printf("RAW READ/WRITE: FAIL: Read failed on sector %x\n", curr_blk);
    +					retVal = E_FAIL;
    +				}
    +				else
    +				{
    +					num_blk -= blk;
    +					curr_blk += blk;
    +					read_bytes += blk*SECTORSIZE;
    +				}
    +			}
    +		}
    +	}
    +
    +	if (retVal == E_PASS)
    +	{
    +		if (num_blk == 1)
    +		{
    +			if(MMCSD_OK != MMCSD_read(handle, tmp_buff, curr_blk, 1))
    +			{
    +				UART_printf("RAW READ/WRITE: FAIL: Read failed on sector %x\n", curr_blk);
    +            	retVal = E_FAIL;
    +			}
    +			else 
    +			{
    +				mem_cpy((void*)(buff+read_bytes), (void *)tmp_buff, length-read_bytes);
    +			}			
    +		}
    +		else if (num_blk > 1)
    +		{
    +			UART_printf("Invalid the number of black\n");
    +            retVal = E_FAIL;
    +		}
    +	}
    +    return retVal;
    +}
    +
     #else
    -    const TCHAR *fileName = "0:/sysfw.bin";
    +
     #endif
    -    FIL     fp = {0};
    -    FRESULT  fresult;
    -    uint32_t bytes_read = 0;
    +
    +int32_t SBL_ReadSysfwImageFromBOOT(void **pBuffer, uint32_t num_bytes)
    +{
    +    int32_t retVal = CSL_PASS;
    +    uint32_t read_sectors = 0;
         void *sysfw_ptr = *pBuffer;
    +
    +
    +    UART_printf("[sysfw] SBL_ReadSysfwImage in [%d]\r\n", __LINE__);
    +    retVal = MMCSD_open(0, NULL, &handle);
    +    
    +	if(MMCSD_OK != retVal)
    +	{
    +		UART_printf ("\n MMCSD_Open failed with retval=%d\r\n",retVal);
    +		retVal = E_FAIL;
    +	}
    +
    +    UART_printf("[SBL]MMCSD0_SS_PHY_CTRL_4_REG=0x%x\n", CSL_REG32_RD(0x4f88000UL + 0x10cUL));
    +    UART_printf("[SBL]MMCSD0_SS_PHY_CTRL_5_REG=0x%x\n", CSL_REG32_RD(0x4f88000UL + 0x110UL));
    +    int8_t partition = 1;
    +
    +    /* Media configuration such as eMMC size, blocksize, blockCount */
    +    uint32_t blockCount;
    +    MMCSD_mediaParams mediaParams;
    +
    +    UART_printf("Getting eMMC parameters\n");
    +    if ((retVal = MMCSD_control(handle, MMCSD_CMD_GETMEDIAPARAMS, (void *)&mediaParams)) != MMCSD_OK)
    +    {
    +        UART_printf("Getting eMMC parameters failed !!");
    +        return -1;
    +    }
    +    blockCount = (unsigned int)(mediaParams.blockCount & 0xFFFFFFFF);
    +    UART_printf("eMMC: BlockCount = 0x%x \n", (unsigned int)(mediaParams.blockCount & 0xFFFFFFFF));
    +    UART_printf("eMMC: part_support = %d,part_config =%d\n", mediaParams.part_support, (mediaParams.part_config >> 3) & PART_ACCESS_MASK);
    +    retVal = retVal;
    +    blockCount = blockCount;
    +
    +    partition = (mediaParams.part_config >> 3) & PART_ACCESS_MASK;
    +
    +    if (partition != 7)
    +    {
    +        if ((retVal = MMCSD_control(handle, MMCSD_CMD_ENABLEBOOTPARTITION,
    +                                    (void *)&partition)))
    +        {
    +            UART_printf("BOOTPARTITION error \n");
    +        }
    +    }
    +    else
    +    {
    +        UART_printf("BOOTPARTITION form UDA \n");
    +        retVal = -1;
    +    }
    +
    +    if (retVal == MMCSD_OK)
    +    {
    +        read_sectors = (num_bytes % SECTORSIZE) == 0 ? num_bytes / SECTORSIZE : (num_bytes / SECTORSIZE) + 1;
    +        retVal = MMCSD_read(handle, sysfw_ptr, SYSFW_ADDR, read_sectors);
    +        if (retVal != MMCSD_OK)
    +        {
    +            UART_printf("FAIL: Read failed on sector 0x%x", SYSFW_ADDR);
    +        }
    +    }
    +
    +    MMCSD_close(handle);
    +    handle = NULL;
    +
    +    return retVal;
    +}
    +
    +
    +static int emmc_hw_init(void) 
    +{
    +    int32_t retVal = CSL_PASS;
         MMCSD_v2_HwAttrs hwAttrsConfig;
     
    -     if(MMCSD_socGetInitCfg(FATFS_initCfg[0].drvInst,&hwAttrsConfig)!=0) {
    -       UART_printf("\nUnable to get config.Exiting. TEST FAILED.\r\n");
    -       retVal = E_FAIL;
    -     }
    +    if (MMCSD_socGetInitCfg(0, &hwAttrsConfig) != 0)
    +    {
    +        UART_printf("\nUnable to get config.Exiting. TEST FAILED.\r\n");
    +        retVal = E_FAIL;
    +    }
     
     #if defined(SOC_J721E) || defined(SOC_J7200)
         uint32_t wkupCtrlDevstat = (*((volatile uint32_t *)(CSL_WKUP_CTRL_MMR0_CFG0_BASE + CSL_WKUP_CTRL_MMR_CFG0_WKUP_DEVSTAT)));
         uint32_t mainCtrlDevstat = (*((volatile uint32_t *)(CSL_CTRL_MMR0_CFG0_BASE + CSL_MAIN_CTRL_MMR_CFG0_MAIN_DEVSTAT)));
     
    -    if(((wkupCtrlDevstat & SBL_WKUP_DEVSTAT_PRIMARY_BOOT_MASK) == SBL_WKUP_DEVSTAT_PRIMARY_BOOT_MMCSD) &&
    -       ((mainCtrlDevstat & SBL_MAIN_DEVSTAT_PRIMARY_BOOT_B_MASK) == SBL_MAIN_DEVSTAT_PRIMARY_BOOT_B_MASK))
    +    if (((wkupCtrlDevstat & SBL_WKUP_DEVSTAT_PRIMARY_BOOT_MASK) == SBL_WKUP_DEVSTAT_PRIMARY_BOOT_MMCSD) &&
    +        ((mainCtrlDevstat & SBL_MAIN_DEVSTAT_PRIMARY_BOOT_B_MASK) == SBL_MAIN_DEVSTAT_PRIMARY_BOOT_B_MASK))
         {
             /* MMCSD as primary bootmode */
             /* Check MAIN CTRL MMR DEVSTAT register for Primary boot mode Bus Width */
    -        if((mainCtrlDevstat & SBL_MAIN_DEVSTAT_PRIMARY_BUS_WIDTH_MASK) == SBL_MAIN_DEVSTAT_PRIMARY_BUS_WIDTH_MASK)
    +        if ((mainCtrlDevstat & SBL_MAIN_DEVSTAT_PRIMARY_BUS_WIDTH_MASK) == SBL_MAIN_DEVSTAT_PRIMARY_BUS_WIDTH_MASK)
             {
                 hwAttrsConfig.supportedBusWidth = MMCSD_BUS_WIDTH_1BIT;
             }
             else
             {
    -            hwAttrsConfig.supportedBusWidth = MMCSD_BUS_WIDTH_4BIT;
    +            hwAttrsConfig.supportedBusWidth = MMCSD_BUS_WIDTH_8BIT;
             }
         }
    -    else if((mainCtrlDevstat & SBL_MAIN_DEVSTAT_BACKUP_BOOT_MASK) == SBL_MAIN_DEVSTAT_BACKUP_BOOT_MMCSD)
    +    else if ((mainCtrlDevstat & SBL_MAIN_DEVSTAT_BACKUP_BOOT_MASK) == SBL_MAIN_DEVSTAT_BACKUP_BOOT_MMCSD)
         {
             /* MMCSD as backup bootmode only supports 1-bit bus width, as set by ROM code */
             hwAttrsConfig.supportedBusWidth = MMCSD_BUS_WIDTH_1BIT;
         }
         else
         {
    -        hwAttrsConfig.supportedBusWidth = MMCSD_BUS_WIDTH_4BIT;
    +        hwAttrsConfig.supportedBusWidth = MMCSD_BUS_WIDTH_8BIT;
         }
     #endif
    +    // UART_printf("SBL_ReadSysfwImage in [%d],supportedBusWidth=%d\r\n",__LINE__,hwAttrsConfig.supportedBusWidth);
    +    // hwAttrsConfig.enableInterrupt = ((uint32_t)(0U));
    +    // hwAttrsConfig.configSocIntrPath = NULL;
    +#if defined(BOOT_EMMC)
    +    // hwAttrsConfig.supportedModes = (MMCSD_SUPPORT_MMC_HS_DDR);
    +    // hwAttrsConfig.cardType = MMCSD_CARD_EMMC;
    +#endif
     
    -    hwAttrsConfig.enableInterrupt = ((uint32_t)(0U));
    -    hwAttrsConfig.configSocIntrPath=NULL;
    +    if (MMCSD_socSetInitCfg(0, &hwAttrsConfig) != 0)
    +    {
    +        UART_printf("\nUnable to set config.Exiting.  FAILED.\n");
    +        retVal = E_FAIL;
    +    }
     
    -    if(MMCSD_socSetInitCfg(FATFS_initCfg[0].drvInst,&hwAttrsConfig)!=0) {
    -       UART_printf("\nUnable to set config.Exiting. TEST FAILED.\r\n");
    -       retVal = E_FAIL;
    -     }
    +    MMCSD_init();
     
    +    return retVal;
    +}
    +
    +
    +int32_t SBL_ReadSysfwImage(void **pBuffer, uint32_t num_bytes)
    +{
    +    int32_t retVal = CSL_PASS;
    +#if defined(SOC_J721E) || defined(SOC_J7200)
    +    const TCHAR *fileName = "0:/tifs.bin";
    +#else
    +    const TCHAR *fileName = "0:/sysfw.bin";
    +#endif
    +    FIL     fp = {0};
    +    FRESULT  fresult;
    +    uint32_t bytes_read = 0;
    +    void *sysfw_ptr = *pBuffer;
    +    retVal = emmc_hw_init();
    +    if (retVal != CSL_PASS)
    +    {
    +        UART_printf("emmc_hw_init error\r\n");
    +        return retVal;
    +    }
    +
    +#if defined(BOOT_EMMC)
    +     if (SBL_ReadSysfwImageFromBOOT(pBuffer, num_bytes) == 0)
    +     {
    +         return 0;
    +     }
    +     else
    +     {
    +         UART_printf("SBL_ReadSysfwImageFromBOOT error\r\n");
    +     }
    +#endif
         /* Initialization of the driver. */
         FATFS_init();
    -
         /* MMCSD FATFS initialization */
         FATFS_open(0U, NULL, &sbl_fatfsHandle);
     
    -    fresult = f_open(&fp, fileName, ((BYTE)FA_READ));
    +    fresult = f_open(&fp, fileName, ((uint8_t)FA_READ));
         if (fresult != FR_OK)
         {
     #if defined(SOC_J721E) || defined(SOC_J7200)
    @@ -314,6 +548,124 @@ int32_t SBL_ReadSysfwImage(void **pBuffer, uint32_t num_bytes)
     }
     #endif
     
    +#if 1
    +
    +int32_t SBL_EMMCBOOT_Read(void *dstAddr,
    +                             void *srcOffsetAddr,
    +                             uint32_t length)
    +{
    +    int32_t retVal;
    +    retVal = Read_MMCSD(dstAddr, *((uint32_t *)srcOffsetAddr), length);
    +    *((uint32_t *)srcOffsetAddr) += length;
    +#if 1
    +    // mbedtls_md5_update(&md5_ctx, dstAddr, length);
    +    {
    +        unsigned char md5buf_sum[16];
    +        int index;
    +        extern int mbedtls_md5(const unsigned char *input, size_t ilen, unsigned char output[16]);
    +        memset(md5buf_sum, 0, sizeof(md5buf_sum));
    +        mbedtls_md5(dstAddr, length, md5buf_sum);
    +        UART_printf("MD5SUM [0x%x|%d] \t= [", *((uint32_t *)srcOffsetAddr), length);
    +        for (index = 0; index < sizeof(md5buf_sum); index++)
    +        {
    +            UART_printf("%02x", md5buf_sum[index]);
    +        }
    +        UART_printf("] .\n");
    +    }
    +#endif
    +    return retVal;
    +}
    +
    +void SBL_EMMCBOOT_seek(void *srcAddr, uint32_t location)
    +{
    +    *((uint32_t *) srcAddr) = location;
    +    // UART_printf("**SBL_EMMCBOOT_seek = [0x%x]:[%d|0x%x]\r\n", *((uint32_t *)srcAddr));
    +}
    +
    +
    +
    +int32_t SBL_MMCBootImage(sblEntryPoint_t *pEntry)
    +{
    +    int32_t retVal = E_PASS;
    +    uint32_t offset = SPL_APP_ADDR * SECTORSIZE;
    +    // unsigned char md5sum[16];
    +    // size_t i;
    +
    +    // mbedtls_md5_init(&md5_ctx);
    +    // mbedtls_md5_starts(&md5_ctx);
    +
    +    UART_printf("[APP] SBL_MMCBootImage in [%d]\r\n", __LINE__);
    +    retVal = MMCSD_open(0, NULL, &handle);
    +    if (MMCSD_OK != retVal)
    +    {
    +        UART_printf("\n MMCSD_Open failed with retval=%d\r\n", retVal);
    +        retVal = E_FAIL;
    +    }
    +    int8_t partition = 1;
    +
    +    /* Media configuration such as eMMC size, blocksize, blockCount */
    +    uint32_t blockCount;
    +    MMCSD_mediaParams mediaParams;
    +
    +    UART_printf("Getting eMMC parameters\n");
    +    if ((retVal = MMCSD_control(handle, MMCSD_CMD_GETMEDIAPARAMS, (void *)&mediaParams)) != MMCSD_OK)
    +    {
    +        UART_printf("Getting eMMC parameters failed !!\n");
    +        return -1;
    +    }
    +    blockCount = (unsigned int)(mediaParams.blockCount & 0xFFFFFFFF);
    +    UART_printf("eMMC: BlockCount = 0x%x \n", (unsigned int)(mediaParams.blockCount & 0xFFFFFFFF));
    +    UART_printf("eMMC: part_support = %d,part_config =%d\n", mediaParams.part_support, (mediaParams.part_config >> 3) & PART_ACCESS_MASK);
    +    retVal = retVal;
    +    blockCount = blockCount;
    +
    +    partition = (mediaParams.part_config >> 3) & PART_ACCESS_MASK;
    +
    +    if (partition != 7)
    +    {
    +        if ((retVal = MMCSD_control(handle, MMCSD_CMD_ENABLEBOOTPARTITION,
    +                                    (void *)&partition)))
    +        {
    +            UART_printf("BOOTPARTITION error \n");
    +        }
    +    }
    +    else
    +    {
    +        UART_printf("BOOTPARTITION form UDA \n");
    +        retVal = -1;
    +    }
    +
    +
    +    fp_readData = &SBL_EMMCBOOT_Read;
    +    fp_seek     = &SBL_EMMCBOOT_seek;
    +    // UART_printf("SBL_MMC APP ImageParse start.\n");
    +#if defined(SBL_ENABLE_HLOS_BOOT) && (defined(SOC_J721E) || defined(SOC_J7200))
    +        retVal = SBL_MulticoreImageParse((void *) &offset, SPL_APP_ADDR * SECTORSIZE, pEntry, SBL_SKIP_BOOT_AFTER_COPY);
    +#else
    +        retVal = SBL_MulticoreImageParse((void *) &offset, SPL_APP_ADDR * SECTORSIZE, pEntry, SBL_BOOT_AFTER_COPY);
    +#endif
    +    UART_printf("SBL_MMC APP ImageParse done.[%d]\n",__LINE__);
    +    MMCSD_close(handle);
    +    handle = NULL;
    +
    +    // mbedtls_md5_finish(&md5_ctx, md5sum);
    +    // UART_printf("MD5 SUM = [");
    +    // for (i = 0; i < sizeof(md5sum); i++)
    +    // {
    +    //     UART_printf("%02x", md5sum[i]);
    +    // }
    +    // UART_printf("] .\n");
    +    // mbedtls_md5_free(&md5_ctx);
    +
    +
    +    return retVal;
    +}
    +
    +
    +#else
    +
    +
    +
     int32_t SBL_MMCBootImage(sblEntryPoint_t *pEntry)
     {
         int32_t retVal = E_PASS;
    @@ -338,7 +690,7 @@ int32_t SBL_MMCBootImage(sblEntryPoint_t *pEntry)
         /* MMCSD FATFS initialization */
         FATFS_open(0U, NULL, &sbl_fatfsHandle);
     
    -    fresult = f_open(&fp, fileName, ((BYTE)FA_READ));
    +    fresult = f_open(&fp, fileName, ((uint8_t)FA_READ));
         if (fresult != FR_OK)
         {
             UART_printf("\n SD Boot - File open fails \n");
    @@ -412,8 +764,10 @@ int32_t SBL_MMCBootImage(sblEntryPoint_t *pEntry)
     
         return retVal;
     }
    -
    +#endif
     #ifndef SECURE_BOOT
    +
    +
     int32_t SBL_FileRead(void       *buff,
                           void *fileptr,
                           uint32_t    size)
    @@ -425,7 +779,6 @@ int32_t SBL_FileRead(void       *buff,
         uint32_t Max_read   = 0x400U; /*setting a fatfs read size of 1k */
         FRESULT  fresult    = FR_OK;
         int32_t retVal = E_FAIL;
    -
         for (i = ((uint32_t)0U); i < (size / Max_read); ++i)
         {
             fresult  = f_read(fp, (void *)tmp_buff_ptr, Max_read, &bytes_read);
    -- 
    2.17.1
    
    

    eMMC layout:


    BR

    xin he

  • Hi Xin He,

    Could it be something related to cache? Can you try invalidating cache before calculating MD5 checksum? 

    Regards,

    Brijesh

  • Hi Brijesh,

    Is that right? However, MD5 verification errors still occasionally occur.

    BR

    xin he

  • Hi xin he,

    By any change, are you calculating md5 checksum on the size, which is aligned to sector size? Because image size may not be aligned to sector size. For example, the size of the tifs.bin file in SDK8.2 is 263,083 bytes, which is not aligned to 512byte sector size. So if you are calculating MD5 checksum on 263,168 size, it will not match and can vary.. 

    Regards,

    Brijesh 

  • Hi Brijesh,

    Sorry, you may have misunderstood md5sum here.

    I am not calculating the md5sum of a file,This is a callback function that calculates the md5sum after each read of eMMC.

    Without updating the boot partition, md5sum will change if there is a boot failure.Judge through md5sum that the data has been tampered in the process of reading from eMMC to DDR.

    The problem now is to help me find out what causes the file read by EMMC to be tampered with.

    Sika lu(FAE Engineer in TI China),He suggested that I modify the register according to the datasheet "mmc0 DLL delay mapping for all timing modes" table.I can't start normally in HS200 and HS_DDR mode after modifying according to the register on the table,other modes are consistent with the above phenomena.

    BR

    xin he

  • Hi Brijesh,

    It's a DDR problem. We modified the configuration of DDR to solve this problem.

    Best regards,

    xin he