TEMU 2.2.6 has been released.
TEMU 2.2.5 has been released.
TEMU 2.2.4 has been released.
TEMU 2.2.3 has been released.
TEMU 2.2.2 has been released.
A TEMU 3 prerelease has been released. The release includes a new command interpreter, faster CPU interpreters, and experimental binary translation (off by default).
TEMU 2.2.1 has been released.
TEMU 2.2 has been released.
Rebased to LLVM 6.0 (internal change)
A lot of activity has been on internal cleanup.
POTENTIALLY BREAKING API CHANGE: Event API is rewritten, the old one
is there and is compatible with the new one, except for the event
registration function (which should be replaced with
temu_publishOldStyleEvent
) which now takes a source object pointer.
The event publication is with the new API mandatory before posting an event (previously, it was technically only needed for checkpointing support).
Users should move to the new style events as soon as possible. These events are preallocated when models are allocated and a lot faster than the old style events.
The old style event API is marked as deprecated and it will be removed in a later release.
Allthough, while the old style event API is still there, it has been
renamed LegacyEventIface
in the code. Thus, when you rebuild your
models you must make a decision on either sticking with the
deprecated legacy API or moving to the new API.
New API is based on a function interface, and it is no longer needed
to handle the writing of a queue property in a special way to
register events. To post an event use the temu_eventPostXXX()
functions (where XXX at present is Cycles, Nanos and Seconds).
Python API is reorganised. Please update your Python scripts
with the new module paths (temu.c.xxx
) insead of temu.xxx.
temu.c.xxx
will keep the raw wrappers over the C-api.
temu.xxx
(not including temu.c) will provide a more native and
natural Python API when implemented.
Command API added. In T-EMU 2.1 and earlier, there was no user exposed API for adding custom commands the only way to do this was an internal C++-API which was/is not exposed to the user. We now provide a C and Python API to create user commands.
Additional functions added to temu-c/Support/CommandLine.h
Added Python API for creating commands using kwarg syntax. the raw API can be accessed with ‘import temubuiltins’ (at the moment).
Replacing GDB Server C++ API with C99 API, old headers have been deleted.
ELF Symtab API added. The API supports loading and querying the symbol tables in an ELF file. The symtabs are useful as fallback if DWARF info is not available.
DWARF support extended and source level debugging commands added.
MIL-STD-1553 support is starting to stabilise, it is still however marked as experimental until it has been properly tested by more third parties implementing bus controller and remote terminal models.
SpaceWire models added (GRSPW, GRSPW2, GRSPWROUTER)
CAN models added (SimpleCANBus, CAN_OC, GRCAN)
Event API has been redesigned, the old API is still around but there was one breaking change in the event registration function.
Command API added that allows the user to insert new command line handlers in both C and Python.
GDB C++ API is removed, replaced with plain C-API.
Python API has been moved under temu.c.xxx
namespace.
A beta version of the PowerPC CPU core model is now available in the nigthly builds. The current modelled CPU is based on the PPC750, i.e. 32 bit, without Altivec support.
TEMU nightly builds now contains a number of major new features, which has been targeted for the upcoming 2.2 release:
For TEMU 2.2 there will be some API breakage, firstly the count parameter of the temu_addInterface function will be removed. This parameter is not used at present. If you are using the emulator from C++, the parameter has a default argument, so it should not have any significant effect.
The second more fundamental change will be the event system. The current system is being rewamped with support for pre-allocated event structures. This should speed up the event system by removing allocations during event insertion and removal. The old EventIface has been renamed LegacyEventIface (the LegacyEvent interface has been deprecated as well). The new event system is backwards compatible except for how events are published. Thus, calls to the registerEvent method in the interface should be replaced with temu_eventPublishOldStyle(), this call should be made in the model constructor intead of when the queue object is connected.
The main point with this is that the event API is moving away from the interface based variant, to a function based variant.
There will be two options:
Note that the legacy event interface will be removed completely in release following TEMU 2.2. So it is recommended that you move to the new event system instead.
The advantages are two fold. Firstly the new temu_Object class that all internal classes must inherit from now has a reference to its queue object (which can be connected in the CLI with the connect-timesource function). You therefore no longer need to add a EventIface reference property to your model. Secondly, the new function based interface allow the posting of events using one out of three time bases (cycles, nanoseconds or seconds).
The new API is less confusing, and more easy to use. In addition, it should result in signficant performance advantages for high frequency and high volume event usage.
TEMU 2.1 has now been released. For more information, see the release notes and the download page.