185 lines
5.8 KiB
Plaintext
185 lines
5.8 KiB
Plaintext
<sect1 id="IOWarrior-howto">
|
|
<title>The IOWarrior Driver</title>
|
|
|
|
<sect2 id="IOWarrior-general">
|
|
<title>General</title>
|
|
|
|
<para>
|
|
IOWarrior is the name of a series of multi-purpose USB controller chips
|
|
produced and sold by <ulink url="http://www.codemercs.com/">Code Mercenaries</ulink>.
|
|
This series currently consists of three main types, that - among other features -
|
|
support controlling LCD displays:
|
|
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term>IOWarrior24</term>
|
|
<listitem>
|
|
<itemizedlist>
|
|
<listitem>USB 1.1 Low Speed</listitem>
|
|
<listitem>16 generic I/O Pins, typ. 125Hz read rate</listitem>
|
|
<listitem>I<superscript>2</superscript>C master function, 100kHz, throughput typ. 750 bytes/sec</listitem>
|
|
<listitem>SPI master interface, up to 2MHz, throughput typ. 750 bytes/sec</listitem>
|
|
<listitem>control an HD44780 compatible LCD</listitem>
|
|
<listitem>drive a matrix of up to 8x32 LEDs</listitem>
|
|
<listitem>decode RC5 compatible infrared remote controls</listitem>
|
|
</itemizedlist>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>IOWarrior40</term>
|
|
<listitem>
|
|
<itemizedlist>
|
|
<listitem>USB 1.1 Low Speed</listitem>
|
|
<listitem>32 generic I/O Pins, typ. 125Hz read rate</listitem>
|
|
<listitem>I<superscript>2</superscript>C master function, 100kHz, throughput typ. 750 bytes/sec</listitem>
|
|
<listitem>control an HD44780 compatible LCD</listitem>
|
|
<listitem>drive a matrix of up to 8x32 LEDs</listitem>
|
|
<listitem>drive a 8x8 switch or button matrix</listitem>
|
|
</itemizedlist>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>IOWarrior56</term>
|
|
<listitem>
|
|
<itemizedlist>
|
|
<listitem>USB 1.1 Full Speed</listitem>
|
|
<listitem>50 generic I/O Pins, typ. 1000Hz read rate</listitem>
|
|
<listitem>I<superscript>2</superscript>C master function, 50, 100, or 400kHz</listitem>
|
|
<listitem>SPI master interface, up to 12MHz, throughput up to 62Kbytes/sec</listitem>
|
|
<listitem>control various display modules, including most graphic modules</listitem>
|
|
<listitem>drive a matrix of up to 8x64 LEDs</listitem>
|
|
<listitem>drive a 8x8 switch or button matrix</listitem>
|
|
</itemizedlist>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</para>
|
|
|
|
<para>
|
|
The <code>IOWarrior</code> driver currently only supports writing
|
|
to a single-controller HD44780-type display.
|
|
LED output using the <command>output()</command> function is also implemented,
|
|
although not tested very well.
|
|
The hardware's support for input using keys or IR and dual-controller displays
|
|
is not implemented yet.
|
|
Please note that the latter requires extra circuitry with IOWarrior24 and IOWarrior40.
|
|
</para>
|
|
|
|
<para>
|
|
The driver was developed and tested with IOWarrior24 and the IOWarrior40.
|
|
Although there are good chances for it to work with an IOWarrior56,
|
|
the current state regarding support of this chip is unknown due to the
|
|
lack of the required hardware.
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
|
|
<sect2 id="IOWarrior-requirements">
|
|
<title>Requirements</title>
|
|
|
|
<para>
|
|
The driver is based on the <ulink url="http://libusb.sourceforge.net/"><filename>libusb</filename></ulink>
|
|
USB library, which should make it work with Linux, the different BSB variants
|
|
as well as Darwin/MacOS X.
|
|
|
|
<note>
|
|
<para>
|
|
When using a <filename>libusb</filename> based driver like <code>IOWarrior</code>,
|
|
<application>LCDd</application> needs to be started as root.
|
|
</para>
|
|
</note>
|
|
|
|
<note>
|
|
<para>
|
|
Newer Linux kernels (2.6.20 and higher) provide a kernel module
|
|
<filename>iowarrior.ko</filename> that allows controlling IOWarrior
|
|
chips using device files.
|
|
<application>LCDd</application> tries to unload this kernel module
|
|
for <filename>libusb</filename> to be able to control IOWarrior devices.
|
|
If this fails, this may hinder <application>LCDd</application>
|
|
from starting using the <code>IOWarrior</code> driver.
|
|
In this case, simply unload the kernel module by hand.
|
|
</para>
|
|
</note>
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
|
|
<!-- ## Code Mercenaries IO-Warrior driver ## -->
|
|
<sect2 id="IOWarrior-config">
|
|
<title>Configuration in LCDd.conf</title>
|
|
|
|
<sect3 id="IOWarrior-config-section">
|
|
<title>[IOWarrior]</title>
|
|
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term>
|
|
<command>Size</command> =
|
|
<arg choice="plain">
|
|
<replaceable>WIDTH</replaceable>
|
|
<literal>x</literal>
|
|
<replaceable>HEIGHT</replaceable>
|
|
</arg>
|
|
</term>
|
|
<listitem><para>
|
|
Set the display dimensions. If not given, it defaults to <literal>20x4</literal>.
|
|
</para></listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<command>SerialNumber</command> =
|
|
<arg choice="plain"><replaceable>SERIALNO</replaceable></arg>
|
|
</term>
|
|
<listitem><para>
|
|
Use the IOWarrior module with the serial number <replaceable>SERIALNO</replaceable>.
|
|
If this parameter is missing, the default is to use the first IOWarrior module found.
|
|
</para></listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<command>ExtendedMode</command> =
|
|
<arg choice="plain">
|
|
<group choice="req">
|
|
<arg choice="plain"><literal>yes</literal></arg>
|
|
<arg choice="plain"><literal><emphasis>no</emphasis></literal></arg>
|
|
</group>
|
|
</arg>
|
|
</term>
|
|
<listitem><para>
|
|
If you have a KS0073 or an other 'almost HD44780-compatible' display
|
|
connected to the IOWarrior, set this flag to get into extended,
|
|
4-line linear addressing mode
|
|
</para></listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<command>Lastline</command> =
|
|
<arg choice="plain">
|
|
<group choice="req">
|
|
<arg choice="plain"><literal><emphasis>yes</emphasis></literal></arg>
|
|
<arg choice="plain"><literal>no</literal></arg>
|
|
</group>
|
|
</arg>
|
|
</term>
|
|
<listitem><para>
|
|
Specifies if the last line is pixel addressable or it controls an
|
|
underline effect.
|
|
The default <literal>yes</literal> means, it is pixel addressable.
|
|
</para></listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
|
|
</sect3>
|
|
|
|
</sect2>
|
|
|
|
</sect1>
|