target: don't swap MMU/no-MMU work areas
[openocd.git] / src / ecosboard.c
index 937da9220047760165a2c4f2471ad5e3c5a7e916..b0f9525a92fd6df8d5d50ab5f21798a2b8fad859 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2007-2008 by Øyvind Harboe                              *
+ *   Copyright (C) 2007-2008 by Øyvind Harboe                              *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
  *   it under the terms of the GNU General Public License as published by  *
@@ -155,8 +155,8 @@ static char reboot_stack[2048];
 static void zylinjtag_reboot(cyg_addrword_t data)
 {
        serialLog = true;
-       diag_printf("Rebooting in 100 ticks..\n");
-       cyg_thread_delay(100);
+       diag_printf("Rebooting in 500 ticks..\n");
+       cyg_thread_delay(500);
        diag_printf("Unmounting /config..\n");
        umount("/config");
        diag_printf("Rebooting..\n");
@@ -173,6 +173,62 @@ void reboot(void)
        cyg_thread_resume(zylinjtag_thread_handle);
 }
 
+static char zylinjtag_reboot_port_stack[2048];
+static cyg_thread zylinjtag_reboot_port_thread_object;
+static cyg_handle_t zylinjtag_reboot_port_thread_handle;
+
+static void zylinjtag_reboot_port_task(cyg_addrword_t data)
+{
+       int so_reuseaddr_option = 1;
+
+       int fd;
+       if ((fd = socket(AF_INET, SOCK_STREAM, 0)) == -1)
+       {
+               LOG_ERROR("error creating socket: %s", strerror(errno));
+               exit(-1);
+       }
+
+       setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, (void*) &so_reuseaddr_option,
+                       sizeof(int));
+
+       struct sockaddr_in sin;
+       unsigned int address_size;
+       address_size = sizeof(sin);
+       memset(&sin, 0, sizeof(sin));
+       sin.sin_family = AF_INET;
+       sin.sin_addr.s_addr = INADDR_ANY;
+       sin.sin_port = htons(1234);
+
+       if (bind(fd, (struct sockaddr *) &sin, sizeof(sin)) == -1)
+       {
+               LOG_ERROR("couldn't bind to socket: %s", strerror(errno));
+               exit(-1);
+       }
+
+       if (listen(fd, 1) == -1)
+       {
+               LOG_ERROR("couldn't listen on socket: %s", strerror(errno));
+               exit(-1);
+       }
+       //      socket_nonblock(fd);
+
+
+       accept(fd, (struct sockaddr *) &sin, &address_size);
+
+       diag_printf("Got reboot signal on port 1234");
+
+       reboot();
+
+}
+
+void reboot_port(void)
+{
+       cyg_thread_create(1, zylinjtag_reboot_port_task, (cyg_addrword_t) 0, "wait for reboot signal on port 1234",
+                       (void *) zylinjtag_reboot_port_stack, sizeof(zylinjtag_reboot_port_stack),
+                       &zylinjtag_reboot_port_thread_handle, &zylinjtag_reboot_port_thread_object);
+       cyg_thread_resume(zylinjtag_reboot_port_thread_handle);
+}
+
 int configuration_output_handler(struct command_context_s *context,
                const char* line)
 {
@@ -272,6 +328,7 @@ void openocd_sleep_postlude(void)
 
 void format(void)
 {
+#ifdef CYGDAT_IO_FLASH_BLOCK_DEVICE_NAME_1
        diag_printf("Formatting JFFS2...\n");
 
        cyg_io_handle_t handle;
@@ -309,6 +366,7 @@ void format(void)
        }
 
        diag_printf("Flash formatted successfully\n");
+#endif
 
        reboot();
 }
@@ -416,7 +474,6 @@ static int zylinjtag_Jim_Command_reboot(Jim_Interp *interp, int argc,
        return JIM_OK;
 }
 
-
 static void zylinjtag_startNetwork(void)
 {
        // Bring TCP/IP up immediately before we're ready to accept commands.
@@ -432,6 +489,10 @@ static void zylinjtag_startNetwork(void)
                diag_printf("Network not up and running\n");
                exit(-1);
        }
+
+       /* very first thing we want is a reboot capability */
+       reboot_port();
+
 #if defined(CYGPKG_NET_FREEBSD_STACK)
        /*start TFTP*/
        tftpd_start(69, &fileops);
@@ -443,7 +504,7 @@ static void zylinjtag_startNetwork(void)
 
        Jim_CreateCommand(httpstate.jim_interp, "log", zylinjtag_Jim_Command_log,
                        NULL, NULL);
-       Jim_CreateCommand(httpstate.jim_interp, "reboot",
+       Jim_CreateCommand(httpstate.jim_interp, "zy1000_reboot",
                        zylinjtag_Jim_Command_reboot, NULL, NULL);
        Jim_CreateCommand(httpstate.jim_interp, "threads",
                        zylinjtag_Jim_Command_threads, NULL, NULL);
@@ -529,6 +590,7 @@ static void print_exception_handler(cyg_addrword_t data, cyg_code_t exception,
 
 }
 
+#ifdef CYGNUM_HAL_VECTOR_UNDEF_INSTRUCTION
 static void setHandler(cyg_code_t exception)
 {
        cyg_exception_handler_t *old_handler;
@@ -537,6 +599,7 @@ static void setHandler(cyg_code_t exception)
        cyg_exception_set_handler(exception, print_exception_handler, 0,
                        &old_handler, &old_data);
 }
+#endif
 
 static cyg_thread zylinjtag_uart_thread_object;
 static cyg_handle_t zylinjtag_uart_thread_handle;
@@ -563,6 +626,9 @@ void setNoDelay(int session, int flag)
 #endif
 }
 
+#define TEST_TCPIP() 0
+
+#if TEST_TCPIP
 struct
 {
        int req;
@@ -571,6 +637,7 @@ struct
        int actual2;
 } tcpipSent[512 * 1024];
 int cur;
+#endif
 
 static void zylinjtag_uart(cyg_addrword_t data)
 {
@@ -635,7 +702,9 @@ static void zylinjtag_uart(cyg_addrword_t data)
                size_t pos, pos2;
                pos = 0;
                pos2 = 0;
+#if TEST_TCPIP
                cur = 0;
+#endif
                for (;;)
                {
                        fd_set write_fds;
@@ -680,7 +749,6 @@ static void zylinjtag_uart(cyg_addrword_t data)
                                pos2 = 0;
                        }
 
-                       size_t x = actual2;
                        size_t y = 0;
                        if (actual2 > 0)
                        {
@@ -710,7 +778,6 @@ static void zylinjtag_uart(cyg_addrword_t data)
                                actual += t;
                        }
 
-                       int x2 = actual;
                        int y2 = 0;
                        if (actual > 0)
                        {
@@ -736,6 +803,7 @@ static void zylinjtag_uart(cyg_addrword_t data)
                                }
                                y2 = written;
                        }
+#if TEST_TCPIP
                        if (cur < 1024)
                        {
                                tcpipSent[cur].req = x;
@@ -744,11 +812,12 @@ static void zylinjtag_uart(cyg_addrword_t data)
                                tcpipSent[cur].actual2 = y2;
                                cur++;
                        }
-
+#endif
                }
                closeSession: close(session);
                close(serHandle);
 
+#if TEST_TCPIP
                int i;
                for (i = 0; i < 1024; i++)
                {
@@ -756,6 +825,7 @@ static void zylinjtag_uart(cyg_addrword_t data)
                                        tcpipSent[i].req2, tcpipSent[i].actual2);
 
                }
+#endif
        }
        close(fd);
 
@@ -858,7 +928,7 @@ command_context_t *setup_command_handler(void);
 
 static const char *zylin_config_dir="/config/settings";
 
-int add_default_dirs(void)
+static int add_default_dirs(void)
 {
        add_script_search_dir(zylin_config_dir);
        add_script_search_dir("/rom/lib/openocd");

Linking to existing account procedure

If you already have an account and want to add another login method you MUST first sign in with your existing account and then change URL to read https://review.openocd.org/login/?link to get to this page again but this time it'll work for linking. Thank you.

SSH host keys fingerprints

1024 SHA256:YKx8b7u5ZWdcbp7/4AeXNaqElP49m6QrwfXaqQGJAOk gerrit-code-review@openocd.zylin.com (DSA)
384 SHA256:jHIbSQa4REvwCFG4cq5LBlBLxmxSqelQPem/EXIrxjk gerrit-code-review@openocd.org (ECDSA)
521 SHA256:UAOPYkU9Fjtcao0Ul/Rrlnj/OsQvt+pgdYSZ4jOYdgs gerrit-code-review@openocd.org (ECDSA)
256 SHA256:A13M5QlnozFOvTllybRZH6vm7iSt0XLxbA48yfc2yfY gerrit-code-review@openocd.org (ECDSA)
256 SHA256:spYMBqEYoAOtK7yZBrcwE8ZpYt6b68Cfh9yEVetvbXg gerrit-code-review@openocd.org (ED25519)
+--[ED25519 256]--+
|=..              |
|+o..   .         |
|*.o   . .        |
|+B . . .         |
|Bo. = o S        |
|Oo.+ + =         |
|oB=.* = . o      |
| =+=.+   + E     |
|. .=o   . o      |
+----[SHA256]-----+
2048 SHA256:0Onrb7/PHjpo6iVZ7xQX2riKN83FJ3KGU0TvI0TaFG4 gerrit-code-review@openocd.zylin.com (RSA)