IOTester® development tool
Connect your embedded I/O hardware to the PC and control it directly from a PC program The Ideal Tool for:
- Experiments and fast prototyping.
1) Connect the target hardware to the PC via the IOTester box.
2) Open a simple console application project in the PC IDE.
3) Make a IOTester initialization call, and you are ready to make read and write operations directly on your embedded hardware.
- Education and training
Focus directly om standard C and the characteristics of I/O hardware.
No Windows programming skills are needed to get startet.
No Embedded Processor knowledge are required to use IOTester.
- Accelerating application development and test
An "embedded" GUI application can run on the PC while using the real target display and keyboard hardware.
Take advantage of powerfull and low-cost PC development tools, and an unconstrained development evironment, to accelerate development and test of application and I/O driver C source modules.
- Presentation and sales demos
Combine fast prototyping with "touch and feel" experience for your customers.
Easy to install and run a demo using IOTester. Only a few files are needed.
The ideal solution for sales presentations of I/O hardware devices like display modules and touch screens.
- Production test
Fast and flexible interface to production test equipment.
Up to 4 IOTesters can be used silmultaneously by the one test application running on the PC. A total of
180 pins programmable for use as parallel buses, I2C or SPI buses, individual input or output pins etc.
|
 |
 |
|
|
IOTester® concept
|
|
Virtual "embedded" system
|
IOTester "connects" I/O hardware to the PC system in such a way
that I/O registers can be accessed and controlled directly from a program application
running on the PC. From a programmer's point of view, this is done just as
easily as if the target I/O register was a part of the PC.
|

I/O registers are located internally in IOTester (like on a single chip processor), and in I/O chips on target hardware connected to the external "processor bus" (if external bus mode is enabled).
|

|
|
|
Easy to use
|
VERY simple and easy-to-use software interface.
The IOTester software interface essentially consists of a few initialization functions, plus a few access functions for the most basic
operations on I/O registers: READ, WRITE, AND, OR, XOR on either individual I/O registers or register arrays.
PC program example written in C:
#include <iotester.h>
int main(void)
{
int dat;
if (iot_init(0)) // Connect IOTester address space
return -1; // Error IOTester not connected
// Configure IOTester pins (External 8 bit data bus, 8080 type bus, 8 address lines)
iowr( IOT_PIN_MODE_REG, DBUS8 | DBUS8080 | ADRBUSSIZE(8));
// Configuration done
// Using IOTester to make I/O access operations in your target hardware
iowr(0x13,0x23); // Write to parallel bus address 0x13
dat = iord(0x46); // Read from parallel bus address 0x46
// etc.
return 0;
}
(With Microsoft Visual C/C++ just use a Windows Console project to start execution from main() like in embedded systems.)
|
|
IOTester® target connector interface
|
|
Parallel bus.
|
Flexible parallel bus interface. Easy connection to I/O chips with a parallel bus processor interface.
Programmable selection of bus clock type and data bus width.
Programmable address bus width, from 1 to 24 bits. Examples:
|
|
I/O pins
|
|
45 I/O pins are available on the IOTester target connectors.
Each pin can be individually configured and controlled via internal I/O registers.
Programmable as input or output. With or without internal pull-up. A total of 6 different pin drive modes can be achieved.
Input port mode is default after powerup reset. (Emulates a single chip processor).
Typical driver applications are: key board scan matrix, LED driver, relay driver, opto-coubler interface, etc
|
Configurable I/O pin types
 |
|
|
Serial SPI bus
|
 |
One or more SPI bus slave devices can be connected to the external SPI bus.
The SPI bus master device is accessed and controlled via internal I/O registers.
Flexible data unit sizes: 8,16,24,32-bit, or variable length 1-32 bits.
Write-only mode, Read-only mode or Write-Read mode.
Programmable clock polarity modes. Programmable or automatic SPI bus Chip-Select.
|
|
|
Serial I2C bus
|
 |
One or more I2C bus slave devices can be connected to the external I2C bus.
The I2C bus master device is accessed and controlled via internal I/O registers.
Fast / Slow speed modes. Automatic generation of I2C start and stop signal sequences.
Support for clock stretching request from I2C slave devices.
|
|
|
Pin reroute
|
For optimum pin utilization, SPI bus pins, I2C bus pins, and the WAIT pin can be rerouted to any
IOTester pin not used by the external bus or other internal devices. Those pins not used can also be disabled entirely and made free for use as I/O pins.
|
|
Emulation of internal I/O device functionality in target.
IOTester contains internal I/O devices for emulation of build-in I/O device features in processors which have the most direct
influence on the user interface and control flow of the high-level application.
For instance: Timing, Delays, Interrupt from user interface devices, GUI interfaces.
Facilitates application software development and testing before the real target hardware is ready. Ideal for early prototyping and demos.
|
|
Timer
|
|
Programmable 16-bit down counter. Decrements every 10 ms. Programmable start value.
Operates in either "single-count mode", or in "repeated-count mode" with automatic counter reload.
Can be configured to generate interrupt on terminal count to a "Timer interrupt function" in the PC application. Emulates a typical system clock in an embedded system.
|  |
|
|
Timestamp counter
|
32-bit free-running timestamp counter. Incrementing every 1 ms.
Can be used for application-controlled timing measurements. Can be used as timestamp mark for profiling.
Can be used as a polled timer for the simple generation of accurate delays in the "embedded" PC application.
|
|
Interrupt pin
|
|
Interrupt input pin. Edge triggered. Secure detection and latch of short interrupt pulses.
To be connected to interrupt lines from external I/O devices. For instance from an external touch screen controller device.
|  |
|
|
Interrupt controller
|
The interrupt controller routes interrupts from I/O peripherals to the PC for service by "interrupt functions"
in the "embedded" PC application. For instance from: Timer, Interrupt pin, Touch controller.
Provides a common enable / disable of interrupt event generation from devices. During IDE single step through the PC application
hardware interrupt events are automatically latched for later processing.
|
|
Interrupt pin event counter
|
Counts number of events on the interrupt pin. Enables the pin to be used as a hardware event counter for measurements.
Can be used for detection of lost interrupts if a matching software count value is maintained in the PC interrupt function.
|
|
RGB display controller
|
|
Build-in display controller with 18 or 24 bit RGB bus. Emulates the TFT / OLED display controller device build into many embedded processors.
Flexible RGB bus pinout: RGB18 {6:6:6} (J2) or RGB24 {8:8:8} (J2+J1)
Programmable display image size up to 1024 x 1024 pixels, 24 or 32 bit pr pixel.
Programmable clocks: Pixel clock, Hsync, Vsync, Data Enable.
Programmable PWM signal for back-light control (0-100% duty-cycle)
Build-in 16 Mbytes video buffer for image storage.
The content of the internal video buffer RAM is operated as one linear I/O register array.
Fast update directly from the GUI application running on the PC.
Built-in fill and copy accelerator. Fast swap between image buffers. Flicker-free update.
|
|  |
The display controller and video buffer devices are only available in the IOTester-USB-Disp version.
|
|
Touch screen inputs
|
|
Build-in touch screen controller for a 4-wire resistive touch screen.
Detects relative X,Y positions for touch position on screen.
Detects touch-down, touch-drag, touch-up events. Each event type can be configured to generate interrupt to a "touch screen interrupt function" in the PC application.
The touch screen controller device is only available in the IOTester-USB-Disp version.
|
|  |
|
|
Comparing IOTester® tool versions
|
| |
Features | IOTester-USB-Disp. |
IOTester-USB |
(IOTester-LPT) IOTester-LPT link |
| Number of I/O pins | 45 pins | 45 pins | 30 pins |
| External data bus types | 8 bit byte aligned 16 bit word aligned 16 bit byte aligned |
8 bit byte aligned 16 bit word aligned 16 bit byte aligned |
8 bit byte aligned 16 bit word aligned |
| 6800 / 8080 type clock | 6800 / 8080 type clock | 6800 / 8080 type clock |
| Max address bus size | 24 bit | 24 bit | 18 (20) bit |
| Bus hardware WAIT support | Yes | Yes | - |
Max number of IOTesters used by one PC application | 4 | 4 | 8 |
External interrupts events (from all devices) | 3 (12) | 2 (8) | 1 |
| SPI bus support | Yes | Yes | (software emulation) |
| I2C bus support | Yes | Yes | (software emulation) |
| Timer + timer interrupt | Yes | Yes | - |
| Interrupt controller | Yes | Yes | (single PC interrupt) |
| Timestamp counter | Yes | Yes | (software emulation) |
| Interrupt event counter | Yes | Yes | - |
| RGB display controller | Yes | - | - |
| Video buffer, general image storage | Yes, 16 Mb | - | - |
| Copy / fill accelerator | Yes | - | - |
| PWM signal for backlight control | Yes | - | - |
| Touch screen controller | Yes | - | - |
| PC connection type | USB 2.0 | USB 2.0 | PC LPT port |
Max number of IOTester PC applications active simultaneously | 255 (USB limit) | 255 (USB limit) | 1 |
| Max burst I/O access speed | 400-600 ns (USB / PC dependent) | 400-600 ns (USB / PC dependent) | 12-20 us (PC dependent) |
| Single read access speed | 0.5 ms (USB / PC dependent) | 0.5 ms (USB / PC dependent) | 12-20 us (PC dependent) |
| Logic output levels | 3V3 | 3V3 | True 3V3 or 5V |
| Logic input levels | 3V3, 5V tolerant | 3V3, 5V tolerant | True 3V3 or 5V |
Build in cable impedance termination | 100 ohm | 100 ohm | 100 ohm |
ESD / undervoltage / overvoltage protection on I/O pins | Yes | Yes | Yes |
Power supply sources to IOTester | DC connector (4.5-8V) Target (3V3) USB connector (4.5-5V) |
DC connector (4.5-8V) Target (3V3) USB connector (4.5-5V) | DC connector 5V Target (3V3 or 5V) |
Power supply to target via IOTester regulator |
3V3 300mA (USB) or 3V3 500mA (DC con.) | 3V3 300mA (USB) or 3V3 500mA (DC con.) | 3V3 300mA 5V 500mA |
Direct power supply to target via IOTester DC connector + adaptor | 5V 1A (0-8V) | 5V 1A (0-8V) | 5V 500mA |
|
|
Links to more information
|
|
C source examples
|
Example 1: Start using IOTester I/O port pins - "Single chip mode"
Example 2: Enabling the External bus
Example 3: Using Internal Devices and External bus.
Example 4: Using Target Interrupt.
Example 5: Writing portable I/O driver source code with <iohw.h>
Example 6: <iohw.h> implementation methods and definition of I/O registers
Example 7: Swapping source code between PC and target platforms
|
|
Display driver libraries
|
IOTester® provides direct support of all RAMTEX display driver libraries:
All IOTester versions can be used with the above libraries. However when IOTester-USB-Disp emulates display controllers on the processor chip the Generic display driver library is recommended.
Also be aware that the IOTester-USB tool versions are magnitudes faster than the IOTester-LPT tool, especially with large color display modules.
|
|
IOTester-LPT compatibility
|
The IOTester-LPT development tool version provides access to embedded I/O peripheral devices via the PC-LPT port.
The IOTester-USB functionality is a superset of the old IOTester-LPT functionality.
IOTester-USB contains an internal set of IOTester-LPT compatibility registers.
This enables direct reuse of existing IOTester-LPT source codes with IOTester-USB.
|