Problem in RTEMS Network initialization for MVME162 VME CPU Board

Joel Sherrill joel.sherrill at OARcorp.com
Mon Dec 3 15:12:33 UTC 2012


Hi

I was involved in the initial porting of that code from *BSD
to RTEMS. It is shared between the mvme162 and mvme167.
I recall we had luck on one but not the other.

Sorry but at this point, unless someone has a more recent
memory, you will need to debug it. It would be great to
get this working. :)

On the general configuration issues, I recommend moving
your app to a pc386 BSP (maybe using qemu) with a known
working configuration to make sure it isn't something you
are doing. Run one or more of the network demos on
the pc, then debug that app on the 162.

-joel

On 12/03/2012 04:19 AM, AJAI KUMAR MEDHAVI wrote:
> Hi
>
>
> I have developed an Application using RTEMS on MVME162 VME CPU Board. The
> Application consists of 4 Tasks with Priorities from 101 to 104.
>
>
> I have to test my RTEMS Application with another application running on
> Another PC through Ethernet (10 Mbps). Both the CPU board and another PC
> are
> interconnected though Hub.
>
>
> In RTEMS Init Task, I used the function
>
> rtems_bsdnet_initialize_network() to Initialize Networking. When I run my
> application on MVME162 CPU board, it hangs during Network Initialization.
> Printf is not working inside rtems_bsdnet_initialize_network().
>
>
>
> Please find the code for The RTEMS INIT Task , rtems_bsdnet_ifconfig&
> rtems_bsdnet_config structures initialization as given below :
>
>
>
> rtems_task Init(rtems_task_argument    argument)
> {
> 	rtems_status_code status;
>
> 	puts("\nRTEMS INIT TASK : Creating Application Resources .......\n" );
>
> 	/*-----Network initialization--------------------------------------------*/
> 	puts("\nNetwork initializing..........\n");
>      rtems_bsdnet_initialize_network();
>      puts("\nNetwork initialized!\n");
>      /*------------------------------------------------------------------------*/
>
>
> 	/*-----Create Application Tasks Names------------------------------------*/
> 	APPINIT_TASK_NAME 		=  rtems_build_name( 'T', 'A', '1', ' ' );
> 	RECV_TASK_NAME 			=  rtems_build_name( 'T', 'A', '2', ' ' );
> 	RecvProcessTask_NAME 	=  rtems_build_name( 'T', 'A', '3', ' ' );
> 	PeriodicReadTask_NAME 	=  rtems_build_name( 'T', 'A', '4', ' ' );
>
>
>
>    	/*-----Create Application Semaphores / Message Queues
> Names------------------------------------*/
> 	ioread_sema_NAME 			=  rtems_build_name( 'S', 'E', '1', ' ' );
> 	RecvProcessTask_msgQ_NAME 	=  rtems_build_name( 'M', 'Q', '1', ' ' );
> 	PeriodicReadTask_msgQ_NAME	=  rtems_build_name( 'M', 'Q', '2', ' ' );
>
>
> 	/*-----Create Application Resources--------------------------------------*/
> 	create_app_tasks();
>      create_app_msgqueues();
> 	create_app_sema();
>
>
> 	status = rtems_task_delete( RTEMS_SELF );
> 	directive_failed( status, "rtems_task_delete of RTEMS_SELF" );
>
>   }
>
>
> For Network Initialization, I have set my CPU Board IP address as
> 100.100.100.100 and configured following structures as given below :
>
>
> static struct rtems_bsdnet_ifconfig 	Appnetdriver_config = {
> 		RTEMS_BSP_NETWORK_DRIVER_NAME,
> 		RTEMS_BSP_NETWORK_DRIVER_ATTACH,
> 		NULL,                           		/* link to next interface 	*/
> 		"100.100.100.100",                   	/* IP address 				*/
> 		"255.255.255.0",                   		/* IP net mask 				*/
> 		NULL,                           		/* hardware_address 		*/
> 		0,
> 		0,
> 		0,
> 		0,
> 		0,
> 		0,
> 		0,
> 		NULL
> };
>
> struct rtems_bsdnet_config 		rtems_bsdnet_config = {
> 		&Appnetdriver_config,					/* Network interface 							*/
> 		NULL, 						  			/* Not use BOOTP to get network configuration 	*/
> 		NETWORK_TASK_PRIORITY,  				/* Network task priority 						*/
> 		0,										/* MBUF space 									*/
> 		0,										/* MBUF cluster space 							*/
> 		"rtems_host",           				/* Host name 									*/
> 		0,				          				/* Domain name 									*/
> 		0,           							/* Gateway 										*/
> 		"100.100.100.111",            			/* Log host 									*/
> 		0,					         			/* Name server(s) 								*/
> 		0,         								/* NTP server(s) 								*/
> 		0,
> 		0,
> 		0,
> 		0,
> 		0
> };
>
>
> The RTEMS_BSP_NETWORK_DRIVER_NAME and RTEMS_BSP_NETWORK_DRIVER_ATTACH has
> been defined in mvme16x_hw.h (in /c/src/lib/libbsp/m68k/shared/mvme/)as
> given below :
>
>
> struct rtems_bsdnet_ifconfig;
> int uti596_attach(struct rtems_bsdnet_ifconfig * pConfig, int attaching );
> #define RTEMS_BSP_NETWORK_DRIVER_NAME   "uti1"
> #define RTEMS_BSP_NETWORK_DRIVER_ATTACH uti596_attach
>
>
>
> Please note that there is no problem if configure above two structures for
> Loopback test and loopback tests run perfectly.
>
>
> For RTEMS INIT task have also included following network files :
>
> #include<rtems/rtems_bsdnet.h>
> #include<rtems/error.h>
> #include<errno.h>
> #include<sys/socket.h>
> #include<netinet/in.h>
>
>
> Also defined :
>
> /*-------Init Task---------------------------------------------------*/
> #define CONFIGURE_INIT_TASK_STACK_SIZE    	(10*1024)
> #define CONFIGURE_INIT_TASK_PRIORITY     	 50
> #define CONFIGURE_INIT_TASK_INITIAL_MODES 	(RTEMS_PREEMPT | \
> 											 RTEMS_NO_TIMESLICE | \
> 											 RTEMS_NO_ASR | \
> 											 RTEMS_INTERRUPT_LEVEL(0))
>
>
> /*-------Network Task Priorities----------*/
> #define NETWORK_TASK_PRIORITY			100
>
>
> /*-------Application Task Priorities------*/
> #define	APPINIT_TASK_PRIORITY			101
> #define	RecvProcessTask_PRIORITY		102
> #define	Recv_Task_PRIORITY				103
> #define	PeriodicReadTask_PRIORITY		104
>
>
>
> /*-------------- configuration
> information-------------------------------------------------------------------
> */
>
> #define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
> #define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
> #define CONFIGURE_APPLICATION_NEEDS_TIMER_DRIVER
>
>
> #define CONFIGURE_EXECUTIVE_RAM_SIZE        	(512*1024)
> #define CONFIGURE_MAXIMUM_SEMAPHORES          	20
> #define CONFIGURE_MAXIMUM_MESSAGE_QUEUES      	20
> #define CONFIGURE_MAXIMUM_PERIODS           	 1
> #define CONFIGURE_MAXIMUM_TASKS             	20
> #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
>
>
> #define CONFIGURE_MICROSECONDS_PER_TICK					10000         /*--- Changed
> from 1000 to 10000 on July 11, 2012 ----------*/
> #define CONFIGURE_MAXIMUM_DRIVERS			 			10
> #define CONFIGURE_MAXIMUM_DEVICES 			  			20
> #define CONFIGURE_LIBIO_MAXIMUM_FILE_DESCRIPTORS 		50
> #define CONFIGURE_USE_IMFS_AS_BASE_FILESYSTEM
>
>
>
> Now I have to know following :
>
>
> 1. How to in initializing rtems_bsdnet_ifconfig&  rtems_bsdnet_config
> structures ( MVME162 CPU Board IP address is 100.100.100.100 and This has
> to receive/send messages from/to another application running on Another PC
> through Ethernet (10 Mbps). Both the CPU board and another PC are
> interconnected though Hub )
>
>
> 2. Is there something wrong in the initialization of bsdnet config
> structures, I have done. If yes what will be proper values.
>
>
> 3.Whether I have to register Ethernet device driver in my application. If
> yes, the how ?
>
>
>
> 4.How to enable "Printf" inside rtems_bsdnet_initialize_network() just for
> debugging. The code inside "rtems_bsdnet_initialize_network()" have
> multiple printfs and probably has been disabled by some flag/Macros. I
> have not found the way how to enable printf and which
> file/makefile/configure file need to changed.
>
>
>
>
> Any suggestions/solutions at the earliest.
>
>
> Thanks in advance
>
>
>
> Best regards
>
>
>
> AJAI KUMAR MEDHAVI
> SCIENTIFIC OFFICER
> RAJA RAMMANNA CENTRE FOR ADVANCED TECHNOLGY
> DEPARTMENT OF ATOMIC ENERGY, GOV. OF INDIA,
> PO : CAT, INDORE-452013, INDIA
> PH. 91-731-2488052
> Email : akmedhavi at rrcat.gov.in , akmedhavi at rediffmail.com
>
>
>
>
>
>
>
>




More information about the users mailing list