RTEMS 5.1 Release LibBSD Networking Issue

rvanderwal rvanderwal at bellsouth.net
Thu Nov 5 15:19:19 UTC 2020


Good Morning,
I seem to be having an issue with RTEMS 5.1 Release Libbsd networking when I include my own 'rtems_bsd_get_mac_address' function as described in rtemsbsd/include/rtems/bsd/bsd.h. I'm running on a Xilinx Microzed using xilinx_zynq_zedboard BSP and have a minimal RTEMS console application (source code included below). The rc.conf file configures the cgem0 interface and starts FTP and telnet daemons.
If I include the 'rtems_bsd_get_mac_address' function, the mac address is set but RTEMS doesn't respond to any pings and doesn't allow any connections. However, a ping to an external device from RTEMS is successful. I have run tcpdump filtering on ICMP messages and RTEMS sees them.
If I comment out the 'rtems_bsd_get_mac_address' function, it has the default mac address and everything works as expected.
All guidance and help are greatly appreciated.
Thanks,Rick

//// RTEMS_Main.c//#include <bsp.h>#include <assert.h>#include <stdlib.h>#include <stdio.h>#include <unistd.h>#include <rtems/ramdisk.h>#include <rtems/printer.h>#include <rtems/stackchk.h>#include <rtems/bsd/bsd.h>#include <rtems/media.h>#include <machine/rtems-bsd-rc-conf.h>#include <rtems/ftpd.h>
#include <rtems/console.h>#include <rtems/shell.h>
#include <stdint.h>
void rtems_bsd_get_mac_address(const char* name, int unit, uint8_t mac_addr[6]){    mac_addr[0] = 0x0f;    mac_addr[1] = 0xc0;    mac_addr[2] = 0xcb;    mac_addr[3] = 0x6f;    mac_addr[4] = 0xcb;    mac_addr[5] = 0x22;}
static void start_console(void){    rtems_status_code sc = rtems_shell_init(        "SHLL",        32 * 1024,        1,        CONSOLE_DEVICE_NAME,        true,        true,        NULL    );    assert(sc == RTEMS_SUCCESSFUL);}
static void network_init(void){    printf("BSD\n");    rtems_status_code sc = rtems_bsd_initialize();    assert(sc == RTEMS_SUCCESSFUL);
    sc = rtems_task_wake_after( 1000 );    assert(sc == RTEMS_SUCCESSFUL);        printf("Config\n");    // configure bsd networking by specifying configuration file, wait forever, verbose = true    rtems_bsd_run_rc_conf("/media/mmcsd-0-0/rc.conf", 0, true);}
void *main_thread(void *arg){  printf("Media Server\n");  rtems_media_server_initialize(        25,        32 * 1024,        RTEMS_PREEMPT | RTEMS_NO_TIMESLICE | RTEMS_ASR | RTEMS_INTERRUPT_LEVEL(0),        RTEMS_NO_FLOATING_POINT | RTEMS_LOCAL );      rtems_status_code sc = rtems_task_wake_after( 1000 );  assert(sc == RTEMS_SUCCESSFUL);
  network_init();    sc = rtems_task_wake_after( 1000 );  assert(sc == RTEMS_SUCCESSFUL);    start_console();
  assert(0);}
/* * Configure LibBSD. */#define RTEMS_BSD_CONFIG_NET_PF_UNIX#define RTEMS_BSD_CONFIG_NET_IF_BRIDGE#define RTEMS_BSD_CONFIG_NET_IF_LAGG#define RTEMS_BSD_CONFIG_NET_IF_VLAN#define LIBBSP_ARM_XILINX_ZYNQ_BSP_H#define RTEMS_BSD_CONFIG_BSP_CONFIG#define RTEMS_BSD_CONFIG_SERVICE_TELNETD#define RTEMS_BSD_CONFIG_SERVICE_FTPD#define RTEMS_BSD_CONFIG_INIT
#include <machine/rtems-bsd-config.h>
/* * Configure Shell */#define CONFIGURE_SHELL_COMMANDS_INIT
#include <bsp/irq-info.h>
#include <rtems/netcmds-config.h>
#ifdef RTEMS_BSD_MODULE_USER_SPACE_WLANSTATS  #define SHELL_WLANSTATS_COMMAND &rtems_shell_WLANSTATS_Command,#else  #define SHELL_WLANSTATS_COMMAND#endif
#ifdef RTEMS_BSD_MODULE_USR_SBIN_WPA_SUPPLICANT  #define SHELL_WPA_SUPPLICANT_COMMAND &rtems_shell_WPA_SUPPLICANT_Command,#else  #define SHELL_WPA_SUPPLICANT_COMMAND#endif
#define CONFIGURE_SHELL_USER_COMMANDS \  SHELL_WLANSTATS_COMMAND \  SHELL_WPA_SUPPLICANT_COMMAND \  &bsp_interrupt_shell_command, \  &rtems_shell_ARP_Command, \  &rtems_shell_HOSTNAME_Command, \  &rtems_shell_PING_Command, \  &rtems_shell_ROUTE_Command, \  &rtems_shell_NETSTAT_Command, \  &rtems_shell_IFCONFIG_Command, \  &rtems_shell_TCPDUMP_Command, \  &rtems_shell_SYSCTL_Command, \  &rtems_shell_VMSTAT_Command
#define CONFIGURE_SHELL_COMMANDS_ALL
#include <rtems/shellconfig.h>
/* * Configure RTEMS. */#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
#define CONFIGURE_APPLICATION_NEEDS_LIBBLOCK
#define CONFIGURE_FILESYSTEM_DEVFS#define CONFIGURE_FILESYSTEM_DOSFS#define CONFIGURE_MAXIMUM_FILE_DESCRIPTORS 32
#define CONFIGURE_MAXIMUM_USER_EXTENSIONS 1
#define CONFIGURE_UNLIMITED_ALLOCATION_SIZE 32#define CONFIGURE_UNLIMITED_OBJECTS#define CONFIGURE_UNIFIED_WORK_AREAS
#define CONFIGURE_STACK_CHECKER_ENABLED
#define CONFIGURE_BDBUF_BUFFER_MAX_SIZE (64 * 1024)#define CONFIGURE_BDBUF_MAX_READ_AHEAD_BLOCKS 4#define CONFIGURE_BDBUF_CACHE_MEMORY_SIZE (1 * 1024 * 1024)
#define CONFIGURE_MAXIMUM_POSIX_THREADS 20#define CONFIGURE_POSIX_INIT_THREAD_TABLE#define CONFIGURE_POSIX_INIT_THREAD_ENTRY_POINT main_thread
#define CONFIGURE_MAXIMUM_PROCESSORS 2#define CONFIGURE_MICROSECONDS_PER_TICK 1000#define CONFIGURE_TICKS_PER_TIMESLICE 50
#define CONFIGURE_SCHEDULER_PRIORITY_SMP
#define CONFIGURE_INIT
#include <rtems/confdefs.h>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rtems.org/pipermail/users/attachments/20201105/d2990b6f/attachment-0001.html>


More information about the users mailing list