X-Git-Url: https://review.openocd.org/gitweb?a=blobdiff_plain;f=src%2Fecosboard.c;h=120b3f91e796cf97bc4d08b886dec87326c8f594;hb=cb7dbc1af41068f826246beb53870c01d8973bb8;hp=4af38e8556c6fcac92da576bdaa27e3d70817b5a;hpb=a02411a15f24a9e1f0ac893e631c6a520adfdab8;p=openocd.git diff --git a/src/ecosboard.c b/src/ecosboard.c index 4af38e8556..120b3f91e7 100644 --- a/src/ecosboard.c +++ b/src/ecosboard.c @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2007-2008 by Øyvind Harboe * + * Copyright (C) 2007-2009 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 * @@ -21,21 +21,18 @@ #include "config.h" #endif -#include "log.h" #include "types.h" #include "jtag.h" #include "configuration.h" #include "xsvf.h" #include "svf.h" -#include "target.h" -#include "flash.h" #include "nand.h" #include "pld.h" -#include "command.h" #include "server.h" #include "telnet_server.h" #include "gdb_server.h" +#include "openocd.h" #include #include @@ -84,6 +81,14 @@ #include +#ifdef CYGPKG_HAL_NIOS2 +#define ZY1000_SER_DEV "/dev/uart_0" +#else +#define ZY1000_SER_DEV "/dev/ser0" + +#endif + + #define MAX_IFS 64 #if defined(CYGPKG_NET_FREEBSD_STACK) #include @@ -114,8 +119,8 @@ static bool writeLog = true; char hwaddr[512]; -extern flash_driver_t *flash_drivers[]; -extern target_type_t *target_types[]; +extern struct flash_driver *flash_drivers[]; +extern struct target_type *target_types[]; #ifdef CYGPKG_PROFILE_GPROF #include @@ -229,7 +234,7 @@ void reboot_port(void) cyg_thread_resume(zylinjtag_reboot_port_thread_handle); } -int configuration_output_handler(struct command_context_s *context, +int configuration_output_handler(struct command_context *context, const char* line) { diag_printf("%s", line); @@ -237,7 +242,7 @@ int configuration_output_handler(struct command_context_s *context, return ERROR_OK; } -int zy1000_configuration_output_handler_log(struct command_context_s *context, +int zy1000_configuration_output_handler_log(struct command_context *context, const char* line) { LOG_USER_N("%s", line); @@ -247,7 +252,7 @@ int zy1000_configuration_output_handler_log(struct command_context_s *context, #ifdef CYGPKG_PROFILE_GPROF -int eCosBoard_handle_eCosBoard_profile_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc) +int eCosBoard_handle_eCosBoard_profile_command(struct command_context *cmd_ctx, char *cmd, char **args, int argc) { command_print(cmd_ctx, "Profiling started"); start_profile(); @@ -258,7 +263,7 @@ int eCosBoard_handle_eCosBoard_profile_command(struct command_context_s *cmd_ctx externC void phi_init_all_network_interfaces(void); -command_context_t *cmd_ctx; +struct command_context *cmd_ctx; static bool webRunning = false; @@ -474,7 +479,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. @@ -591,6 +595,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; @@ -599,6 +604,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; @@ -625,6 +631,9 @@ void setNoDelay(int session, int flag) #endif } +#define TEST_TCPIP() 0 + +#if TEST_TCPIP struct { int req; @@ -633,6 +642,7 @@ struct int actual2; } tcpipSent[512 * 1024]; int cur; +#endif static void zylinjtag_uart(cyg_addrword_t data) { @@ -682,7 +692,7 @@ static void zylinjtag_uart(cyg_addrword_t data) int oldopts = fcntl(session, F_GETFL, 0); fcntl(session, F_SETFL, oldopts | O_NONBLOCK); // - int serHandle = open("/dev/ser0", O_RDWR | O_NONBLOCK); + int serHandle = open(ZY1000_SER_DEV, O_RDWR | O_NONBLOCK); if (serHandle < 0) { close(session); @@ -697,7 +707,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; @@ -742,7 +754,6 @@ static void zylinjtag_uart(cyg_addrword_t data) pos2 = 0; } - size_t x = actual2; size_t y = 0; if (actual2 > 0) { @@ -772,7 +783,6 @@ static void zylinjtag_uart(cyg_addrword_t data) actual += t; } - int x2 = actual; int y2 = 0; if (actual > 0) { @@ -798,6 +808,7 @@ static void zylinjtag_uart(cyg_addrword_t data) } y2 = written; } +#if TEST_TCPIP if (cur < 1024) { tcpipSent[cur].req = x; @@ -806,11 +817,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++) { @@ -818,6 +830,7 @@ static void zylinjtag_uart(cyg_addrword_t data) tcpipSent[i].req2, tcpipSent[i].actual2); } +#endif } close(fd); @@ -832,7 +845,7 @@ void startUart(void) cyg_thread_resume(zylinjtag_uart_thread_handle); } -int handle_uart_command(struct command_context_s *cmd_ctx, char *cmd, +int handle_uart_command(struct command_context *cmd_ctx, char *cmd, char **args, int argc) { static int current_baud = 38400; @@ -881,10 +894,10 @@ int handle_uart_command(struct command_context_s *cmd_ctx, char *cmd, int err; cyg_io_handle_t serial_handle; - err = cyg_io_lookup("/dev/ser0", &serial_handle); + err = cyg_io_lookup(ZY1000_SER_DEV, &serial_handle); if (err != ENOERR) { - LOG_ERROR("/dev/ser0 not found\n"); + LOG_ERROR("Could not open serial port\n"); return ERROR_FAIL; } @@ -916,7 +929,7 @@ bool logAllToSerial = false; int boolParam(char *var); -command_context_t *setup_command_handler(void); +struct command_context *setup_command_handler(void); static const char *zylin_config_dir="/config/settings"; @@ -928,7 +941,7 @@ static int add_default_dirs(void) return ERROR_OK; } -int ioutil_init(struct command_context_s *cmd_ctx); +int ioutil_init(struct command_context *cmd_ctx); int main(int argc, char *argv[]) { @@ -1060,7 +1073,7 @@ int main(int argc, char *argv[]) add_default_dirs(); /* initialize commandline interface */ - command_context_t * cmd_ctx; + struct command_context * cmd_ctx; cmd_ctx = setup_command_handler(); command_set_output_handler(cmd_ctx, configuration_output_handler, NULL); command_context_mode(cmd_ctx, COMMAND_CONFIG);