diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2017-08-07 09:47:05 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2017-08-10 09:36:30 +0200 |
commit | c070af754dca62adab27753ba80ca01d1bc4ce3e (patch) | |
tree | e5406c5abf741e598ce27decb27c123728cffe3e | |
parent | e47e793f6542117fe33c2ee727301f2734003848 (diff) |
bsps: Add shared XM console device
-rw-r--r-- | c/src/lib/libbsp/shared/include/fatal.h | 3 | ||||
-rw-r--r-- | c/src/lib/libbsp/shared/xm/console-xm.c | 67 | ||||
-rw-r--r-- | c/src/lib/libbsp/shared/xm/printk-support-xm.c | 30 |
3 files changed, 100 insertions, 0 deletions
diff --git a/c/src/lib/libbsp/shared/include/fatal.h b/c/src/lib/libbsp/shared/include/fatal.h index 45db9d43bd..81df3bc1be 100644 --- a/c/src/lib/libbsp/shared/include/fatal.h +++ b/c/src/lib/libbsp/shared/include/fatal.h @@ -41,6 +41,9 @@ typedef enum { BSP_FATAL_CONSOLE_INSTALL_0, BSP_FATAL_CONSOLE_INSTALL_1, + /* XtratuM fatal codes */ + XM_BSP_FATAL_CONSOLE_DEVICE_INSTALL_XM = BSP_FATAL_CODE_BLOCK(7949), + /* ARM fatal codes */ BSP_ARM_A9MPCORE_FATAL_CLOCK_IRQ_INSTALL = BSP_FATAL_CODE_BLOCK(1), BSP_ARM_A9MPCORE_FATAL_CLOCK_IRQ_REMOVE, diff --git a/c/src/lib/libbsp/shared/xm/console-xm.c b/c/src/lib/libbsp/shared/xm/console-xm.c new file mode 100644 index 0000000000..f4130a0e20 --- /dev/null +++ b/c/src/lib/libbsp/shared/xm/console-xm.c @@ -0,0 +1,67 @@ +/* + * Copyright (c) 2014 embedded brains GmbH. All rights reserved. + * + * embedded brains GmbH + * Dornierstr. 4 + * 82178 Puchheim + * Germany + * <info@embedded-brains.de> + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.org/license/LICENSE. + */ + +#include <rtems/console.h> +#include <rtems/termiostypes.h> +#include <bsp/fatal.h> +#include <xm.h> + +static int xtratum_console_read_polled(rtems_termios_device_context *ctx) +{ + (void) ctx; + + return -1; +} + +static void xtratum_console_write( + rtems_termios_device_context *ctx, + const char *buf, + size_t len +) +{ + (void) ctx; + + XM_write_console(buf, len); +} + +const rtems_termios_device_handler xtratum_console_handler = { + .write = xtratum_console_write, + .poll_read = xtratum_console_read_polled, + .mode = TERMIOS_POLLED +}; + +rtems_device_driver console_initialize( + rtems_device_major_number major, + rtems_device_minor_number minor, + void *arg +) +{ + rtems_status_code status; + + rtems_termios_initialize(); + + status = rtems_termios_device_install( + CONSOLE_DEVICE_NAME, + major, + minor, + &xtratum_console_handler, + NULL, + NULL + ); + if (status != RTEMS_SUCCESSFUL) { + bsp_fatal(XM_BSP_FATAL_CONSOLE_DEVICE_INSTALL_XM); + } + + return RTEMS_SUCCESSFUL; +} diff --git a/c/src/lib/libbsp/shared/xm/printk-support-xm.c b/c/src/lib/libbsp/shared/xm/printk-support-xm.c new file mode 100644 index 0000000000..24acca5c79 --- /dev/null +++ b/c/src/lib/libbsp/shared/xm/printk-support-xm.c @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2014 embedded brains GmbH. All rights reserved. + * + * embedded brains GmbH + * Dornierstr. 4 + * 82178 Puchheim + * Germany + * <info@embedded-brains.de> + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.org/license/LICENSE. + */ + +#include <stddef.h> +#include <rtems/bspIo.h> +#include <xm.h> + +static void console_output(char c) +{ + if (c == '\n') { + char r = '\r'; + XM_write_console(&r, sizeof(r)); + } + + XM_write_console(&c, sizeof(c)); +} + +BSP_output_char_function_type BSP_output_char = console_output; +BSP_polling_getchar_function_type BSP_poll_char = NULL; |