Problem in RTEMS Network initialization for MVME162 VME CPU Board

AJAI KUMAR MEDHAVI akmedhavi at rrcat.gov.in
Tue Dec 4 06:10:49 UTC 2012


Hi,


Thanks for your reply. I will try to debug the problem.


Kindly suggest me "How to enable "Printf or Printk" inside
rtems_bsdnet_initialize_network() just for debugging / Diagnose.


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.



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


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