annotate packages/io/serial/current/tests/README @ 34:29bc183297e1 ecos-sw-1999-09-02

Merge from eCos master repository on 1999-09-02-16:26:10-BST
author jlarmour
date Thu, 02 Sep 1999 16:11:22 +0000
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
34
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
1 Serial Testing with ser_filter
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
2
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
3 Rationale
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
4 ~~~~~~~~~
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
5 Since some targets only have one serial connection, a serial testing
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
6 harness needs to be able to share the connection with GDB (however,
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
7 the test and GDB can also run on separate lines).
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
8
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
9 The serial filter (ser_filter) sits between the serial port and GDB
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
10 and monitors the exchange of data between GDB and the
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
11 target. Normally, no changes are made to the data.
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
12
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
13 When a test request packet is sent from the test on the target, it is
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
14 intercepted by the filter. The filter and target then enter a loop,
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
15 exchanging protocol data between them which GDB never sees.
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
16
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
17 In the event of a timeout, or a crash on the target, the filter falls
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
18 back into its pass-through mode. If this happens due to a crash it
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
19 should be possible to start regular debugging with GDB. The filter
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
20 will then stay in the pass-though mode until GDB disconnects.
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
21
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
22
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
23 Adding A New Platform
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
24 ~~~~~~~~~~~~~~~~~~~~~
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
25 The file ser_test_protocol.inl contains information about how to run
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
26 the serial tests on supported platforms. When adding a new serial
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
27 driver to eCos, ser_test_protocol.inl should be updated accordingly
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
28 so the driver can be tested.
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
29
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
30 The definitions TEST_SER_DEV and TEST_TTY_DEV are set according to
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
31 platform:
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
32
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
33 TEST_SER_DEV is the name of the serial device over which the serial
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
34 test protocol runs. The definition should be conditional on all
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
35 required configuration options.
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
36
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
37 TEST_TTY_DEV is the name of the TTY device over which the TTY test
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
38 protocol runs. The definition should be conditional on all required
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
39 configuration options. Note that this device is layered on top of a
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
40 serial device and must be conditional on that device's config
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
41 options as well as its own.
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
42
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
43 Here's an example for the PowerPC/Cogent where GDB is connected via
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
44 serial connector B:
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
45
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
46 #if defined(CYGPKG_HAL_POWERPC_COGENT) \
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
47 && defined(CYGPKG_IO_SERIAL_POWERPC_COGENT) \
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
48 && defined(CYGPKG_IO_SERIAL_POWERPC_COGENT_SERIAL_B)
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
49 # define TEST_SER_DEV CYGDAT_IO_SERIAL_POWERPC_COGENT_SERIAL_B_NAME
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
50 # if defined(CYGPKG_IO_SERIAL_TTY_TTY2)
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
51 # define TEST_TTY_DEV CYGDAT_IO_SERIAL_TTY_TTY2_DEV
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
52 # endif
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
53 #endif
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
54
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
55
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
56 On some targets it may also be necessary to intialize interrupt
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
57 vectors which are otherwise used by CygMon or an eCos GDB stub to
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
58 monitor characters from the host (looking for Control-C):
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
59
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
60 # define SER_OVERRIDE_INT_1 CYGNUM_HAL_INTERRUPT_9
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
61 # define SER_OVERRIDE_INT_2 CYGNUM_HAL_INTERRUPT_10
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
62
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
63 These definitions cause the serial test to restore the eCos handler
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
64 on the specified vectors before opening the serial device.
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
65
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
66
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
67 The file ser_test_protocol.inl also contains an array of serial
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
68 configurations (test_configs). It may be necessary to comment some of
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
69 these out for the platform if the driver or hardware cannot handle
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
70 all the given serial configurations.
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
71
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
72
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
73 The Protocol
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
74 ~~~~~~~~~~~~
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
75 The protocol commands are prefixed with an @-character which the
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
76 serial filter is looking for. The protocol commands include:
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
77
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
78 PING
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
79 Allows the test on the target to probe for the filter. The filter
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
80 responds with OK, while GDB would just ignore the command. This
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
81 allows the tests to do nothing if they require the filter and it is
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
82 not present.
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
83
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
84 CONFIG
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
85 Requests a change of serial line configuration. Arguments of the
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
86 command specify baud rate, data bits, stop bits, and parity.
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
87
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
88 OPT
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
89 Requests changes in the filter's options. This allows various
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
90 amounts of tracing to be recorded when running tests without
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
91 requiring the filter to be restarted.
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
92
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
93 BINARY
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
94 Requests data to be sent from the filter to the target. The data is
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
95 checksummed, allowing errors in the transfer to be detected.
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
96 Sub-options of this command control how the data transfer is made:
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
97
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
98 NO_ECHO (serial driver receive test)
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
99 Just send data from the filter to the target. The test verifies
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
100 the checksum and PASS/FAIL depending on the result.
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
101
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
102 EOP_ECHO (serial driver half-duplex receive and send test)
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
103 As NO_ECHO but the test echoes back the data to the filter. The
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
104 filter does a checksum on the received data and sends the result
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
105 to the target. The test PASS/FAIL depending on the result of both
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
106 checksum verifications.
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
107
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
108 DUPLEX_ECHO (serial driver duplex receive and send test)
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
109 Smaller packets of data are sent back and forth in a pattern that
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
110 ensures that the serial driver will be both sending and receiving
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
111 at the same time. Again, checksums are computed and verified
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
112 resulting in PASS/FAIL.
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
113
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
114 TEXT
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
115 This is a test of the text translations in the TTY layer.
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
116 Requests a transfer of text data from the target to the filter and
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
117 possibly back again. The filter treats this as a binary transfer,
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
118 while the target may be doing translations on the data. The target
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
119 provides the filter with checksums for what it should expect to
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
120 see.
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
121 [This test is not implemented yet]
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
122
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
123 The above commands may be extended, and new commands added, as
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
124 required to test (new) parts of the serial drivers in eCos.
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
125
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
126 See ser_test_protocol.inl for further details on the protocols.
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
127
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
128
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
129 The Serial Tests
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
130 ~~~~~~~~~~~~~~~~
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
131 The serial tests are built as any other eCos test. After running the
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
132 'make tests' command, the tests can be found in:
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
133
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
134 install/tests/io_serial/
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
135
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
136 serial1
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
137 A simple API test.
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
138
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
139 serial2
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
140 A simple serial send test. It writes out two strings, one raw and
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
141 one encoded as a GDB O-packet.
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
142
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
143 serial3 [requires the serial filter]
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
144 This tests the half-duplex send and receive capabilities of the
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
145 serial driver.
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
146
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
147 serial4 [requires the serial filter]
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
148 This test attempts to use a few different serial configurations,
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
149 testing the driver's configuration/setup functionality.
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
150
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
151 serial5 [requires the serial filter]
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
152 This tests the duplex send and receive capabilities of the serial
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
153 driver.
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
154
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
155 All tests should complete in less than 30 seconds.
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
156
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
157
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
158 Serial Filter Usage
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
159 ~~~~~~~~~~~~~~~~~~~
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
160 Running the ser_filter program with no (or wrong) arguments results
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
161 in the below output:
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
162
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
163 Usage: ser_filter [-t -c -g -S] TcpIPport SerialPort BaudRate
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
164 or: ser_filter -n [-t -c -g -S] SerialPort BaudRate
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
165 -t: Enable tracing.
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
166 -f: Enable filter output tracing.
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
167 -g: Enable GDB tracing.
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
168 -S: Output data read from serial line.
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
169 -c: Output data on console instead of via GDB.
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
170 -n: No GDB.
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
171
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
172 The normal way to use it with GDB is to start the filter:
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
173
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
174 ser_filter -t 9000 com1 38400
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
175
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
176 In this case, the filter will be listening on port 9000 and connect
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
177 to the target via the serial port COM1 at 38400 baud. On a UNIX host,
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
178 replace "com1" with a device such as "/dev/ttyS0".
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
179
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
180 The '-t' option enables tracing which will cause the filter to
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
181 describe its actions on the console.
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
182
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
183 Now start GDB with one of the tests as an argument:
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
184
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
185 $ mips-tx39-elf-gdb -nw install/tests/io_serial/serial3
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
186
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
187 Then connect to the filter:
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
188
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
189 (gdb) target remote localhost:9000
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
190
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
191 This should result in a connection in exactly the same way as if you
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
192 had connected directly to the target on the serial line.
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
193
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
194 (gdb) load
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
195 ...
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
196 (gdb) cont
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
197
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
198 Which should result in output similar to the below:
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
199
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
200 Continuing.
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
201 INFO:<BINARY:16:1!>
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
202 PASS:<Binary test completed>
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
203 INFO:<BINARY:128:1!>
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
204 PASS:<Binary test completed>
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
205 INFO:<BINARY:256:1!>
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
206 PASS:<Binary test completed>
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
207 INFO:<BINARY:1024:1!>
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
208 PASS:<Binary test completed>
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
209 INFO:<BINARY:512:0!>
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
210 PASS:<Binary test completed>
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
211 ...
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
212 PASS:<Binary test completed>
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
213 INFO:<BINARY:16384:0!>
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
214 PASS:<Binary test completed>
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
215 PASS:<serial3 test OK>
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
216 EXIT:<done>
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
217
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
218 If any of the individual tests fail the testing will terminate with
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
219 a FAIL.
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
220
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
221 With tracing enabled, you would also see the filter's status output:
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
222
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
223 The PING command sent from the target to determine the presence of
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
224 the filter:
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
225 [400 11:35:16] Dispatching command PING
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
226 [400 11:35:16] Responding with status OK
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
227
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
228 Each of the binary commands result in output similar to:
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
229 [400 11:35:16] Dispatching command BINARY
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
230 [400 11:35:16] Binary data (Size:16, Flags:1).
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
231 [400 11:35:16] Sending CRC: '170231!', len: 7.
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
232 [400 11:35:16] Reading 16 bytes from target.
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
233 [400 11:35:16] Done. in_crc 170231, out_crc 170231.
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
234 [400 11:35:16] Responding with status OK
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
235 [400 11:35:16] Received DONE from target.
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
236
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
237 This tracing output is normally sent as O-packets to GDB which will
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
238 display the tracing text. By using the -c option, the tracing text
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
239 can be redirected to the console from which ser_filter was started.
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
240
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
241
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
242 The trace options -f, -g, and -S cause data sent from filter, GDB or
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
243 target to be output in hexadecimal form.
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
244
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
245
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
246 A Note on Failures
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
247 ~~~~~~~~~~~~~~~~~~
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
248 A serial connection (especially when driven at a high baud rate) can
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
249 garble the transmitted data because of noise from the environment. It
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
250 is not the job of the serial driver to ensure data integrity - that
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
251 is the job of protocols layering on top of the serial driver.
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
252
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
253 In the current implementation the serial tests and the serial filter
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
254 are not resilient to such data errors. This means that the test may
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
255 crash or hang (possibly without reporting a FAIL). It also means that
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
256 you should be aware of random errors - a FAIL is not necessarily
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
257 caused by a bug in the serial driver.
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
258
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
259 Ideally, the serial testing infrastructure should be able to
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
260 distinguish random errors from consistent errors - the former are
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
261 most likely due to noise in the transfer medium, while the latter are
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
262 more likely to be caused by faulty drivers. The current
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
263 implementation of the infrastructure does not have this capability.
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
264
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
265
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
266 Debugging
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
267 ~~~~~~~~~
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
268 If a test fails, the serial filter's output may provide some hints
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
269 about what the problem is. If the option '-S' is used when starting
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
270 the filter, data received from the target is printed out:
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
271
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
272 [400 11:35:16] 0000 50 41 53 53 3a 3c 42 69 'PASS:<Bi'
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
273 [400 11:35:16] 0008 6e 61 72 79 20 74 65 73 'nary.tes'
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
274 [400 11:35:16] 0010 74 20 63 6f 6d 70 6c 65 't.comple'
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
275 [400 11:35:16] 0018 74 65 64 3e 0d 0a 49 4e 'ted>..IN'
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
276 [400 11:35:16] 0020 46 4f 3a 3c 42 49 4e 41 'FO:<BINA'
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
277 [400 11:35:16] 0028 52 59 3a 31 32 38 3a 31 'RY:128:1'
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
278 [400 11:35:16] 0030 21 3e 0d 0a 40 42 49 4e '!>..@BIN'
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
279 [400 11:35:16] 0038 41 52 59 3a 31 32 38 3a 'ARY:128:'
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
280 [400 11:35:16] 0040 31 21 .. .. .. .. .. .. '1!'
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
281
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
282 In the case of an error during a testing command the data received by
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
283 the filter will be printed out, as will the data that was
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
284 expected. This allows the two data sets to be compared which may give
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
285 some idea of what the problem is.