How much do your software products cost?
|Our prices are competitive.|
|There are no work station fees.|
|And there are NO ROYALTIES!|
You can use the get info form and its
comment section to request specific price information.
Can you have a sales person visit us and provide a demonstration?
Our product pricing structure does not permit us to make on-site visits.
Instead, we endeavor to provide you with all of the detail
necessary for you to make an informed purchase decision.
We prefer to provide high quality products at reasonable prices without the
extra cost of royalties and work station fees which we would
have to charge to provide such services.
Do you have training classes?
Unfortunately, no. However, we have noted that most developers find
our products easy to use, even without personal training.
The documentation is well organized, comprehensive and includes
tutorial explanations and examples. The reference manuals also
highlight the answers to the more common technical support questions,
the kind usually arising from first use of the product.
A sample program is also included to illustrate the proper use
of the software.
Do I need the KwikNet Porting Kit to use KwikNet with AMX?
No. If you just purchase the KwikNet TCP/IP Stack, it is provided
ready for use with AMX on all processors in one particular target class.
It is also ready for use with all of the software development toolsets
supported by that version of AMX.
For example, KwikNet PPC32 works with
AMX PPC32 and several toolsets
on all PowerPC processors supported by KADAK.
Does the KwikNet Porting Kit include the KwikNet TCP/IP Stack?
Yes. The version of KwikNet TCP/IP Stack provided with the
KwikNet Porting Kit is ready for use with your choice of processor
and related software development tools.
The KwikNet Porting Kit User's Guide describes the porting process.
The KwikNet TCP/IP Stack User's Guide describes how to use KwikNet.
You can download both of these manuals.
Do I need the KwikNet Porting Kit to use KwikNet with a Blackfin DSP?
No. The KwikNet TCP/IP Stack for Blackfin is a KADAK product
which is ready to use with the VDK kernel provided by
Analog Devices, Inc. This version of KwikNet is ready for
development using the tools provided by ADI.
No custom porting is required.
However, the KwikNet Porting Kit must be used if you wish
to add KwikNet network support to a Blackfin project which must
operate with an RTOS other than the VDK or in a
single threaded fashion.
KADAK has used the KwikNet Porting Kit in this manner to test
the KwikNet Sample Program operating as a single threaded
application with an ADSP-BF537 processor on the
Analog Devices' ADSP-BF537 EZ-Kit
Can I use the KwikNet Porting Kit to port the KwikNet TCP/IP Stack
to an 8-bit processor?
Yes. However, there are some caveats.
Be sure that your C compiler supports 16-bit integers
and 32-bit longs.
It must also be able to cast a pointer to a long and vice-versa.
Of course, memory limitations are always an 8-bit concern.
You can use the KwikNet memory sizes
for different 16-bit and 32-bit processors
as a guide to the memory requirements you might expect. Finally, note that
KADAK has not tested KwikNet on any 8-bit target.
What does KwikNet include? Does it include device drivers?
The KwikNet TCP/IP Stack includes the following components:
||KwikNet Configuration Builder, a Windows utility for
customizing KwikNet to your needs
||IPv4 layer with support for UDP, ICMP, ARP and RIP
||TCP layer with sockets interface
||DHCP client for IPv4 (with BOOTP support)
||Support for Ethernet networks
||NE2000 compliant Ethernet Device Driver
||Ethernet device driver shell ready for adapting to your
custom Ethernet device interface
||Support for serial networks using SLIP
(PPP is not included. It is available as an option)
||Modem driver with script support for serial connections
||NS16550 and INS8250 compliant Serial Device Driver
||Serial device driver shell ready for adapting to your
custom UART device interface
Besides TCP/IP, what other protocols does KwikNet support?
The following optional KwikNet components are available:
||IEEE 802.3 Ethernet Framing
||AutoIP for automatic IP address assignment
||IGMP (Internet Group Management Protocol)
||NAT (Network Address Translation)
||DHCP client for use with dual IPv4/v6 stack
||DNS Client (Domain Name System)
||PPP for serial networks
||FTP Client and Server (file system is required)
||TFTP Client and Server (file system not required)
||TELNET Client and Server
||WEB Server (file system is required;
can use KwikNet Virtual File System)
||SNMP v1, v2, v3 Agent with off-line MIB Compiler
||SMTP Client and Server
||POP3 (Post Office Protocol)
Does KwikNet support IPv6? What about security issues?
To meet your IPv6 and security needs, the following optional
KwikNet components are available:
||IPv4/v6 dual stack for IPv4 and IPv6 use
||IKE (Internet Key Exchange)
||SSL (Secure Sockets Layer)
||FTP Client with SSL Security
What is the difference between AMX 4-ARM and AMX 4-Thumb?
AMX 4-ARM operates on any ARM core which adheres to the ARM
v4 or v5 architecture specification. AMX 4-ARM
operates in ARM mode at all times, even if the core
includes Thumb enhancements. Hence, AMX 4-ARM cannot
execute instructions encoded using the Thumb instruction set.
AMX 4-Thumb operates on any ARM core which adheres to the ARM
v4T or v5T architecture specification. AMX 4-Thumb
operates in both ARM and Thumb modes. Hence, AMX 4-Thumb
requires a core which implements the Thumb instruction set.
AMX 4-Thumb starts in ARM mode
and switches to Thumb mode on entry to a task. The task can
execute ARM or Thumb code using the inter-working veneers
supported by most ARM compilers and linkers. When interrupts or
exceptions occur, the processor switches to ARM mode.
AMX 4-Thumb ensures that the proper mode context is maintained,
switching to Thumb mode if required when resuming a preempted
task or starting a new task.
What variants of the ARM processor do you support?
That depends on your interpretation of the term
"ARM processor". ARM Ltd. provides the v4, v4T, v5 and v5T
architecture specifications. AMX 4-ARM will operate on any processor
which adheres to these specifications. AMX 4-Thumb will operate on
any processor which includes the Thumb extensions as indicated by the
"T" in the architecture name.
Note that the v5 (v5T) architecture simply adds enhanced
instructions to the v4 (v4T) specification. AMX does not require
these instructions for its operation and does not preclude your
application from benefitting from their use.
ARM Ltd. also describes a variety of CPU cores. These are specific
designs which incorporate other features such as DSP enhancements
(example: ARM7E and ARM9E families) and Java support (example:
ARM7EJ-S and ARM9EJ). There may or may not be an actual silicon
implementation of these CPU cores. AMX will operate on those CPU
cores which follow the v4, v4T, v5 or v5T architecture specification.
But AMX does not provide support for the DSP or Java features,
if any, within the CPU core.
ARM Ltd. also describes a variety of processor cores. These are
designs which incorporate a particular CPU core and, in most cases,
implement some form of memory management scheme using an MMU or PRU
to provide instruction and/or data caching. There may or may not be
an actual silicon implementation of these processor cores.
AMX will operate on the processor cores which follow the
v4, v4T, v5 or v5T architecture specification.
AMX also provides cache management services for
processor cores (such as the ARM9 and ARM9E families)
which implement ARM's well defined coprocessor CP15 commands for
Finally, there are specific silicon microcontrollers derived from
the ARM architecture specification or from a CPU or processor core.
In some cases these are test chips manufactured for ARM Ltd. for use
on ARM development boards prior to availablity of the developer's own
ARM ASIC. The NEC ARM7TDMI test chip is an example. Other
microcontrollers (such as the Atmel AT91x40 family) are standard chips
which include timers, UARTs and interrupt control ready for incorporation
into an end product. Although AMX will operate on any microcontroller
which follows the v4, v4T, v5 or v5T architecture specification, it
may not support the complement of peripheral devices incorporated
within the chip. This topic is addressed in greater detail in the
answer to the next question.
What microcontroller features do AMX 4-ARM and AMX 4-Thumb support?
AMX includes an exception supervisor which handles the processor
exceptions generated by the ARM processor. AMX supports both IRQ and
FIQ interrupt sources, providing an interrupt controller is available
to arbitrate interrupt requests. AMX includes support for all ARM
processor cores which implement the interrupt controller defined
by the ARM DDI 0062D Reference Peripherals Specification. AMX also
supports the custom interrupt controllers provided in the Atmel
AT91x40, Samsung S3C4510 and Intel SA-110, SA-1100 and SA-1110
AMX requires a real time clock to provide application timing services.
AMX includes a clock driver for all ARM processor cores which implement
the real time clock (timer) defined
by the ARM DDI 0062D Reference Peripherals Specification.
AMX also supports the custom timers provided in the Atmel
AT91x40 and Samsung S3C4510 microcontrollers. Clock drivers for the
21285 Core Logic timer and the Intel SA-1100 and SA-1100 timer are
ready for use with AMX 4-ARM on StrongARM platforms.
The AMX Sample Program makes use of a simple, polled serial driver
for console output. In most cases, the ARM processor core does not include
an integrated serial (UART) interface. An external, board dependent UART
interface must be provided. AMX includes a sample driver for the
ST16C552 serial (UART) interface provided on the ARM Development Board.
AMX also supports the custom UARTs provided in the Atmel
AT91x40 and Samsung S3C4510 microcontrollers. Sample drivers for the
21285 Core Logic serial device and the Intel SA-1100 and SA-1100 UARTs
are ready for use with AMX 4-ARM on StrongARM platforms.
Note that AMX does not provide support for the DSP or
Java features, if any, incorporated into a specific ARM CPU or
processor core or derivative microcontroller.
Is the AMX kernel available for the Blackfin DSP?
No. KADAK has not ported AMX to the Blackfin DSP family of
processors. The VDK kernel (RTOS) is available directly from
Analog Devices, Inc.
The KwikNet TCP/IP Stack and its options are the only
products which KADAK supplies for use with the Blackfin DSP.
KwikNet for Blackfin is ready for use with the VDK kernel from ADI.
The KwikNet Porting Kit can be used to add KwikNet network
support to a Blackfin project which must
operate with an RTOS other than the VDK or in a
single threaded fashion.
Why are there two versions of AMX for the Intel 80x86 processor family?
AMX 86 operates on all 80x86 processors from the oldest 8088 to current
Pentiums. AMX 86 also operates on the newer Turbo86 24-bit
processors from VAutomation.
It is the choice for 16-bit applications operating
in real-mode only. Applications are limited to one megabyte (1 MB)
of total memory on conventional 80x86 processors or 16 MB with the
24-bit addressing of the VAutomation cores.
On PC compatible hardware, AMX 86 allows full use of DOS and
PC ROM BIOS services.
AMX 386/ET is the choice for protected mode operation on truly
embedded platforms. It requires an 80386, 80486, Pentium or
compatible processor. AMX 386/ET operates only in protected mode.
Since it never switches to real mode, it cannot be used with
DOS or with your PC ROM BIOS, both of which operate only in real mode.
However, AMX 386/ET can still be used on PC compatible hardware.
In fact, it frequently is used this way, especially on PC/104
Should I use AMX 86 or AMX 386/ET?
If you want to create a 16-bit application which operates
in real-mode only, you must use AMX 86.
If you are using an 80x88, 80186 or 80286 processor (or equivalent)
or a VAutomation Turbo86 core, you must use AMX 86.
If you want to create a 32-bit application in order to
access more than the 1 MB (or 16 MB) of memory available in real mode,
you will require AMX 386/ET operating in protected mode.
Does AMX handle the classic priority inversion problem?
Yes. But having said that you should still be careful.
There is an additional overhead required by the kernel
to resolve priority inversion. Fortunately, AMX permits
tasks to dynamically adjust task priorities so that with
careful design, you can usually use the priority ceiling
methodology to avoid the problem, always the best solution.
If you cannot avoid a potential task priority inversion, you
can use an AMX resource semaphore with priority inheritance
to resolve the problem. The AMX Semaphore Manager will make sure
that low priority tasks are not permitted to lock resources
required by higher priority tasks for long periods of time.
And best of all, AMX does not impose most of the restrictions
inherent in the solutions offered by other RTOS vendors.
For a good discussion of this topic, see the feature article
by KADAK's staff members in the June 2004 issue of Embedded
Systems Programming magazine, a CMP Media publication.
There is also an excellent article
by Naomi Avigdor on pages 44 to 48 of the March 1994 issue of
Embedded Systems Programming magazine.
Michael Barr also introduces the topic on page 120 of his book,
Programming Embedded Systems in C and C++.