annotate examples/serial.c @ 3168:2a048cafed94

Add support for 32 channel eDMA [Bugzilla 1001579]
author vae
date Wed, 09 May 2012 22:12:01 +0000
parents ead06911cbae
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
168
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
1 /*
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
2 * Written 1999-03-19 by Jonathan Larmour, Cygnus Solutions
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
3 * This file is in the public domain and may be used for any purpose
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
4 */
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
5
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
6 /* CONFIGURATION CHECKS */
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
7
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
8 #include <pkgconf/system.h> /* which packages are enabled/disabled */
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
9 #ifdef CYGPKG_KERNEL
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
10 # include <pkgconf/kernel.h>
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
11 #endif
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
12 #ifdef CYGPKG_LIBC
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
13 # include <pkgconf/libc.h>
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
14 #endif
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
15 #ifdef CYGPKG_IO_SERIAL
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
16 # include <pkgconf/io_serial.h>
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
17 #endif
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
18
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
19 #ifndef CYGFUN_KERNEL_API_C
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
20 # error Kernel API must be enabled to build this example
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
21 #endif
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
22
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
23 #ifndef CYGPKG_LIBC_STDIO
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
24 # error C library standard I/O must be enabled to build this example
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
25 #endif
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
26
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
27 #ifndef CYGPKG_IO_SERIAL_HALDIAG
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
28 # error I/O HALDIAG pseudo-device driver must be enabled to build this example
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
29 #endif
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
30
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
31 /* INCLUDES */
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
32
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
33 #include <stdio.h> /* printf */
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
34 #include <string.h> /* strlen */
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
35 #include <cyg/kernel/kapi.h> /* All the kernel specific stuff */
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
36 #include <cyg/io/io.h> /* I/O functions */
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
37 #include <cyg/hal/hal_arch.h> /* CYGNUM_HAL_STACK_SIZE_TYPICAL */
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
38
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
39
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
40
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
41 /* DEFINES */
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
42
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
43 #define NTHREADS 1
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
44 #define STACKSIZE ( CYGNUM_HAL_STACK_SIZE_TYPICAL + 4096 )
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
45
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
46 /* STATICS */
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
47
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
48 static cyg_handle_t thread[NTHREADS];
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
49 static cyg_thread thread_obj[NTHREADS];
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
50 static char stack[NTHREADS][STACKSIZE];
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
51
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
52 /* FUNCTIONS */
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
53
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
54 static void simple_prog(CYG_ADDRESS data)
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
55 {
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
56 cyg_io_handle_t handle;
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
57 Cyg_ErrNo err;
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
58 const char test_string[] = "serial example is working correctly!\n";
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
59 cyg_uint32 len = strlen(test_string);
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
60
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
61 printf("Starting serial example\n");
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
62
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
63 err = cyg_io_lookup( "/dev/haldiag", &handle );
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
64
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
65 if (ENOERR == err) {
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
66 printf("Found /dev/haldiag. Writing string....\n");
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
67 err = cyg_io_write( handle, test_string, &len );
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
68 }
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
69
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
70 if (ENOERR == err) {
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
71 printf("I think I wrote the string. Did you see it?\n");
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
72 }
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
73
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
74 printf("Serial example finished\n");
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
75
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
76 }
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
77
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
78 void cyg_user_start(void)
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
79 {
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
80 cyg_thread_create(4, simple_prog, (cyg_addrword_t) 0, "serial",
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
81 (void *)stack[0], STACKSIZE, &thread[0], &thread_obj[0]);
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
82 cyg_thread_resume(thread[0]);
ead06911cbae Add up-to-date examples
jlarmour
parents:
diff changeset
83 }