The
aJ-100 is a single-chip microcontroller by
aJile Systems that directly executes
Java Virtual Machine bytecodes and real-time Java threading primitives with the goal of providing efficient, real-time performance for low-power embedded applications.
Overview
The native JVM bytecode implementation eliminates the typical interpreter or JIT software layers and provides the most optimal Java performance in both memory requirements and execution time.
In addition, Java threading primitives (wait, yield,notify, monitor enter/exit) are implemented as extended bytecodes eliminating the need for a traditional RTOS as well.
The result is extremely low executive overhead with thread-to-thread context switch times of less than 1 μsec.
The aJ-100 features on-chip memory and all the I/O functions required for use in many real-time networked embedded applications.
The powerful combination of direct JVM bytecode execution, direct multithreading support, and fully protected multiple JVM environments is ideal for efficient, safe, and robust execution.
The aJ-100 is ideally suited for Java based Smartphones, PDAs, wireless gadgets, and real-time networked industrial controllers and sensors.
Features
32-bit Direct Execution Java Processor Core*Native JVM bytecode execution*Extended bytecodes for memory mapped peripheral access*IEEE-754 floating-point arithmetic*Writeable control store supports custom application specific instructionsNative Java language Threading Support*Hard real-time, multi-threading kernel in hardware*Atomic threading operations*Built-in deterministic scheduling queues*Directly supports the Real Time Specification for Java (RTSJ)*Thread to thread yield in less than 1μsec*Eliminates traditional RTOS software layerMultiple JVM Manager (MJM™)*Supports multiple independent JVM’s*Brick wall time and space protection*External memory protection supportInternal 48KB RAM*32KB dedicated data memory*16KB microcode memoryMemory Controller*8-bit, 16-bit or 32-bit interface*Eight chip selects to support ROM, Flash, SRAM, and peripheral devicesDual 16550 compatible UARTs*128-byte FIFO on Rx and Tx*Support IrDA physical layer protocolThree 16-bit Timers/Counters*Flexible count control and counter I/O*Pulse Width Modulation (PWM)*Waveform measurementSerial Peripheral Interface (SPI)*Master/Slave operation*Four external chip selects*Programmable transfer lengthFive 8-bit General Purpose I/O Ports*I/O programmable on a per-bit basis*Flexible interrupt generationPhase Locked Loop (PLL) and Power Management*Transparent CPU power down when the “run queue” is empty*Individual peripherals can be deactivated when not in use*Global clock disable with external wake-up pinIEEE 1149.1 (JTAG) Interface*Boundary scan*Low-level debugger interface*JPDA Java Debugger InterfaceDesigned for ultra-low-power operation*Less than 1mW/MHz power consumption*Fully static operation up to 100 MHz*Implemented in 3.3V and 0.25μm CMOS process*Core operates at 2.5VHoused in 176-lead LQFP packagesSystem Development Support
The aJ-100 processor, bundled with Sun’s J2ME/CLDC or CDC/Foundation Profile runtime system, optimizing application builder, debugging tools and evaluation board provides a complete solution for implementing real-time networked embedded Java technology enabled applications.
The aJile Java runtime together with the microprogrammed real-time kernel supports the Java threading model without the need for a separate RTOS.
This aJile unique technology significantly reduces memory requirements and lowers system costs. aJile’s Multiple JVM (MJM) technology enables multiple applications to execute concurrently and independently in a deterministic, timesliced schedule.
Each JVM employs it’s own threading and memory management policies to enable real-time applications to execute concurrently with networked applications without the threat of GC pauses and other interruptions.
The MJM capability takes the Java “sandbox” security model the next level, providing a mechanism to easily isolate applications and allocated resources. aJile’s solution enables real-time applications to run independently and safely co-exist with networked applications.
Using commercial IDEs for Java technology, application developers can create standalone real-time Java enabled applications totally in the Java language with the performance and memory efficiency of systems programmed in C and assembly.
Utilizing aJile’s development systems, application developers can readily explore the features of the aJ-100 and assess the efficiency and performance of a real-time embedded Java platform.
The primary components of the development and runtime environments are summarized as follows:
Optimizing Linker/Application Builder:
GUI based application build configuration and control tool—JEM Builder Utilizes standard JVM class files generated by commercial IDEs for Java technology Statically resolves class files and eliminates unused methods and fields Performs bytecode optimizations Performs method substitutions (method invokes replaced by extended bytecodes) Builds boot tables, class initialization code, and assigns interrupt and trap handlers Configures JVM's and memory layoutJava technology based Runtime System
Run-time environment based on a J2ME/CLDC or CDC/Foundation Profile Includes networking classes, storage classes, and Java communications API Device drivers for integrated peripherals and generic physical device interfacing in Java languageApplication Debugging Tools
Host-target communications via an IEEE 1149 (JTAG) interface Host-based full featured bytecode-level debugger—Charade Host-based JPDA provided to interface to commercial JPDA compliant source-level debuggersReferences