<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
Thank you for the help you have provided so far. I eventually got the program
to build by adding
<br><tt>#define CONFIGURE_HAS_OWN_DEVICE_DRIVER_TABLE</tt>
<p>When I attempt to run the program, I get the message that /dev/ttsy1
& 2 are initialised, however, I get the messages
<p>RTEMS: creating task sh1 in shell_init() (status: request not satisfied)
<p>I get a similar message for all three tasks.  Additionally, I spawned
a task like the previous attempt, using  fopen ("/dev/ttys1"), however,
this fails also.
<p>The code in its entirety is as follows:
<p>#define TEST_INIT
<p>#include <bsp.h>
<p>void test_main( void );
<p>rtems_task Init(
<br>  rtems_task_argument ignored
<br>)
<br>{
<br>  test_main();
<br>}
<p>/* configuration information */
<p>#include <rtems.h>
<br>#include <tty_drv.h>
<br>#include <console.h>
<br>#include <clockdrv.h>
<br>#include <timerdrv.h>
<br> 
<br> 
<p>#define CONFIGURE_RTEMS_INIT_TASKS_TABLE
<br>#define CONFIGURE_MAXIMUM_TASKS            
6
<p>rtems_driver_address_table Device_drivers[] = {
<br>        CONSOLE_DRIVER_TABLE_ENTRY,
<br>        TTY1_DRIVER_TABLE_ENTRY,
<br>        TTY2_DRIVER_TABLE_ENTRY,
<br>        CLOCK_DRIVER_TABLE_ENTRY,
<br>        {NULL,NULL,NULL,NULL,NULL,NULL},
<br>};
<p>#define CONFIGURE_HAS_OWN_DEVICE_DRIVER_TABLE
<br>#define CONFIGURE_RTEMS_INIT_TASKS_TABLE
<p>/*#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER*/
<p>#define CONFIGURE_INIT
<p>#include <confdefs.h>
<br>#include <stdio.h>
<p>rtems_id   Task_id;
<br>rtems_name Task_name;
<p>rtems_task Test_task( rtems_task_argument unused);
<br>void test_main()
<br>{
<br>  rtems_status_code status;
<br>  Task_name = rtems_build_name( 'T', 'A', '1', ' ' );
<br>  status = rtems_task_create(
<br>    Task_name, 1, RTEMS_MINIMUM_STACK_SIZE * 2, RTEMS_DEFAULT_MODES,
<br>    RTEMS_DEFAULT_ATTRIBUTES, &Task_id
<br>  );
<br>  status = rtems_task_start( Task_id, Test_task, 1 );
<br> 
<p>shell_init("sh1",16384,100,"/dev/ttyS1"  ,B9600|CS8,TRUE);
<br>shell_init("sh2",16384,100,"/dev/ttyS2"  ,B9600|CS8,TRUE);
<br>shell_init("shc",16384,100,"/dev/console",B9600|CS8,TRUE);
<p>}
<br> 
<p>const char* tty_ports [] =
<br>{
<br> "/dev/ttyS1",
<br> "/dev/ttyS2"
<br>};
<p>rtems_task Test_task(
<br>  rtems_task_argument unused
<br>)
<br>{
<p> FILE* fp = fopen (tty_ports [0], "r+");
<p> if (!fp)
<br>  {
<br>   printf ("Unable to open %s", tty_ports [0]);
<br>  }
<br> else
<br>  {
<br>   while (1)
<br>    {
<br>     if (!fputc('t', fp))
<br>      {
<br>       printf ("unable to write to port");
<br>      }
<br>    }
<br>  }
<br>}
<br> 
<p>"Fernando RUIZ CASAS (E-mail)" wrote:
<blockquote TYPE=CITE>Hi
<br>If you want to use shell_init without tpc/ip enabled I can send to
you
<br>the patch already submitted to Joel.(05/26/01)
<p>I have not made none modification in the pc386 BSP code to enable
<br>the ports. Only this code has been used.
<br>In shell_init only a make raw mode TERMIOS is done
<br>(How the linux man page says)
<br>None error is showed in the compilation of pc386(pc686) bsp.
<p>Browse in the sources and ask directely to Eric, Rosimildo & more
about the
<br>use of this. (The authors of little patchs...)
<br>I have use this ports like a linux device using only TERMIOS programming.
<p>And this works successfully.
<p>Your code seems correct. I Can try it.
<p>Fernando RUIZ CASAS
<br>home:correo@fernando-ruiz.com
<br>work:fernando.ruiz@ctv.es
<p>> -----Mensaje original-----
<br>> De: Angelo Fraietta [<a href="mailto:angelo@hunterlink.net.au">mailto:angelo@hunterlink.net.au</a>]
<br>> Enviado el: lunes, 02 de julio de 2001 3:38
<br>> Para: correo@fernando-ruiz.com
<br>> CC: Rtems-Users (E-mail)
<br>> Asunto: Re: Comm ports on Pc386
<br>>
<br>>
<br>> I am using the previous snapshot as  do not have networking
<br>> enabled. I am
<br>> trying to open the commport and write some chars (for now).
<br>> If I just try to
<br>> open the port without the code you provided, the file does
<br>> not open. I assume
<br>> it is because the port has to be configured with the code you
<br>> provided.
<br>> However, trying to compile this below, I get a heap of parse errors
in
<br>> ttr_drv.h.
<br>> Is this because of the snapshot or am I doing something wrong here?
<br>>
<br>>
<br>>
<br>>
<br>> #include <tty_drv.h>
<br>> #include <console.h>
<br>> #include <clockdrv.h>
<br>> #include <timerdrv.h>
<br>>
<br>> rtems_driver_address_table Device_drivers[] = {
<br>>         CONSOLE_DRIVER_TABLE_ENTRY,
<br>>         TTY1_DRIVER_TABLE_ENTRY,
<br>>         TTY2_DRIVER_TABLE_ENTRY,
<br>>         CLOCK_DRIVER_TABLE_ENTRY,
<br>>         {NULL,NULL,NULL,NULL,NULL,NULL},
<br>> };
<br>>
<br>> #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
<br>> #define CONFIGURE_MAXIMUM_TASKS            
1
<br>> #include <confdefs.h>
<br>>
<br>> rtems_id   Task_id;
<br>> rtems_name Task_name;
<br>>
<br>> const char* tty_ports [] =
<br>> {
<br>>  "/dev/ttyS1",
<br>>  "/dev/ttyS2"
<br>> };
<br>>
<br>> rtems_task Test_task(
<br>>   rtems_task_argument unused
<br>> )
<br>> {
<br>>  FILE* fp = fopen (tty_ports [0], "r+");
<br>>
<br>>  if (!fp)
<br>>   {
<br>>    printf ("Unable to open %s", tty_ports [0]);
<br>>   }
<br>>  else
<br>>   {
<br>>    while (1)
<br>>     {
<br>>      if (!fputc('t', fp))
<br>>       {
<br>>        printf ("unable to write
to port");
<br>>       }
<br>>     }
<br>>   }
<br>>
<br>> }
<br>>
<br>> Init()
<br>> {
<br>>  Task_name = rtems_build_name( 'T', 'A', '1', ' ' );
<br>>   rtems_status_code status;
<br>>   status = rtems_task_create(
<br>>     Task_name, 1, RTEMS_MINIMUM_STACK_SIZE *
2, RTEMS_DEFAULT_MODES,
<br>>     RTEMS_DEFAULT_ATTRIBUTES, &Task_id
<br>>   );
<br>>   status = rtems_task_start( &Task_id, Test_task, 1
);
<br>> }
<br>>
<br>>
<br>>
<br>>
<br>> "Correo Fernando-ruiz (E-mail)" wrote:
<br>>
<br>> > > -----Mensaje original-----
<br>> > > De: Angelo Fraietta [<a href="mailto:angelo@hunterlink.net.au">mailto:angelo@hunterlink.net.au</a>]
<br>> > > Enviado el: jueves, 28 de junio de 2001 3:52
<br>> > > Para: rtems-users
<br>> > > Asunto: Comm ports on Pc386
<br>> > >
<br>> > >
<br>> > > Does anyone have an example of using the comm ports on a
<br>> PC386 build?
<br>> > >
<br>> > > --
<br>> >
<br>> > ***************************************************************
<br>> >
<br>> > #include <tty_drv.h>
<br>> > #include <console.h>
<br>> > #include <clockdrv.h>
<br>> > #include <timerdrv.h>
<br>> >
<br>> > rtems_driver_address_table Device_drivers[] = {
<br>> >         CONSOLE_DRIVER_TABLE_ENTRY,
<br>> >         TTY1_DRIVER_TABLE_ENTRY,
<br>> >         TTY2_DRIVER_TABLE_ENTRY,
<br>> >         CLOCK_DRIVER_TABLE_ENTRY,
<br>> >         {NULL,NULL,NULL,NULL,NULL,NULL},
<br>> > };
<br>> > #include <confdefs.h>
<br>> >
<br>> > ****************************************************************
<br>> >
<br>> > Adding this like rtems device configuration you have
<br>> > THREE termios ports in your PC.
<br>> >
<br>> > /dev/console
<br>> > /dev/ttyS1
<br>> > /dev/ttyS2
<br>> >
<br>> > How to manage this ports with TERMIOS?
<br>> > See the /rtems/c/src/tests/libtests/termios directory.
<br>> > A complete program to drive a termios device.
<br>> > (My first source to understand it. Thanks Eric Norum)
<br>> > Enjoy it.
<br>> >
<br>> > Are you using the last snapshot (20010525)?
<br>> > With this you can open remote consoles in every port termios.
<br>> >
<br>> > /* TASK NAME,STACK SIZE, TASK PRIO, DEV_NAME, BAUDS & LINE
<br>> SETT.,FOREVER*/
<br>> > #include <shell.h>
<br>> > Init() {
<br>> > ...
<br>> > shell_init("sh1",16384,100,"/dev/ttyS1"  ,B38400|CS8,TRUE);
<br>> > shell_init("sh2",16384,100,"/dev/ttyS2"  ,B38400|CS8,TRUE);
<br>> > shell_init("shc",16384,100,"/dev/console",B38400|CS8,TRUE);
<br>> > ...
<br>> > }
<br>> >
<br>> > Three users accessing at same time at the PC but with RTEMS rtos.
<br>> > A new task for evevy user.
<br>> >
<br>> > Fernando RUIZ CASAS
<br>> > home: correo@fernando-ruiz.com
<br>> > work: fernando.ruiz@ctv.es
<br>> >
<br>> > > Angelo Fraietta
<br>> > >
<br>> > > PO Box 859
<br>> > > Hamilton NSW 2303
<br>> > >
<br>> > > Home Page
<br>> > >
<br>> > > <a href="http://users.hunterlink.net.au/~maaaf/">http://users.hunterlink.net.au/~maaaf/</a>
<br>> > >
<br>> > > There are those who seek knowledge for the sake of
<br>> knowledge - that is
<br>> > > CURIOSITY
<br>> > > There are those who seek knowledge to be known by others - that
is
<br>> > > VANITY
<br>> > > There are those who seek knowledge in order to serve -
<br>> that is LOVE
<br>> > >     Bernard of Clairvaux (1090 - 1153)
<br>> > >
<br>> > >
<br>> > >
<br>>
<br>> --
<br>> Angelo Fraietta
<br>>
<br>> PO Box 859
<br>> Hamilton NSW 2303
<br>>
<br>> Home Page
<br>>
<br>> <a href="http://users.hunterlink.net.au/~maaaf/">http://users.hunterlink.net.au/~maaaf/</a>
<br>>
<br>> There are those who seek knowledge for the sake of knowledge - that
is
<br>> CURIOSITY
<br>> There are those who seek knowledge to be known by others -
<br>> that is VANITY
<br>> There are those who seek knowledge in order to serve - that is LOVE
<br>>     Bernard of Clairvaux (1090 - 1153)
<br>>
<br>>
<br>></blockquote>
--
<br>Angelo Fraietta
<p>PO Box 859
<br>Hamilton NSW 2303
<p>Home Page
<p><A HREF="http://users.hunterlink.net.au/~maaaf/">http://users.hunterlink.net.au/~maaaf/</A>
<p>There are those who seek knowledge for the sake of knowledge - that
is CURIOSITY
<br>There are those who seek knowledge to be known by others - that is
VANITY
<br>There are those who seek knowledge in order to serve - that is LOVE
<br>    Bernard of Clairvaux (1090 - 1153)
<br> </html>