comx.txt
上传用户:lgb322
上传日期:2013-02-24
资源大小:30529k
文件大小:10k
源码类别:

嵌入式Linux

开发平台:

Unix_Linux

  1. COMX drivers for the 2.2 kernel
  2. Originally written by: Tivadar Szemethy, <tiv@itc.hu>
  3. Currently maintained by: Gergely Madarasz <gorgo@itc.hu>
  4. Last change: 21/06/1999.
  5. INTRODUCTION
  6. This document describes the software drivers and their use for the 
  7. COMX line of synchronous serial adapters for Linux version 2.2.0 and
  8. above.
  9. The cards are produced and sold by ITC-Pro Ltd. Budapest, Hungary
  10. For further info contact <info@itc.hu> 
  11. or http://www.itc.hu (mostly in Hungarian).
  12. The firmware files and software are available from ftp://ftp.itc.hu
  13. Currently, the drivers support the following cards and protocols:
  14. COMX (2x64 kbps intelligent board)
  15. CMX (1x256 + 1x128 kbps intelligent board)
  16. HiCOMX (2x2Mbps intelligent board)
  17. LoCOMX (1x512 kbps passive board)
  18. MixCOM (1x512 or 2x512kbps passive board with a hardware watchdog an
  19. optional BRI interface and optional flashROM (1-32M))
  20. At the moment of writing this document, the (Cisco)-HDLC, LAPB, SyncPPP and
  21. Frame Relay (DTE, rfc1294 IP encapsulation with partially implemented Q933a 
  22. LMI) protocols are available as link-level protocol. 
  23. X.25 support is being worked on.
  24. USAGE
  25. Load the comx.o module and the hardware-specific and protocol-specific 
  26. modules you'll need into the running kernel using the insmod utility.
  27. This creates the /proc/comx directory.
  28. See the example scripts in the 'etc' directory.
  29. /proc INTERFACE INTRO
  30. The COMX driver set has a new type of user interface based on the /proc 
  31. filesystem which eliminates the need for external user-land software doing 
  32. IOCTL calls. 
  33. Each network interface or device (i.e. those ones you configure with 'ifconfig'
  34. and 'route' etc.) has a corresponding directory under /proc/comx. You can
  35. dynamically create a new interface by saying 'mkdir /proc/comx/comx0' (or you
  36. can name it whatever you want up to 8 characters long, comx[n] is just a 
  37. convention).
  38. Generally the files contained in these directories are text files, which can
  39. be viewed by 'cat filename' and you can write a string to such a file by
  40. saying 'echo _string_ >filename'. This is very similar to the sysctl interface.
  41. Don't use a text editor to edit these files, always use 'echo' (or 'cat'
  42. where appropriate).
  43. When you've created the comx[n] directory, two files are created automagically
  44. in it: 'boardtype' and 'protocol'. You have to fill in these files correctly
  45. for your board and protocol you intend to use (see the board and protocol 
  46. descriptions in this file below or the example scripts in the 'etc' directory).
  47. After filling in these files, other files will appear in the directory for 
  48. setting the various hardware- and protocol-related informations (for example
  49. irq and io addresses, keepalive values etc.) These files are set to default 
  50. values upon creation, so you don't necessarily have to change all of them.
  51. When you're ready with filling in the files in the comx[n] directory, you can
  52. configure the corresponding network interface with the standard network 
  53. configuration utilities. If you're unable to bring the interfaces up, look up
  54. the various kernel log files on your system, and consult the messages for
  55. a probable reason.
  56. EXAMPLE
  57. To create the interface 'comx0' which is the first channel of a COMX card:
  58. insmod comx 
  59. # insmod comx-hw-comx ; insmod comx-proto-hdlc  (these are usually
  60. autoloaded if you use the kernel module loader)
  61. mkdir /proc/comx/comx0
  62. echo comx >/proc/comx/comx0/boardtype
  63. echo 0x360 >/proc/comx/comx0/io <- jumper-selectable I/O port 
  64. echo 0x0a >/proc/comx/comx0/irq <- jumper-selectable IRQ line
  65. echo 0xd000 >/proc/comx/comx0/memaddr <- software-configurable memory
  66.    address. COMX uses 64 KB, and this
  67.    can be: 0xa000, 0xb000, 0xc000, 
  68.    0xd000, 0xe000. Avoid conflicts
  69.    with other hardware.
  70. cat </etc/siol1.rom >/proc/comx/comx0/firmware <- the firmware for the card
  71. echo HDLC >/proc/comx/comx0/protocol <- the data-link protocol
  72. echo 10 >/proc/comx/comx0/keepalive <- the keepalive for the protocol
  73. ifconfig comx0 1.2.3.4 pointopoint 5.6.7.8 netmask 255.255.255.255 <-
  74.    finally configure it with ifconfig
  75. Check its status:
  76. cat /proc/comx/comx0/status
  77. If you want to use the second channel of this board:
  78. mkdir /proc/comx/comx1
  79. echo comx >/proc/comx/comx1/boardtype
  80. echo 0x360 >/proc/comx/comx1/io
  81. echo 10 >/proc/comx/comx1/irq
  82. echo 0xd000 >/proc/comx/comx1/memaddr
  83. echo 1 >/proc/comx/comx1/channel <- channels are numbered 
  84.    as 0 (default) and 1
  85. Now, check if the driver recognized that you're going to use the other
  86. channel of the same adapter:
  87. cat /proc/comx/comx0/twin
  88. comx1
  89. cat /proc/comx/comx1/twin
  90. comx0
  91. You don't have to load the firmware twice, if you use both channels of
  92. an adapter, just write it into the channel 0's /proc firmware file.
  93. Default values: io 0x360 for COMX, 0x320 (HICOMX), irq 10, memaddr 0xd0000
  94. THE LOCOMX HARDWARE DRIVER
  95. The LoCOMX driver doesn't require firmware, and it doesn't use memory either,
  96. but it uses DMA channels 1 and 3. You can set the clock rate (if enabled by
  97. jumpers on the board) by writing the kbps value into the file named 'clock'.
  98. Set it to 'external' (it is the default) if you have external clock source.
  99. (Note: currently the LoCOMX driver does not support the internal clock)
  100. THE COMX, CMX AND HICOMX DRIVERS
  101. On the HICOMX, COMX and CMX, you have to load the firmware (it is different for
  102. the three cards!). All these adapters can share the same memory
  103. address (we usually use 0xd0000). On the CMX you can set the internal
  104. clock rate (if enabled by jumpers on the small adapter boards) by writing
  105. the kbps value into the 'clock' file. You have to do this before initializing
  106. the card. If you use both HICOMX and CMX/COMX cards, initialize the HICOMX
  107. first. The I/O address of the HICOMX board is not configurable by any
  108. method available to the user: it is hardwired to 0x320, and if you have to 
  109. change it, consult ITC-Pro Ltd.
  110. THE MIXCOM DRIVER
  111. The MixCOM board doesn't require firmware, the driver communicates with
  112. it through I/O ports. You can have three of these cards in one machine.
  113. THE HDLC LINE PROTOCOL DRIVER
  114. There's only one configurable parameter with this protocol: the 'keepalive'
  115. value. You can set this in seconds or set to 'off'. Agree with the administrator
  116. of your peer router on this setting. The default is 10 (seconds).
  117. EXAMPLE
  118. (setting up hw parameters, see above)
  119. echo hdlc >/proc/comx/comx0/protocol
  120. echo 10 >/proc/comx/comx0/keepalive <- not necessary, 10 is the default
  121. ifconfig comx0 1.2.3.4 pointopoint 5.6.7.8 netmask 255.255.255.255
  122. THE PPP LINE PROTOCOL DRIVER
  123. To use this driver, you have to have ppp-2.3.4, and have a modified version of
  124. pppd (this pppd will work as async pppd to, the modifiactions merely relax 
  125. some restricions in order to be able to use non-async lines too.
  126. If configured, this driver can use Van Jacobson TCP header compression (you'll
  127. need the slhc.o module for this).
  128. Additionally to use this protocol, enable async ppp in your kernel config, and
  129. create the comx device special files in /dev. They're character special files
  130. with major 88, and their names must be the same as their network interface
  131. counterparts (i.e /dev/comx0 with minor 0 corresponds interface comx0 and so
  132. on).
  133. EXAMPLE
  134. (setting up hw parameters, see above)
  135. echo ppp >/proc/comx/comx0/protocol
  136. ifconfig comx0 up
  137. pppd comx0 1.2.3.4:5.6.7.8 persist <- with this option pppd won't exit
  138.    when the line goes down
  139. THE LAPB LINE PROTOCOL DRIVER
  140. For this, you'll need to configure LAPB support (See 'LAPB Data Link Driver' in
  141. 'Network options' section) into your kernel (thanks to Jonathan Naylor for his 
  142. excellent implementation). 
  143. comxlapb.o provides the following files in the appropriate directory
  144. (the default values in parens): t1 (5), t2 (1), n2 (20), mode (DTE, STD) and
  145. window (7). Agree with the administrator of your peer router on these
  146. settings (most people use defaults, but you have to know if you are DTE or
  147. DCE).
  148. EXAMPLE
  149. (setting up hw parameters, see above)
  150. echo lapb >/proc/comx/comx0/protocol
  151. echo dce >/proc/comx/comx0/mode <- DCE interface in this example
  152. ifconfig comx0 1.2.3.4 pointopoint 5.6.7.8 netmask 255.255.255.255
  153. THE FRAME RELAY PROTOCOL DRIVER
  154. You DON'T need any other frame relay related modules from the kernel to use
  155. COMX-Frame Relay. This protocol is a bit more complicated than the others, 
  156. because it allows to use 'subinterfaces' or DLCIs within one physical device.
  157. First you have to create the 'master' device (the actual physical interface)
  158. as you would do for other protocols. Specify 'frad' as protocol type.
  159. Now you can bring this interface up by saying 'ifconfig comx0 up' (or whatever
  160. you've named the interface). Do not assign any IP address to this interface
  161. and do not set any routes through it.
  162. Then, set up your DLCIs the following way: create a comx interface for each
  163. DLCI you intend to use (with mkdir), and write 'dlci' to the 'boardtype' file, 
  164. and 'ietf-ip' to the 'protocol' file. Currently, the only supported 
  165. encapsulation type is this (also called as RFC1294/1490 IP encapsulation).
  166. Write the DLCI number to the 'dlci' file, and write the name of the physical
  167. COMX device to the file called 'master'. 
  168. Now you can assign an IP address to this interface and set routes using it.
  169. See the example file for further info and example config script.
  170. Notes: this driver implements a DTE interface with partially implemented
  171. Q933a LMI.
  172. You can find an extensively commented example in the 'etc' directory.
  173. FURTHER /proc FILES
  174. boardtype:
  175. Type of the hardware. Valid values are:
  176.  'comx', 'hicomx', 'locomx', 'cmx'.
  177. protocol:
  178. Data-link protocol on this channel. Can be: HDLC, LAPB, PPP, FRAD
  179. status:
  180. You can read the channel's actual status from the 'status' file, for example
  181. 'cat /proc/comx/comx3/status'.
  182. lineup_delay:
  183. Interpreted in seconds (default is 1). Used to avoid line jitter: the system
  184. will consider the line status 'UP' only if it is up for at least this number
  185. of seconds.
  186. debug: 
  187. You can set various debug options through this file. Valid options are:
  188. 'comx_events', 'comx_tx', 'comx_rx', 'hw_events', 'hw_tx', 'hw_rx'.
  189. You can enable a debug options by writing its name prepended by a '+' into
  190. the debug file, for example 'echo +comx_rx >comx0/debug'. 
  191. Disabling an option happens similarly, use the '-' prefix 
  192. (e.g. 'echo -hw_rx >debug').
  193. Debug results can be read from the debug file, for example: 
  194. tail -f /proc/comx/comx2/debug