From e73d14ca27cffc7694ced85ef35850abb40bd838 Mon Sep 17 00:00:00 2001
From: NIIBE Yutaka <gniibe@fsij.org>
Date: Mon, 4 Sep 2017 15:16:36 +0900
Subject: Add muc/sys-gnu-linux.*.

Signed-off-by: NIIBE Yutaka <gniibe@fsij.org>
---
 ChangeLog           |  7 ++++
 mcu/sys-gnu-linux.c | 95 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 mcu/sys-gnu-linux.h | 41 +++++++++++++++++++++++
 sys.h               |  4 ++-
 4 files changed, 146 insertions(+), 1 deletion(-)
 create mode 100644 mcu/sys-gnu-linux.c
 create mode 100644 mcu/sys-gnu-linux.h

diff --git a/ChangeLog b/ChangeLog
index 88aea13..70985f6 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2017-09-04  NIIBE Yutaka  <gniibe@fsij.org>
+
+	* sys.h: Add mcu/sys-gnu-linux.h.
+
+	* mcu/sys-gnu-linux.c: New.
+	* mcu/sys-gnu-linux.h: New.
+
 2017-08-11  NIIBE Yutaka  <gniibe@fsij.org>
 
 	* VERSION: 1.4.
diff --git a/mcu/sys-gnu-linux.c b/mcu/sys-gnu-linux.c
new file mode 100644
index 0000000..f7f51b0
--- /dev/null
+++ b/mcu/sys-gnu-linux.c
@@ -0,0 +1,95 @@
+#include <stdint.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include "board.h"
+
+const uint8_t sys_version[8] = {
+  3*2+2,	     /* bLength */
+  0x03,		     /* bDescriptorType = USB_STRING_DESCRIPTOR_TYPE */
+  /* sys version: "3.0" */
+  '3', 0, '.', 0, '0', 0,
+};
+
+const uint32_t sys_board_id = BOARD_ID;
+const uint8_t sys_board_name[] = BOARD_NAME;
+
+void
+set_led (int on)
+{
+  puts (on ? "*": "");
+}
+
+void
+flash_unlock (void)
+{
+}
+
+int
+flash_program_halfword (uint32_t addr, uint16_t data)
+{
+  fprintf (stderr, "flash_program_halfword: addr=%08x, data=%04x\n", addr, data);
+  return 0;
+}
+
+int
+flash_erase_page (uint32_t addr)
+{
+  fprintf (stderr, "flash_erase_page: addr=%08x\n", addr);
+  return 0;
+}
+
+int
+flash_check_blank (const uint8_t *p_start, size_t size)
+{
+  fprintf (stderr, "flash_check_blank: addr=%p, size=%zd\n", p_start, size);
+  return 0;
+}
+
+int
+flash_write (uint32_t dst_addr, const uint8_t *src, size_t len)
+{
+  fprintf (stderr, "flash_write: addr=%08x, %p, %zd\n", dst_addr, src, len);
+  return 0;
+}
+
+int
+flash_protect (void)
+{
+  fprintf (stderr, "flash_protect\n");
+  return 0;
+}
+
+void __attribute__((noreturn))
+flash_erase_all_and_exec (void (*entry)(void))
+{
+  (void)entry;
+  exit (1);
+}
+
+void
+usb_lld_sys_init (void)
+{
+}
+
+void
+usb_lld_sys_shutdown (void)
+{
+}
+
+
+void __attribute__((noreturn))
+nvic_system_reset (void)
+{
+  exit (0);
+}
+
+
+void
+clock_init (void)
+{
+}
+
+void
+gpio_init (void)
+{
+}
diff --git a/mcu/sys-gnu-linux.h b/mcu/sys-gnu-linux.h
new file mode 100644
index 0000000..2955ad6
--- /dev/null
+++ b/mcu/sys-gnu-linux.h
@@ -0,0 +1,41 @@
+extern const uint8_t sys_version[8];
+#if defined(USE_SYS3) || defined(USE_SYS_BOARD_ID)
+extern const uint32_t sys_board_id;
+extern const uint8_t sys_board_name[];
+# define SYS_BOARD_ID sys_board_id
+#else
+# define SYS_BOARD_ID BOARD_ID
+#endif
+
+static inline const uint8_t *
+unique_device_id (void)
+{
+  /* STM32F103 has 96-bit unique device identifier */
+
+  static const uint8_t id[] = { /* My RSA fingerprint */
+    0x12, 0x41, 0x24, 0xBD, 0x3B, 0x48, 0x62, 0xAF,
+    0x7A, 0x0A, 0x42, 0xF1, 0x00, 0xB4, 0x5E, 0xBD,
+    0x4C, 0xA7, 0xBA, 0xBE
+  };
+  
+  return id;
+}
+
+void set_led (int on);
+void flash_unlock (void);
+int flash_program_halfword (uint32_t addr, uint16_t data);
+int flash_erase_page (uint32_t addr);
+int flash_check_blank (const uint8_t *p_start, size_t size);
+int flash_write (uint32_t dst_addr, const uint8_t *src, size_t len);
+int flash_protect (void);
+void __attribute__((noreturn))
+flash_erase_all_and_exec (void (*entry)(void));
+
+void usb_lld_sys_init (void);
+void usb_lld_sys_shutdown (void);
+
+void __attribute__((noreturn))
+nvic_system_reset (void);
+
+void clock_init (void);
+void gpio_init (void);
diff --git a/sys.h b/sys.h
index a546371..38a69c9 100644
--- a/sys.h
+++ b/sys.h
@@ -1,4 +1,6 @@
-#if  defined(MCU_KINETIS_L)
+#if defined(GNU_LINUX_EMULATION)
+#include "mcu/sys-gnu-linux.h"
+#elif defined(MCU_KINETIS_L)
 #include "mcu/sys-mkl27z.h"
 #elif defined(MCU_STM32F0)
 #include "mcu/sys-stm32f0.h"
-- 
cgit v1.2.3