annotate examples/serial.c @ 1726:d2486ee206e4

* include/flash_strata_v2.inl: Return the end address which is the last valid address, not the first invalid address. Also import Mark Salters changes from the trunk.
author asl
date Tue, 14 Sep 2004 16:02:54 +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 }