This is the mail archive of the
ecos-discuss@sources.redhat.com
mailing list for the eCos project.
RE: EB40 Serial port #1 question.
- To: "Jonathan Larmour" <jlarmour at redhat dot com>
- Subject: RE: [ECOS] EB40 Serial port #1 question.
- From: <felixwong at i-technologies dot cc>
- Date: Wed, 10 Oct 2001 17:48:05 +0800
- Cc: <ecos-discuss at sources dot redhat dot com>
NOTE: The program below IS working on my EB40 fine.
The modification I made was "wt" instead of "rw" in file open operation.
Both "/dev/ser1" and "/dev/tty1" should work.
Is there any problem with the "rw" case with "fopen"?? (note that
"wr" case is working fine in this example too). Seems only the first
character of file "mode" string is intepreted in eCos fileio.
Is that correct?
Best Regards,
FW.
-----Original Message-----
From: felixwong@i-technologies.cc [mailto:felixwong@i-technologies.cc]
Sent: Wednesday, October 10, 2001 5:22 PM
To: Jonathan Larmour
Cc: ecos-discuss@sources.redhat.com
Subject: RE: [ECOS] EB40 Serial port #1 question.
The code below was what I used to test my serial #1 port on EB40. For
the device name part, I tried both the "/dev/tty1" and "/dev/ser1". However,
only "cyg_io_write" can output to serial #1. And only "printf" can output to
serial #0 port. No "err" in all parts of the program during execution. It seems
that the serial port #1 works fine when using "cyg_io_write()", but cannot
be accessed using fileIO type of operation. Is that normal?
Can I configure serial port #1 so that I can use "fprintf" or "printf" for my specific
debugging purpose?
In the __DEVTAB__[] part, the following entries are in my configuration.
[0]: name /dev/ttydiag
dep_name /dev/haldiag
[1]: name /dev/tty1
dep_name /dev/ser1
[2]: name /dev/haldiag
dep_name 0x0
[3]: name /dev/ser0
dep_name 0x0
[4]: name /dev/ser1
dep_name 0x0
<<<<<<<<<<<<<<<<<<<<PROGRAM BEGIN>>>>>>>>>>>>>>>>>>
#include <pkgconf/hal.h>
#include <pkgconf/kernel.h>
#include <pkgconf/io_fileio.h>
#include <cyg/kernel/ktypes.h> // base kernel types
#include <cyg/infra/cyg_trac.h> // tracing macros
#include <cyg/infra/cyg_ass.h> // assertion macros
#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/stat.h>
#include <errno.h>
#include <string.h>
#include <dirent.h>
#include <cyg/fileio/fileio.h>
#include <cyg/infra/testcase.h>
#include <cyg/infra/diag.h> // HAL polled output
#include <cyg/kernel/kapi.h> /* All the kernel specific stuff */
#include <cyg/io/io.h> /* I/O functions */
int main( int argc, char **argv )
{
FILE *out1;
cyg_io_handle_t handle;
Cyg_ErrNo err;
const char test_string[] = "serial example is working correctly!\n";
cyg_uint32 len = strlen(test_string);
err = cyg_io_lookup( "/dev/tty1", &handle );
if (ENOERR == err) {
err = cyg_io_write( handle, test_string, &len );
}
err = printf ("test0\n");
out1 = fopen ("/dev/tty1","wt");
err = fprintf (out1,"test1\n");
err = fclose (out1);
out1 = fopen ("/dev/haldiag","wt");
err = fprintf (out1,"test2\n");
err = fclose (out1);
exit_0:
goto exit_0;
}
<<<<<<<<<<<<<<<<<<<<PROGRAM END>>>>>>>>>>>>>>>>>>
-----Original Message-----
From: jlarmour@cambridge.redhat.com [mailto:jlarmour@cambridge.redhat.com]On Behalf Of Jonathan Larmour
Sent: Wednesday, October 10, 2001 3:48 AM
To: Felix Wong
Cc: ecos-discuss@sources.redhat.com
Subject: Re: [ECOS] EB40 Serial port #1 question.
Felix Wong wrote:
>
> I am going to use EB40's second serial port for my tty display purpose.
> I have tried to use fopen("/dev/ser1","rw") to get a file pointer for my
> tty. Then I used fprintf to generate output to the serial device.
> However, no display was shown in the terminal monitor. The baud rate of
> both sides I have set to 38400 N81.
Try using /dev/tty1.
Jifl
--
Red Hat, Rustat House, Clifton Road, Cambridge, UK. Tel: +44 (1223) 271062
Maybe this world is another planet's Hell -Aldous Huxley || Opinions==mine