microwindows 0.90-rtems 4.7-pc386 - exececuting demo proble - SOLVED
luca bertozzo
lbertozzo at hotmail.com
Tue Feb 8 19:43:20 UTC 2005
It had just been enough to define more
CONFIGURE_LIBIO_MAXIMUM_FILE_DESCRIPTORS.
For the sake of anyone concerned, I'm debugging with ddd + i386-rtems4.7-gdb
targeting a bochs box - compiled with --enable-gdb-stubs. Executable is
called by grub in a floppy image.
>From: "Joel Sherrill <joel at OARcorp.com>" <joel.sherrill at OARcorp.com>
>Reply-To: joel.sherrill at OARcorp.com
>To: Mark Mussetter <mark at link-comm.com>
>CC: rtems-users at rtems.com
>Subject: Re: [rtems-users] microwindows 0.90-rtems 4.7-pc386 - executing
>demo problems
>Date: Mon, 07 Feb 2005 11:27:01 -0600
>
>Mark Mussetter wrote:
>>We got that error when we were getting started as well. Turned out that
>>we needed to actually create and install a framebuffer driver (/dev/fb0).
>>Using Rosimildo da Silva's patch for rtems as a starting point, this is
>>what we had to do:
>>
>>1) In rtemscfg.h, changed the CONFIGURE_LIBIO_MAXIMUM_FILE_DESCRIPTORS
>>define to allow more devices.
>>2) Added MY_FRAMEBUFFER_DRIVER_TABLE_ENTRY to the Device_drivers table
>>3) Defined MY_FRAMEBUFFER_DRIVER_TABLE_ENTRY in framebuffer_driver.h
>>4) Wrote functions FB_Initialize, FB_Open, FB_Close, and FB_Control.
>>
>>Everything else is pretty hardware specific but this should get you
>>started.
>
>Can you post your build and configure options for using MicroWindows
>to the Wiki?
>
>FWIW it would be nice if we could get a /dev/fb0 implementation for
>the pc386 BSP which is appropriately licensed.
>
>--joel
>
>>Hope this helps,
>>
>>Mark
>>
>>
>>==================================
>>
>>
>>/* In rtemscfg.h (Values that override settings in confdefs.h) */
>>
>>...
>>
>>#define CONFIGURE_LIBIO_MAXIMUM_FILE_DESCRIPTORS 10 /* overriding
>>confdefs value of 3, so can install our devices including /dev/fb0 */
>>
>>...
>>
>>/* List of device drivers loaded by RTEMS at boot time */
>>rtems_driver_address_table Device_drivers[] =
>>{
>> CONSOLE_DRIVER_TABLE_ENTRY,
>> CLOCK_DRIVER_TABLE_ENTRY,
>>
>>/* this can be a bit tricky if you are using a serial mouse,
>> make sure that you do not install and serial driver that
>> uses the same port !!!!
>>*/
>>#if 0
>> TTY2_DRIVER_TABLE_ENTRY,
>>
>> #if PS2_MOUSE
>> PAUX_DRIVER_TABLE_ENTRY,
>> #else
>> /*
>> * Make sure that you have selected the COM port and the
>> * mouse type in (
>>c/src/lib/libbsp/i386/pc386/console/serial_mouse.h ).
>> */
>> SERIAL_MOUSE_DRIVER_TABLE_ENTRY,
>> #endif
>> /* Standard VGA driver */
>> FBVGA_DRIVER_TABLE_ENTRY,
>>#else
>> {NULL,NULL,NULL,NULL,NULL,NULL},
>> {NULL,NULL,NULL,NULL,NULL,NULL},
>> {NULL,NULL,NULL,NULL,NULL,NULL},
>>#endif
>> {NULL,NULL,NULL,NULL,NULL,NULL},
>> MY_FRAMEBUFFER_DRIVER_TABLE_ENTRY,
>> MY_ADS_DRIVER_TABLE_ENTRY,
>> PTY_DRIVER_TABLE_ENTRY
>>};
>>
>>#include <confdefs.h>
>>
>>==================================
>>
>>/*In framebuffer.h */
>>
>>rtems_device_driver FB_Open( rtems_device_major_number major,
>> rtems_device_minor_number minor,
>> void *args );
>>
>>
>>rtems_device_driver FB_Close( rtems_device_major_number major,
>> rtems_device_minor_number minor,
>> void *args );
>>
>>
>>rtems_device_driver FB_Control( rtems_device_major_number major,
>> rtems_device_minor_number minor,
>> void *args );
>>
>>
>>rtems_device_driver FB_Initialize( rtems_device_major_number major,
>> rtems_device_minor_number minor,
>> void *args );
>>
>>
>>//When using the following driver setup, we don't need a read or write
>>function since the subdriver "fblinx.c" handles the pixels directly
>>#define MY_FRAMEBUFFER_DRIVER_TABLE_ENTRY \
>>{ FB_Initialize, FB_Open, FB_Close, NULL, NULL, FB_Control }
>>
>>==================================
>>
>>
>>At 08:20 AM 2/5/2005, you wrote:
>>
>>>Hello all,
>>>
>>>I've compiled microwindows demo for pc386 bsp.
>>>
>>>Trying to run wdemo on real pc and bochs too, I found problem in getting
>>>access to /dev/fb0.
>>>
>>>In microwindows/src/scr_rtems.c :
>>>
>>>....
>>>static PSD
>>>fb_open(PSD psd)
>>>{
>>> char * env;
>>> int type, visual;
>>> int tty;
>>> PSUBDRIVER subdriver;
>>> struct fb_screeninfo fb_info;
>>>
>>> assert(status < 2);
>>>
>>> /* locate and open framebuffer, get info*/
>>> if(!(env = getenv("FRAMEBUFFER")))
>>> env = "/dev/fb0";
>>> fb = open( env, O_RDWR);
>>> if(fb < 0) {
>>> EPRINTF("Error opening %s: %m\n", env);
>>> return NULL;
>>> }
>>>
>>>Call to open() always returns -1.
>>>
>>>Anyone may help?
>>>
>>>Thanks.
>>>
>>>Luca
>>
>>Mark Mussetter
>>Link Communications, Inc.
>>1035 Cerise Rd
>>Billings, MT 59101-7378
>>phone: (406) 245-5002 ext 105
>>Fax: (406) 245-4889
>>WWW: http://www.link-comm.com
>>MailTo:mark at link-comm.com
>>
>>
>
>
>--
>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