HAYES ESP ɥ饤 С 2.1

Hayes ä Alan Adamson 礤˴դޤΥݡȤ
ǡɥ饤Ф򶯲뤳ȤǤޤ

Υɥ饤Фθ줿Ȥ򡢻 (arobinso@nyx.net) 𤷤Ƥ
ŪʥեɥХåŪʥեɥХåȤ
ޤ

*** 2.1 Ǥνפѹ ***

PIO ⡼ɤΥݡȡ5 ĤξΤ줫˳硢PIO ⡼ɤ
Ѥޤ

  1) ޥݡȥɤФ줿Ȥ PIO ⡼ɤѤޤ
     (8 ݡȥɤ DMA 򥵥ݡȤޤ)

  2) DMA ͥ뤬̵ (1 ޤ 3 ʳΤ) ˥åȤ줿Ȥ

  3) DMA ХåեͥƤʤäȤݡȤϡ
     ץ󤵤ޤǡPIO ⡼ɤޤ

  4) ꤵ줿Τ⾯ʤХȿ FIFO žޤ FIFO 
     žɬפȤPIO ⡼ɤϡžΤ߻Ѥޤ

  5) ݡȤ DMA ž򤹤ɬפꡢ¾ΥݡȤǴ DMA
     ͥѤƤȤPIO ⡼ɤϡžΤ߻Ѥ
     ޤ

DMA ѤȡHayes ESP ¾Υ (ä˥ɥ) ȶ
褦ʤΤǡǥեȤǤ DMA ϥդˤƤޤDMA Ѥ
ˤϡȤ "dma=" ץ󤫡ޤ setserial ǡ
Ū˥ˤɬפޤޥݡȥɤϡsetserial 
ȤäƶŪ DMA ⡼ɤˤ뤳ȤǤޤۤȤɤΥޥ
ݡȥɤ DMA 򥵥ݡȤޤ

ǿС setserial ǤϡESP ɤγĥ򻲾Ȥѹ
ꤹ뤳ȤǤޤ
***

ΥѥåˤϡHayes ESP ɤ򥵥ݡȤ⥸塼򥳥ѥ
Τɬפʥե뷲ޤޤƤޤɥ饤зϡŪ˥ꥢ
ɥ饤Ф˼äΤǤ

ǽ:

  - ESP ɤγĥ⡼ɤѤߴ⡼ɤ⹭ϰϤγߤ
    ǽ󶡤ޤ

  - ESP  FIFO ؤΥǡžޤ FIFO Υǡž򤪤ʤ
    ΤˡDMA  16 ӥå PIO ⡼ɤѤCPU ٤ڸޤ

  - ץ饤ޥݡȤȥݡȤ򥵥ݡȤޤ


ɥ饤Ф⥸塼Ȥƥѥ뤵줿硢irq= ץȤä
Ѥ IRQ ꤹ뤳ȤǤޤ񼰤ϼΤȤǤ

  irq=[0x100],[0x140],[0x180],[0x200],[0x240],[0x280],[0x300],[0x380]

֥饱åΥɥ쥹ϡɤΥ١ɥ쥹Ǥ¸ߤʤ
 IRQ  0 ˥åȤǤޤ¸ߤ륫ɤ IRQ  0 ˥åȤ줿
硢ɥ饤Ф IRQ ¬褦Ȥޤ㤨Сɥ쥹 0x300
ˤ륫ɤ IRQ  12 ˥åȤ硢insmod ޥɤϼΤ褦
ʤޤ

  insmod esp irq=0,0,0,0,0,0,12,0

divisor= ץǡȼν򥻥åȤ뤳ȤǤޤ񼰤
irq= ץƱǤƽͤ 16 ʿ¤Τǡ
бݡȤФƻѤɽƤޤͤ
麸ؤȹޤʳνͤꤹȡưŪ
spd_cust ե饰åȤޤܡ졼Ѥ˻Ȥ׻
ˤϡݡȤΥܡ졼 (Ūˤ 921600) ˾졼Ȥ
äƤ㤨С0x300 ˤץ饤ޥݡȤν 4 ˡ
0x308 ˤ륻ݡȤν 8 ˥åȤ硢insmod 
ɤϼΤ褦ˤʤޤ

  insmod esp divisor=0,0,0,0,0,0,0x84,0

dma= ץ DMA ͥ򥻥åȤ뤳ȤǤޤͥ
1 ޤ 3 Τɤ餫Ǥ¾ͤꤹȡɥ饤Ф϶Ū PIO
⡼ɤѤ褦ˤʤޤ㤨СDMA ͥ 3 ˥åȤ
硢insmod ޥɤϼΤ褦ˤʤޤ

  insmod esp dma=3

rx_trigger= ץ tx_trigger= ץǡFIFO Υȥꥬ٥
򥻥åȤ뤳ȤǤޤϡESP ɤĳߤ
٤ꤹΤǤͤ礭ȡߤβϸޤ
ޤ˹⤤ͤ򥻥åȤȡǡꤨޤ㤨С
ȥꥬ٥ 512 ХȤˡȥꥬ٥ 700 ХȤ˥å
硢insmod ޥɤϼΤ褦ˤʤޤ

  insmod esp rx_trigger=512 tx_trigger=700

flow_off= ץ flow_on= ץǡϡɥե
ե٥ȥ٥򥻥åȤǤޤե٥ϥե
٥㤯ʤФʤޤ󡣤ޤեե٥ϡrx_trigger
⤯Ƥͭͤ 1  1023 ޤǤǡեե٥
 1016, ե٥ 944 ǥեͤȤʤäƤޤ㤨С
եե٥ 1000 ХȤˡե٥ 935 ХȤ˥å
硢insmod ޥɤϼΤ褦ˤʤޤ

  insmod esp flow_off=1000 flow_on=935

rx_timeout= ץǼॢͤ򥻥åȤǤޤͤϡ
ǸΥ饯ƤߤޤǤ ESP ɤɤ
餤ԤĤ٤򼨤ΤǤͭͤ 0  255 ޤǤǡ128 
ǥեͤȤʤäƤޤ⤹ͤϥ쥤ƥ󥷡礵㤹
ͤϡɬפʳߤޤ㤨СॢȤ
255 ˥åȤ硢insmod ޥɤϼΤ褦ˤʤޤ

  insmod esp rx_timeout=255

pio_threshold= ץǡDMA ⡼ɤΤ PIO ⡼ɤѤ
 (饯ñ) 򥻥åȤǤޤ㤨Сͤ 32 
硢32 ХȰʲžǤϡ PIO ⡼ɤȤޤ

  insmod esp pio_threshold=32

ƥץ򥹥ڡǶڤ뤳ȤˤꡢʣΥץ insmod 
ޥɥ饤ϤȤǤޤ㤨мΤ褦ˤޤ

  insmod esp dma=3 trigger=512

ɬפʤȤ esp ⥸塼ưŪ˥ɤ뤳ȤǤޤ
򤪤ʤˤϡιԤ /etc/modprobe.conf ɲäƤ (Ǹ
Ԥ򤢤ʤѥץ֤Ƥ)

  alias char-major-57 esp
  alias char-major-58 esp
  options esp irq=0,0,0,0,0,0,3,0 divisor=0,0,0,0,0,0,0x4,0

ޤ餯 'depmod -a' ¹ԤɬפǤ礦

ǥХϼưǺɬפޤǥХ뤿ˤϡ
⥸塼ɤȤνϤ񤭤ȤäƤͥ
̾񤭹ޤ (̤ /var/adm/messages) ˡɥ
ФνϤʤޤϤƤ 'tty' ѤΥǥХ
ĺƤĤϥ᥸㡼ֹ 57 ǡ⤦ϥ᥸㡼
ֹ 58 ǤޥʡֹϡϤƤ tty ֹƱˤ
ޥɤϼΤ褦ˤʤޤ (?  tty ֹ֤
)

  mknod /dev/ttyP? c 57 ?
  mknod /dev/cup? c 58 ?

㤨СιԤäȤ硢

  Oct 24 18:17:23 techno kernel: ttyP8 at 0x0140 (irq = 3) is an ESP primary port

ĤΥǥХϼΤ褦˺ޤ

  mknod /dev/ttyP8 c 57 8
  mknod /dev/cup8 c 58 8

ǥХФƥѡߥåꤹɬפ뤫⤷ޤ

  chmod 666 /dev/ttyP*
  chmod 666 /dev/cup*

ESP ⥸塼ȥꥢ⥸塼뤬礷ƤƤϤޤ (
Ʊ˻ѤǤޤ)ESP ⥸塼뤬ɤ줿ȤϡESP ɾ
ݡȤˤϡꥢɥ饤Фϥ뤳ȤǤʤʤޤ

ݡȤ˥Ȥ I/O 顼ȯϡIRQ  DMA 
礷ƤʤåƤ ('cat /proc/interrupts'  'cat
/proc/dma' ǡ߻ IRQ  DMA ΥꥹȤޤ)

Enjoy!
Andrew J. Robinson <arobinso@nyx.net>

------------------------------------------------------------
Ρ JF ץ < http://www.linux.or.jp/JF/ >
   2004/07/29
ԡ    ɧ <takahiko(a)hakubi.co.jp>
ԡ   Seiji Kaneko <skaneko(a)a2.mbn.or.jp>
