Home
KwikNet Questions
ARM Processor Selection
AMX Questions
Priority Inversion

  Sales and Support Queries

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?

Unfortunately, no. 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.


  KwikNet Questions

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 Lite board.

 
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
IPsec Security
IKE (Internet Key Exchange)
SSL (Secure Sockets Layer)
FTP Client with SSL Security


  ARM Processor Selection

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 cache control.

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 processors.

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.


  AMX Questions

 
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 hardware.

 
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.


  Priority Inversion

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++.



Copyright © 1996-2013







































RTOS
TCP/IP
File System
License
Manuals
Demos
Support
White Papers
Tools
Alliances
Dealers
Site Map
Company
Showcase
Home
FAQ
Get Info