From 5ea4e632dac1b002f9b155c4a2e0266ac4da8eee Mon Sep 17 00:00:00 2001 From: Thomas Doerfler Date: Mon, 14 Dec 2009 14:57:55 +0000 Subject: get vital data from dBUG monitor for COBRA5475 board --- c/src/lib/libbsp/m68k/genmcf548x/ChangeLog | 5 +++++ c/src/lib/libbsp/m68k/genmcf548x/console/console.c | 8 ++++++-- c/src/lib/libbsp/m68k/genmcf548x/include/bsp.h | 15 +++++++++++++++ c/src/lib/libbsp/m68k/genmcf548x/network/network.c | 11 +++++++++++ 4 files changed, 37 insertions(+), 2 deletions(-) (limited to 'c/src/lib/libbsp/m68k/genmcf548x') diff --git a/c/src/lib/libbsp/m68k/genmcf548x/ChangeLog b/c/src/lib/libbsp/m68k/genmcf548x/ChangeLog index 85fd6b8eb6..680bc3ca04 100644 --- a/c/src/lib/libbsp/m68k/genmcf548x/ChangeLog +++ b/c/src/lib/libbsp/m68k/genmcf548x/ChangeLog @@ -1,3 +1,8 @@ +2009-12-14 Thomas Doerfler + + * console/console.c, include/bsp.h, network/network.c: get vital + data from dBUG for COBRA5475 board + 2009-11-03 Ralf Corsépius * startup/init548x.c: Comment out junk from end of #endif. diff --git a/c/src/lib/libbsp/m68k/genmcf548x/console/console.c b/c/src/lib/libbsp/m68k/genmcf548x/console/console.c index 43b1a96a9f..1cb1a57f9f 100644 --- a/c/src/lib/libbsp/m68k/genmcf548x/console/console.c +++ b/c/src/lib/libbsp/m68k/genmcf548x/console/console.c @@ -291,7 +291,11 @@ static int IntUartSetAttributes(int minor, const struct termios *t) { /* set default index values */ +#ifdef HAS_DBUG + int baud = DBUG_SETTINGS.console_baudrate; +#else int baud = (int)BSP_CONSOLE_BAUD; +#endif int databits = (int)MCF548X_PSC_MR_BC_8; int parity = (int)MCF548X_PSC_MR_PM_NONE; int stopbits = (int)MCF548X_PSC_MR_SB_STOP_BITS_1; @@ -387,7 +391,7 @@ IntUartInterruptHandler(rtems_vector_number v) { /* put data in rx buffer */ - info->rx_buffer[info->rx_in] = *((uint8_t *)&MCF548X_PSC_RB(chan)); + info->rx_buffer[info->rx_in] = *((volatile uint8_t *)&MCF548X_PSC_RB(chan)); /* check for errors */ if ( MCF548X_PSC_SR(chan) & MCF548X_PSC_SR_ERROR ) @@ -529,7 +533,7 @@ IntUartInterruptWrite (int minor, const char *buf, int len) rtems_interrupt_disable(level); /* write out character */ - MCF548X_PSC_TB(minor) = *buf; + *(volatile uint8_t *)(&MCF548X_PSC_TB(minor)) = *buf; /* enable tx interrupt */ IntUartInfo[minor].imr |= MCF548X_PSC_IMR_TXRDY; diff --git a/c/src/lib/libbsp/m68k/genmcf548x/include/bsp.h b/c/src/lib/libbsp/m68k/genmcf548x/include/bsp.h index 362d2dd209..948767e69f 100644 --- a/c/src/lib/libbsp/m68k/genmcf548x/include/bsp.h +++ b/c/src/lib/libbsp/m68k/genmcf548x/include/bsp.h @@ -116,6 +116,21 @@ extern int rtems_mcf548x_fec_driver_attach_detach(struct rtems_bsdnet_ifconfig * #define RTEMS_BSP_NETWORK_DRIVER_NAME "fec1" #define RTEMS_BSP_NETWORK_DRIVER_NAME2 "fec2" +#ifdef HAS_DBUG + typedef struct { + uint32_t console_baudrate; + uint8_t server_ip [4]; + uint8_t client_ip [4]; + uint8_t gateway_ip[4]; + uint8_t netmask [4]; + uint8_t spare[4]; + uint8_t macaddr [6]; + uint32_t ethport; /* default fec port: 1 = fec1, 2 = fec2 */ + uint32_t uartport; /* default fec port: 1 = psc0, 2 = psc1... */ + } dbug_settings_t; + +#define DBUG_SETTINGS (*(const dbug_settings_t *)0xFC020000) +#endif /* HAS_DBUG */ #ifdef __cplusplus } #endif diff --git a/c/src/lib/libbsp/m68k/genmcf548x/network/network.c b/c/src/lib/libbsp/m68k/genmcf548x/network/network.c index 859cee483b..797f3f9117 100644 --- a/c/src/lib/libbsp/m68k/genmcf548x/network/network.c +++ b/c/src/lib/libbsp/m68k/genmcf548x/network/network.c @@ -1758,6 +1758,17 @@ int rtems_mcf548x_fec_driver_attach(struct rtems_bsdnet_ifconfig *config) ETHER_ADDR_LEN ); } +#endif +#ifdef HAS_DBUG + if ((sc->arpcom.ac_enaddr[0] == 0) && + (sc->arpcom.ac_enaddr[1] == 0) && + (sc->arpcom.ac_enaddr[2] == 0)) { + memcpy( + (void *)sc->arpcom.ac_enaddr, + DBUG_SETTINGS.macaddr, + ETHER_ADDR_LEN + ); + } #endif if(config->mtu) mtu = config->mtu; -- cgit v1.2.3