<p>Harald Welte has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/13710">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">obtain chip-unique serial number and print it during startup.<br><br>Change-Id: I298942e12f9ffd6f571555253fda160baece5c6c<br>---<br>M sysmoOCTSIM/main.c<br>1 file changed, 36 insertions(+), 0 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmo-ccid-firmware refs/changes/10/13710/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/sysmoOCTSIM/main.c b/sysmoOCTSIM/main.c</span><br><span>index 843652b..1e34e20 100644</span><br><span>--- a/sysmoOCTSIM/main.c</span><br><span>+++ b/sysmoOCTSIM/main.c</span><br><span>@@ -19,6 +19,7 @@</span><br><span> #include <stdlib.h></span><br><span> #include <stdio.h></span><br><span> #include <parts.h></span><br><span style="color: hsl(120, 100%, 40%);">+#include <errno.h></span><br><span> #include <hal_cache.h></span><br><span> #include <hri_port_e54.h></span><br><span> </span><br><span>@@ -304,9 +305,43 @@</span><br><span> </span><br><span> extern void testmode_init(void);</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/* Section 9.6 of SAMD5x/E5x Family Data Sheet */</span><br><span style="color: hsl(120, 100%, 40%);">+static int get_chip_unique_serial(uint8_t *out, size_t len)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+  uint32_t *out32 = (uint32_t *)out;</span><br><span style="color: hsl(120, 100%, 40%);">+    if (len < 16)</span><br><span style="color: hsl(120, 100%, 40%);">+              return -EINVAL;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     out32[0] = *(uint32_t *)0x008061fc;</span><br><span style="color: hsl(120, 100%, 40%);">+   out32[1] = *(uint32_t *)0x00806010;</span><br><span style="color: hsl(120, 100%, 40%);">+   out32[2] = *(uint32_t *)0x00806014;</span><br><span style="color: hsl(120, 100%, 40%);">+   out32[3] = *(uint32_t *)0x00806018;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ return 0;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+/* same as get_chip_unique_serial but in hex-string format */</span><br><span style="color: hsl(120, 100%, 40%);">+static int get_chip_unique_serial_str(char *out, size_t len)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+        uint8_t buf[16];</span><br><span style="color: hsl(120, 100%, 40%);">+      int rc;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     if (len < 16*2 + 1)</span><br><span style="color: hsl(120, 100%, 40%);">+                return -EINVAL;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     rc = get_chip_unique_serial(buf, sizeof(buf));</span><br><span style="color: hsl(120, 100%, 40%);">+        if (rc < 0)</span><br><span style="color: hsl(120, 100%, 40%);">+                return rc;</span><br><span style="color: hsl(120, 100%, 40%);">+    osmo_hexdump_buf(out, len, buf, sizeof(buf), NULL, false);</span><br><span style="color: hsl(120, 100%, 40%);">+    return 0;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> int main(void)</span><br><span> {</span><br><span style="color: hsl(120, 100%, 40%);">+ char sernr_buf[16*2+1];</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>    atmel_start_init();</span><br><span style="color: hsl(120, 100%, 40%);">+   get_chip_unique_serial_str(sernr_buf, sizeof(sernr_buf));</span><br><span> </span><br><span>        usart_sync_enable(&UART_debug);</span><br><span> </span><br><span>@@ -324,6 +359,7 @@</span><br><span>        testmode_init();</span><br><span> </span><br><span>         printf("\r\n\r\nsysmocom sysmoOCTSIM\r\n");</span><br><span style="color: hsl(120, 100%, 40%);">+ printf("Chip-Id %s\r\n", sernr_buf);</span><br><span> </span><br><span>   command_print_prompt();</span><br><span>      while (true) { // main loop</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/13710">change 13710</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/13710"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-ccid-firmware </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>
<div style="display:none"> Gerrit-Change-Id: I298942e12f9ffd6f571555253fda160baece5c6c </div>
<div style="display:none"> Gerrit-Change-Number: 13710 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Harald Welte <laforge@gnumonks.org> </div>