TEMU 2.2.0

TEMU 2.2.0 was released on 2020-06-18.

New Models

  • PowerPC architecture support

    • Added PPC750 CPU core model

  • ARMv7-R architecture support

    • ARMv7-R CPU core model.

    • Cortex-R4 based memory controller.

    • Sysconfig file for TMS570LC43.

    • TMS570 VIM, SCI-LIN and RTI device models

  • 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)

  • Ethernet models added (GRETH, GRETH_GBIT)

New Features

  • 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).

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

Changes

  • Rebased to LLVM 6.0 (internal change)

  • A lot of activity has been on internal cleanup.

  • The emulator generator support tool has been rewritten and is a lot simpler now. This paves the way for more advanced interpretation methods and binary translation further on in time. CPUs should otherwise remain identical to their function. This is an internal change and does not have an impact on the end user.

  • GDB C++ API is removed, replaced with plain C-API.

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

    • Replacing GDB Server C++ API with C99 API, old headers have been deleted.

    • 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. Although, 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).

Deprecations

  • Old / legacy event API is deprecated, will be removed in TEMU 3.0