digiboard.txt
上传用户:jlfgdled
上传日期:2013-04-10
资源大小:33168k
文件大小:9k
源码类别:

Linux/Unix编程

开发平台:

Unix_Linux

  1. The Linux Digiboard Driver
  2. --------------------------
  3. The Digiboard Driver for Linux supports the following boards:
  4.  DigiBoard PC/Xi, PC/Xe, PC/Xeve(which is the newer, smaller Xe with
  5.  a 8K window which is also known as PC/Xe(8K) and has no memory/irq
  6.  switches) You can use up to 4 cards with this driver and it should work
  7.  on other architectures than intel also.
  8. A version of this driver has been taken by Digiboard to make a driver
  9. software package which supports also PC/Xem cards and newer PCI cards
  10. but it doesn't support the old PC/Xi cards and it isn't yet ported to
  11. linux-2.1.x and may not be usable on other architectures than intel now.
  12. It is available from ftp.digi.com/ftp.digiboard.com. You can write me if
  13. you need an patch for this driver.
  14. Bernhard Kaindl (bkaindl@netway.at)  6. April 1997.
  15. Configuring the Driver
  16. ----------------------
  17. The driver can be built direct into the kernel or as a module.
  18. The pcxx driver can be configured using the command line feature while
  19. loading the kernel with LILO or LOADLIN or, if built as a module,
  20. with arguments to insmod and modprobe or with parameters in
  21. /etc/modules.conf for modprobe and kerneld.
  22. After configuring the driver you need to create the device special files
  23. as described in "Device file creation:" below and set the appropriate
  24. permissions for your application.
  25. As Module
  26. ---------
  27. modprobe pcxx io=<io> 
  28.   membase=<membase> 
  29.   memsize=<memsize> 
  30.   numports=<numports>  
  31.   altpin=<altpin> 
  32.   verbose=<verbose>
  33. or, if several cards are installed
  34. modprobe pcxx io=<io-1>,<io-2>,... 
  35.   membase=<membase-1>,<membase-2>,... 
  36.   memsize=<memsize-1>,<memsize-2>,... 
  37.   numports=<numports-1>,<numports-2>,... 
  38.   altpin=<altpin-1>,<altpin-2>,... 
  39.   verbose=<verbose>
  40. where <io-N> is the io address of the Nth card and <membase-N> is the
  41. memory base address of the Nth card, etc.
  42. The parameters can be specified in any order. For example, the numports
  43. parameter can precede the membase parameter, or vice versa. If several
  44. cards are installed the ordering within the comma separated parameter
  45. lists must be consistent, of course.
  46. io       - I/O port address of that card.
  47. membase  - Memory start address of that card.
  48. memsize  - Memory size of that card, in kilobytes. If given, this value
  49.            is compared against the card to verify configuration and
  50.            hinder the driver from using a misconfigured card. If the parameter
  51.            does not match the board it is disabled with a memory size error.
  52. numports - Number of ports on this card. This is the number of devices to
  53.            assign to this card or reserve if disabled.
  54. altpin   - 1: swap DCD and DSR for 8-pin RJ-45 with modems.
  55.    0: don't swap DCD and DSR.
  56.            other values count as 1.
  57. verbose  - 1: give nice verbose output during initialisation of the driver,
  58.               possibly helpful during board configuration.
  59.            0: normal terse output.
  60. Only the parameters which differ from the defaults need to be specified.
  61. If the io= parameter is not given, the default config is used. This is
  62.   io=0x200 membase=0xD0000 numports=16 altpin=0
  63. Only applicable parameters need be specified. For example to configure
  64. 2 boards, first one at 0x200 with 8 ports, rest defaults, second one at
  65. 0x120, memory at 0xD80000, altpin enabled, rest defaults, you can do this
  66. by using these parameters:
  67.   modprobe pcxx io=0x200,0x120 numports=8,8 membase=,0xD80000 altpin=,1
  68. To disable a temporary unusable board without changing the mapping of the
  69. devices following that board, you can empty the io-value for that board:
  70.   modprobe pcxx io=,0x120 numports=8,8 membase=,0xD80000 altpin=,1
  71. The remaining board still uses ttyD8-ttyD15 and cud8-cud15.
  72. Example line for /etc/modules.conf for use with kerneld and as default
  73. parameters for modprobe:
  74. options pcxx           io=0x200 numports=8
  75. For kerneld to work you will likely need to add these two lines to your
  76. /etc/modules.conf:
  77. alias char-major-22    pcxx
  78. alias char-major-23    pcxx
  79. Boot-time configuration when linked into the kernel
  80. ---------------------------------------------------
  81. Per board to be configured, pass a digi= command-line parameter to the
  82. kernel using lilo or loadlin. It consists of a string of comma separated
  83. identifiers or integers.  The 6 values in order are:
  84. Card status:      Enable      - use that board
  85.   Disable     - don't actually use that board.
  86. Card type:        PC/Xi       - the old ones with 64/128/256/512K RAM.
  87.   PC/Xe       - PC/Xe(old ones with 64k mem range).
  88.   PC/Xeve     - PC/Xe(new ones with 8k mem range).
  89. Note: This is for documentation only, the type is detected from the board.
  90. Altpin setting:   Enable      - swap DCD and DSR for 8-pin RJ-45 with modems.
  91.   Disable     - don't swap DCD and DSR.
  92. Number of ports:  1 ... 16    - Number of ports on this card. This is the
  93. number of devices to assign to this card.
  94. I/O port address: eg. 200     - I/O Port address where the card is configured.
  95. Memory base addr: eg. 80000   - Memory address where the board's memory starts.
  96. This is an example for a line which you can insert into you lilo.conf:
  97.    append="digi=Enable,PC/Xi,Disable,4,120,D0000"
  98. there is an alternate form, in which you must use decimal values only:
  99.    append="digi=1,0,0,16,512,851968"
  100. If you don't give a digi= command line, the compiled-in defaults of
  101. board 1: io=0x200, membase=0xd0000, altpin=off and numports=16 are used.
  102. If you have the resources (io&mem) free for use, configure your board to
  103. these settings and you should be set up fine even if yours has not got 16 
  104. ports.
  105. Sources of Information
  106. ----------------------
  107. Please contact digi directly digilnux@dgii.com. Forward any information of
  108. general interest to me so that I can include it on the webpage.
  109. Web page: http://lameter.com/digi
  110. Christoph Lameter (christoph@lameter.com) Aug 14, 2000.
  111. Device file creation
  112. --------------------
  113. Currently the Linux MAKEDEV command does not support generating the Digiboard
  114. Devices. 
  115. The /dev/cud devices behave like the /dev/cua devices
  116. and the ttyD devices are like the /dev/ttyS devices.
  117. Use the following script to generate the devices:
  118. ------------------ mkdigidev begin
  119. #!/bin/sh
  120. #
  121. # Script to create Digiboard Devices
  122. # Christoph Lameter, April 16, 1996
  123. #
  124. # Usage:
  125. # mkdigidev [<number of devices>]
  126. DIGI_MAJOR=23
  127. DIGICU_MAJOR=22
  128. BOARDS=$1
  129. if [ "$BOARDS" = "" ]; then
  130. BOARDS=1
  131. fi
  132. boardnum=0
  133. while [ $boardnum -lt $BOARDS ];
  134. do
  135.   for c in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15;
  136.   do
  137. name=`expr $boardnum * 16 + $c`
  138. mknod /dev/cud$name c $DIGICU_MAJOR $name
  139. mknod /dev/ttyD$name c $DIGI_MAJOR $name
  140.   done
  141.   boardnum=`expr $boardnum + 1`
  142. done
  143. ------------------ mkdigidev end
  144. or apply the following patch to /dev/MAKEDEV and do a 
  145. sh /dev/MAKEDEV digi
  146. ----- MAKEDEV Patch
  147. --- /dev/MAKEDEV Sun Aug 13 15:48:23 1995
  148. +++ MAKEDEV Tue Apr 16 17:53:27 1996
  149. @@ -120,7 +120,7 @@
  150.   while [ $# -ne 0 ]
  151.   do
  152.   case "$1" in
  153. - mem|tty|ttyp|cua|cub) ;;
  154. + mem|tty|ttyp|cua|cub|cud) ;;
  155.   hd) echo hda hdb hdc hdd ;;
  156.   xd) echo xda xdb ;;
  157.   fd) echo fd0 fd1 ;;
  158. @@ -140,6 +140,7 @@
  159.   dcf) echo dcf ;;
  160.   pcmcia) ;; # taken care of by its own driver
  161.   ttyC) echo cyclades ;;
  162. + ttyD) echo digi ;;
  163.   *) echo "$0: don't know what "$1" is" >&2 ;;
  164.   esac
  165.   shift
  166. @@ -208,6 +209,15 @@
  167.   do
  168.   makedev ttyC$i c $major1 `expr 32 + $i` $tty
  169.   makedev cub$i c $major2 `expr 32 + $i` $dialout
  170. + done
  171. + ;;
  172. + digi)
  173. + major1=`Major ttyD` || continue
  174. + major2=`Major cud` || continue
  175. + for i in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
  176. + do
  177. + makedev ttyD$i c $major1 `expr 32 + $i` $tty
  178. + makedev cud$i c $major2 `expr 32 + $i` $dialout
  179.   done
  180.   ;;
  181.   par[0-2])
  182. ----- End Makedev patch
  183. -----------------------------------------------------------------------------
  184. Changes v1.5.5:
  185. The ability to use the kernel's command line to pass in the configuration for 
  186. boards.  Using LILO's APPEND command, a string of comma separated identifiers 
  187. or integers can be used.  The 6 values in order are:
  188.    Enable/Disable this card,
  189.    Type of card: PC/Xi(0), PC/Xe(1), PC/Xeve(2), PC/Xem(3)
  190.    Enable/Disable alternate pin arrangement,
  191.    Number of ports on this card,
  192.    I/O Port where card is configured (in HEX if using string identifiers),
  193.    Base of memory window (in HEX if using string identifiers), 
  194. Samples:
  195.    append="digi=E,PC/Xi,D,16,200,D0000"
  196.    append="digi=1,0,0,16,512,(whatever D0000 is in base 10 :)
  197. Drivers' minor device numbers are conserved. This means that instead of
  198. each board getting a block of 16 minors pre-assigned, it gets however
  199. many it should, with the next card following directly behind it.  A
  200. system with 4 2-port PC/Xi boards will use minor numbers 0-7.
  201. This conserves some memory, and removes a few hard coded constants.
  202. NOTE!! NOTE!! NOTE!!
  203. The definition of PC/Xem as a valid board type is the BEGINNING of support
  204. for this device.  The driver does not currently recognise the board, nor
  205. does it want to initialize it.  At least not the EISA version.
  206. Mike McLagan <mike.mclagan@linux.org> 5, April 1996.