You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mynewt.apache.org by ma...@apache.org on 2017/02/03 23:52:48 UTC

[1/2] incubator-mynewt-core git commit: MYNEWT-618; bootloader was not calling hal_bsp_init(), so uart was not getting initialized. Watchdog needs to be tickled from within serial downloader.

Repository: incubator-mynewt-core
Updated Branches:
  refs/heads/1_0_0_b2_dev d484e468d -> 6b0d977c3


MYNEWT-618; bootloader was not calling hal_bsp_init(), so
uart was not getting initialized.
Watchdog needs to be tickled from within serial downloader.


Project: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/commit/2c909377
Tree: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/tree/2c909377
Diff: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/diff/2c909377

Branch: refs/heads/1_0_0_b2_dev
Commit: 2c909377d4b3f1e1e9b886c061e48baf9ba7a2fb
Parents: d484e46
Author: Marko Kiiskila <ma...@runtime.io>
Authored: Fri Feb 3 15:44:27 2017 -0800
Committer: Marko Kiiskila <ma...@runtime.io>
Committed: Fri Feb 3 15:44:27 2017 -0800

----------------------------------------------------------------------
 apps/boot/src/boot.c               | 20 ++-------------
 boot/boot_serial/pkg.yml           |  4 +++
 boot/boot_serial/src/boot_serial.c | 43 +++++++++++++++++++++++++++++++++
 3 files changed, 49 insertions(+), 18 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/2c909377/apps/boot/src/boot.c
----------------------------------------------------------------------
diff --git a/apps/boot/src/boot.c b/apps/boot/src/boot.c
index fbc4b7d..6b21407 100755
--- a/apps/boot/src/boot.c
+++ b/apps/boot/src/boot.c
@@ -28,8 +28,6 @@
 #include <hal/hal_system.h>
 #include <hal/hal_flash.h>
 #if MYNEWT_VAL(BOOT_SERIAL)
-#include <hal/hal_gpio.h>
-#include <boot_serial/boot_serial.h>
 #include <sysinit/sysinit.h>
 #endif
 #include <console/console.h>
@@ -39,10 +37,6 @@
 #define BOOT_AREA_DESC_MAX  (256)
 #define AREA_DESC_MAX       (BOOT_AREA_DESC_MAX)
 
-#if MYNEWT_VAL(BOOT_SERIAL)
-#define BOOT_SER_CONS_INPUT         128
-#endif
-
 int
 main(void)
 {
@@ -50,23 +44,13 @@ main(void)
     int rc;
 
 #if MYNEWT_VAL(BOOT_SERIAL)
+    hal_bsp_init();
     sysinit();
 #else
     flash_map_init();
-    hal_bsp_init();
+    hal_bsp_init(); /* XXX this should be before flash_map_init() */
 #endif
 
-#if MYNEWT_VAL(BOOT_SERIAL)
-    /*
-     * Configure a GPIO as input, and compare it against expected value.
-     * If it matches, await for download commands from serial.
-     */
-    hal_gpio_init_in(BOOT_SERIAL_DETECT_PIN, BOOT_SERIAL_DETECT_PIN_CFG);
-    if (hal_gpio_read(BOOT_SERIAL_DETECT_PIN) == BOOT_SERIAL_DETECT_PIN_VAL) {
-        boot_serial_start(BOOT_SER_CONS_INPUT);
-        assert(0);
-    }
-#endif
     rc = boot_go(&rsp);
     assert(rc == 0);
 

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/2c909377/boot/boot_serial/pkg.yml
----------------------------------------------------------------------
diff --git a/boot/boot_serial/pkg.yml b/boot/boot_serial/pkg.yml
index 5913877..544c63a 100644
--- a/boot/boot_serial/pkg.yml
+++ b/boot/boot_serial/pkg.yml
@@ -37,3 +37,7 @@ pkg.deps:
 
 pkg.req_apis:
     - console
+
+pkg.init:
+    boot_serial_os_dev_init: 0
+    boot_serial_pkg_init: 200

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/2c909377/boot/boot_serial/src/boot_serial.c
----------------------------------------------------------------------
diff --git a/boot/boot_serial/src/boot_serial.c b/boot/boot_serial/src/boot_serial.c
index c46e270..d384b78 100644
--- a/boot/boot_serial/src/boot_serial.c
+++ b/boot/boot_serial/src/boot_serial.c
@@ -29,6 +29,8 @@
 #include <flash_map/flash_map.h>
 #include <hal/hal_flash.h>
 #include <hal/hal_system.h>
+#include <hal/hal_gpio.h>
+#include <hal/hal_watchdog.h>
 
 #include <os/endian.h>
 #include <os/os.h>
@@ -48,6 +50,7 @@
 #include "boot_serial/boot_serial.h"
 #include "boot_serial_priv.h"
 
+#define BOOT_SERIAL_INPUT_MAX   128
 #define BOOT_SERIAL_OUT_MAX	48
 
 static uint32_t curr_off;
@@ -411,6 +414,9 @@ boot_serial_start(int max_input)
     int dec_off;
     int full_line;
 
+    rc = hal_watchdog_init(MYNEWT_VAL(WATCHDOG_INTERVAL));
+    assert(rc == 0);
+
     rc = console_init(NULL);
     assert(rc == 0);
     console_echo(0);
@@ -421,12 +427,19 @@ boot_serial_start(int max_input)
 
     off = 0;
     while (1) {
+        hal_watchdog_tickle();
         rc = console_read(buf + off, max_input - off, &full_line);
         if (rc <= 0 && !full_line) {
             continue;
         }
         off += rc;
         if (!full_line) {
+            if (off == max_input) {
+                /*
+                 * Full line, no newline yet. Reset the input buffer.
+                 */
+                off = 0;
+            }
             continue;
         }
         if (buf[0] == SHELL_NLIP_PKT_START1 &&
@@ -443,3 +456,33 @@ boot_serial_start(int max_input)
         off = 0;
     }
 }
+
+/*
+ * os_init() will not be called with bootloader, so we need to initialize
+ * devices created by hal_bsp_init() here.
+ */
+void
+boot_serial_os_dev_init(void)
+{
+    os_dev_initialize_all(OS_DEV_INIT_PRIMARY);
+    os_dev_initialize_all(OS_DEV_INIT_SECONDARY);
+
+    /*
+     * Configure GPIO line as input. This is read later to see if
+     * we should stay and keep waiting for input.
+     */
+    hal_gpio_init_in(BOOT_SERIAL_DETECT_PIN, BOOT_SERIAL_DETECT_PIN_CFG);
+}
+
+void
+boot_serial_pkg_init(void)
+{
+    /*
+     * Configure a GPIO as input, and compare it against expected value.
+     * If it matches, await for download commands from serial.
+     */
+    if (hal_gpio_read(BOOT_SERIAL_DETECT_PIN) == BOOT_SERIAL_DETECT_PIN_VAL) {
+        boot_serial_start(BOOT_SERIAL_INPUT_MAX);
+        assert(0);
+    }
+}


[2/2] incubator-mynewt-core git commit: MYNEWT-618; add a gpio for testing serial bootloader with nrf52dk.

Posted by ma...@apache.org.
MYNEWT-618; add a gpio for testing serial bootloader with nrf52dk.


Project: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/commit/6b0d977c
Tree: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/tree/6b0d977c
Diff: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/diff/6b0d977c

Branch: refs/heads/1_0_0_b2_dev
Commit: 6b0d977c3d3c9b78b7124c46c66a33c2f26cb699
Parents: 2c90937
Author: Marko Kiiskila <ma...@runtime.io>
Authored: Fri Feb 3 15:51:20 2017 -0800
Committer: Marko Kiiskila <ma...@runtime.io>
Committed: Fri Feb 3 15:51:20 2017 -0800

----------------------------------------------------------------------
 hw/bsp/nrf52dk/include/bsp/bsp.h | 8 ++++++++
 1 file changed, 8 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/6b0d977c/hw/bsp/nrf52dk/include/bsp/bsp.h
----------------------------------------------------------------------
diff --git a/hw/bsp/nrf52dk/include/bsp/bsp.h b/hw/bsp/nrf52dk/include/bsp/bsp.h
index 7c6df66..2805a6c 100644
--- a/hw/bsp/nrf52dk/include/bsp/bsp.h
+++ b/hw/bsp/nrf52dk/include/bsp/bsp.h
@@ -22,6 +22,8 @@
 
 #include <inttypes.h>
 
+#include <syscfg/syscfg.h>
+
 #ifdef __cplusplus
 extern "C" {
 #endif
@@ -44,6 +46,12 @@ extern uint8_t _ram_start;
 /* UART info */
 #define CONSOLE_UART    "uart0"
 
+#if MYNEWT_VAL(BOOT_SERIAL)
+#define BOOT_SERIAL_DETECT_PIN          13 /* Button 1 */
+#define BOOT_SERIAL_DETECT_PIN_CFG      HAL_GPIO_PULL_UP
+#define BOOT_SERIAL_DETECT_PIN_VAL      0
+#endif
+
 #define NFFS_AREA_MAX   (8)
 
 #ifdef __cplusplus