Network semaphore error

Joel Sherrill joel.sherrill at OARcorp.com
Thu Sep 18 13:12:46 UTC 2003


Richard M. Barry wrote:
> I'm getting a run-time error when I run RTEMS on a custom StrongArm 1100 board we developed in house.  More details about the problem:
> 
> I wrote a network device driver for the HDLC comms chip on the board, put it in the bsp and compiled the bsp.  To test it I wrote a simple application that just opens a socket to listen on.   It all compiled fine, but when I try to run the application, it exits on a fatal error, saying it can't release the network semaphore (detailed output below).   It doesn't seem to even get into my network driver's code (I put a printf at the beginning of EVERY function in the driver to make sure), so it crashes out while trying to initialise the network code I guess?  Any ideas on where to start looking for the problem?   The application Makefile defines MANAGERS=all, and the system.h for the application is also listed below.   

The network device driver isn't installed that way.  You have to get to
a user task, initialize the network stack, then attach your driver.
Look at the network demos.

This is happening because the network device driver is trying to release
a semaphore which hasn't been created yet.

> Console output when running application:
> ----------------------------------------
> 
> RTEMS RELEASE rtems-ss-20011210(ARM/StrongARM 1100/armssdr)
> COPYRIGHT (c) 1989-1999.
> On-Line Applications Research Corporation (OAR).
> 
> SA1100 SSDR (armssdr) Board Support Package
> COPYRIGHT (c) Surrey Satellite Technology Ltd (SSTL), 2001
> work_space_size = 0x80000
> maximum_extensions = 0x1
> microseconds_per_tick = 0x2710
> ticks_per_timeslice = 0x32
> maximum_devices = 0x14
> number_of_device_drivers = 0x4
> Device_driver_table = 0x804B600
> _heap_size = 0x0
> rtemsFreeMemStart = 0x80CEF40
> work_space_start = 0x804EF40
> work_space_size = 0x80000
> Ram disk start = 0x18000000
> heap size = 00080000
> Initialized console input on port 0, output on port 2
> 
> Clock driver
> Can't release network semaphore
> 
> fatal error, exiting
> 
> 
> EXECUTIVE SHUTDOWN! Any key to reboot... 
> 
> *************
> 
> system.h
> --------
> 
> #include <rtems.h>
> /*#include <pmacros.h> */
> 
> /* functions */
> 
> rtems_task Init(
>   rtems_task_argument argument
> );
> 
> /* configuration information */
> #include <bsp.h> /* for device driver prototypes */
> 
> /* configuration information */ 
> #define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER 
> #define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
> #define CONFIGURE_APPLICATION_NEEDS_PTY_DRIVER
> 
> #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
> 
> 
> #define CONFIGURE_LIBIO_MAXIMUM_FILE_DESCRIPTORS	20 
> #define CONFIGURE_USE_IMFS_AS_BASE_FILESYSTEM 
> 
> #if 0
> #define CONFIGURE_EXECUTIVE_RAM_SIZE	(512*1024)
> #endif
> 
> #define CONFIGURE_MAXIMUM_SEMAPHORES	    10
> #define CONFIGURE_MAXIMUM_TASKS		        20
> #define CONFIGURE_MAXIMUM_TIMERS          	10
> #define CONFIGURE_MAXIMUM_MESSAGE_QUEUES  	3
>  
> #define CONFIGURE_MICROSECONDS_PER_TICK	  	10000
> 
> 
> /*
> #define CONFIGURE_POSIX_INIT_THREAD_TABLE
>  
> #define CONFIGURE_MAXIMUM_POSIX_THREADS             4 
> #define CONFIGURE_MAXIMUM_POSIX_TIMERS              4
> #define CONFIGURE_MAXIMUM_POSIX_MUTEXES             2
> #define CONFIGURE_MAXIMUM_POSIX_CONDITION_VARIABLES 2
> */
> 
> /*
> #define CONFIGURE_INIT_TASK_STACK_SIZE	  (RTEMS_MINIMUM_STACK_SIZE*8)
> */
> #define CONFIGURE_INIT_TASK_STACK_SIZE	  (4096)
> #define CONFIGURE_INIT_TASK_PRIORITY	    120
> #define CONFIGURE_INIT_TASK_INITIAL_MODES (RTEMS_PREEMPT | \
>                                            RTEMS_NO_TIMESLICE | \
>                                            RTEMS_NO_ASR | \
>                                            RTEMS_INTERRUPT_LEVEL(0))
> 
> 
> /*
> #define CONFIGURE_INIT_TASK_INITIAL_MODES RTEMS_DEFAULT_MODES
> */
> 
> /*
> #define CONFIGURE_EXTRA_TASK_STACKS  (10*1024)
> */
> 
> 
> 
> #include <console.h>
> #include <clockdrv.h>
> #include <rtems/pty.h>
> 
> #define CONFIGURE_HAS_OWN_DEVICE_DRIVER_TABLE
> 
> rtems_driver_address_table Device_drivers[] = {
> 
>   CONSOLE_DRIVER_TABLE_ENTRY,
>   CLOCK_DRIVER_TABLE_ENTRY,
>   PTY_DRIVER_TABLE_ENTRY,
>   {NULL, NULL, NULL, NULL, NULL, NULL}
> };
> 
> #if 0
> #define STACK_CHECKER_ON	1
> #endif
> 
> #include <confdefs.h> 
> 
> /* end of include file */
> 
> Richard Barry


-- 
Joel Sherrill, Ph.D.             Director of Research & Development
joel at OARcorp.com                 On-Line Applications Research
Ask me about RTEMS: a free RTOS  Huntsville AL 35805
Support Available                (256) 722-9985




More information about the users mailing list