blob: ba79f75ff2fca9e6d0d8e8c57fada4b9cd249b20 [file] [log] [blame]
Renode changelog
================
This document describes notable changes to the Renode framework.
1.15.1 - 2024.06.14
-------------------
Added and improved architecture support:
* improved support for SMP processing in Armv8 and Armv7
* configuration signals for Arm cores
* LOB extension (without tp variants) for Armv7
* VSTRW instruction support from Armv8.1-M MVE
* support for additional Arm CP14 and CP15 registers
* Armv8 LDM (user) instruction will update registers predictably even when executing in System Mode, instead of being UNPREDICTABLE according to Arm documentation
* basic support for Cortex-A5 CPU type
* DCIMALL instruction for Aarch32 CPUs
* IMP_CDBGDCI instruction for Cortex-R52 CPUs
Added and improved platform descriptions:
* timer interrupts configuration for STM32F4-based platforms
* improvements to networking configuration for StarFive JH7100
* improvements to Renesas R7FA2E1A9, R7FA2L1A, R7FA4M1A, R7FA6M5B, R7FA8M1A SoC
* improvements to UT32M0R500 SoC
* platform with example sensor connections for CK-RA6M5
* multicore Cortex-R52 platform
* multicore Cortex-A53 with GICv3 in SMP configuration
* improvements to the Cortex-R52 platform
* GIC architecture version selection for many Arm platforms
* added Arm signal unit support for Cortex-R8 and multicore Cortex-R8 platforms
* merged Zynq Ultrascale+ into a single platform with both Cortex-A and Cortex-R CPUs
* updated peripherals registration for STM32F0, STM32F4, STM32F746, STM32G0, STM32H743, STM32L071, STM32L151, STM32L552, STM32WBA52 SoCs
* Renesas CK-RA6M5 board
* Beagle-V Fire, with Microchip's PolarFire SoC
Added peripheral models:
* Gaisler ADC
* NPCX GPIO
* NPCX SMBus
* NXP OS Timer
* Renesas DA SPI
* Renesas RA IIC
* Renesas DA14 GeneralRegisters
* Renesas DA14 XTAL32MRegisters
* S32K3XX EMAC
* S32K3XX FlexCAN
* S32K3XX FlexIO with SENT and UART endpoints
* S32K3XX GMAC
* S32K3XX Low Power IIC
* STM32H7 Crypto Accelerator
* STM32H7 QuadSPI
* STM32WBA GP DMA
* UT32 CAN
* VirtIO Filesystem device
* ZynqMP Inter Processor Interrupt controller
* ZynqMP Platform Management Unit
* ZMOD4410 and ZMOD4510 air quality sensors
* AK09916 and AK09918 3-axis electronic compass sensors
* generic configurable Pulse Generator block
Added demos and tests:
* I2C echo test for Renesas DA14592
* addtional unit tests for CRCEngine
* I2C mode tests for Renesas RA8M1 SCI
* BeagleV-StarLight ethernet tests
* serialization tests for Armv8-A and Armv8-R cores
* Cortex-R8 Zephyr tests
* configuration signals tests for Cortex-R8
* NXP S32K388 Low Power SPI test
* HiRTOS samples (including multicore) on Cortex-R52
* Renesas RA6M5 platform tests including SCI SPI, ICM20948, HS3001, IIC
* EXT2 filesystem Zephyr tests based on SiFive FU740
* STM32H7 Nucleo test for CRYPTO and SPI
* tests for GDB accessing peripheral space
* regression tests for ARMv8 Security State and Exception Level after core initialization
* VirtIO Filesystem directory sharing test
* Zephyr SMP test for Cortex-R52
* aws_cc test for the Renesas CK-RA6M5 board
* machine log level test
* range locking tests in sysbus.robot
Added features:
* mechanism for integrating Renode with SystemC simulations
* VirtIO-based directory sharing with host OS
* new GIC redistributor regions registration methods for multi-core platforms
* CAN analyzer support in Wireshark integration
* CPU-specific function names lookup support
* ability to clear CPU-specific or global function names lookups
* SENT protocol support
* LIN protocol support
* IADC interface for generic ADC control
* support for specifying additional offset to function names addresses in lookups
* locking sysbus accesses to specified ranges
* easier access to externals in Python scripts via externals variable
* external control API with C client library
* integration with dts2repl tool
* virtual CAN host integration via SocketCAN bridge
* ability to control log level of the whole machine with the logLevel command
* ability to specify Privileged Architecture Version 1.12 on RISC-V processors
* optional CPU context in locking sysbus accesses to peripherals
Fixed:
* Migrant not keeping track of all child-parent connections in the Reflection mode
* Arm PMSAv8 configuration using stale values in some circumstances
* Armv7 CP15 registers - ADFSR, AIFSR, non-MP BP*, DC* and IC* registers
* Armv7 and older memory barrier instructions and CP15 registers (DMB, DSB and DWB)
* read accesses to write-only Aarch32 coprocessor registers
* Armv7/Armv8 MPIDR register
* breakpoints serialization and deserialization
* calculation of target EL and interrupt masking for Armv8 Aarch32
* crashes in certian register configurations for Armv8 Aarch32
* FIQs being disabled with no way of enabling them for GICv3 and onwards
* NA4 range end address calculation in RISC-V PMP
* effective PMP configuration calculation in RISC-V when mstatus.MPRV is set
* RISC-V vector load and store segment instructions
* crashes when a breakpoint and a watchpoint trigger at the same instruction
* RISC-V PMP NAPOT grain check implementation
* TranslationCPU's CyclesPerInstruction changes during runtime not being automatically applied to ArmPerformanceMonitoringUnit's cycle counters
* unmapping of memory segments
* unregistering peripherals
* valid Ethernet frames sometimes getting rejected due to CRC mismatch
* virtual time advancing too far when pausing the emulation
* CCSIDR for L1 data cache in Arm Cortex-R8
* CCSIDR for L2 cache in Arm Cortex-R5/R8
* renode-test --include behavior for NUnit test suites
* atomic instructions handling when running multithreaded program on a single CPU machine
* automatic 64-bit access translations on system bus
* crashes on Cortex-M construction if NVIC is already attached to a different core
* exclusive load/store instructions on Armv8
* failures in monitor-tests.Should Pause Renode under certain conditions
* invalid Asciinema generation if the UART output contains a backslash character
* logging value written on an unhandled tag write
* names of Arm TCM registers
* pausing on SemihostingUart events in Xtensa CPUs
* reporting thread ID as decimal number in GDB's query command - cpuId restricted to 32
* selecting PMP access mode for RISC-V cores
* serialization for Armv8-A and Armv8-R cores
* suppressed SP and PC initialization on halted Cortex-M cores
* cache selection in Armv7 and older CPUs, now verified with CLIDR when reading CCSIDR
* precise pausing causing parts of the instruction to be executed twice
* ARM MPU ignoring memory restriction check to the page that was previously accessed even if region/subregion permissions don't match
* Armv8-R AArch32 executing in Secure State instead on Non-Secure
* Armv8-R changing Security State, while it should never do so
* Armv8 cores not propagating their Exception Level and Security State outside tlib correctly after creation
* DMAEngine memory transactions with when not incrementing source or destination addresses
* RISC-V BEXT instruction handling
* RISC-V xRET instructions not changing status bits correctly
* SocketServerProvider not closing correctly without any connected clients
* detection of test failures which should be retried when renode-test's --retry option is used
* handling peripheral accesses when debugging with GDB
* initialization of PC and SP on leaving reset on Cortex-M
* printing of possible values for invalid Enum arguments in Monitor commands
* heterogeneous platforms handling in GDB
* single step execution mode in Xtensa cores
* variable expansion in Monitor
Changed:
* Terminal Tester delayed typing now relies on virtual time
* removed AdvancedLoggerViewer plugin
* improved TAP networking performance on Linux
* reduced overhead of calling tlib exports
* TranslationCPU's CyclesPerInstruction now accepts non-integer values
* CPU Step call now automatically starts the emulation
* upgraded Robot Framework to 6.1, to work with Python 3.12
* renamed the ID property of Arm cores to ModelID
* improved Arm core performance
* improved logging performance if lower log levels are not enabled
* added host memory barrier generation to TCG
* actions delayed with machine.ScheduleAction can now execute as soon as the end of the current instructions block (it used to be quantum)
* CPU's SingleStepBlocking and SingleStepNonBlocking ExecutionModes were replaced by SingleStep and emulation.SingleStepBlocking was added
* blockOnStep was removed from StartGdbServer
* single-step-based tests were refactored due to automatic start on Step and ExecutionMode changes
Improvements in peripherals:
* Andes AndeStarV5Extension.cs - Added Configuration and Crash Debug CSRs
* Arm Generic Interrupt Controller, with changes to v1, v2 and v3 versions, focused on improving multicore support for both Armv7 and Armv8 platforms
* Gaisler APBUART
* Gaisler GPTimer
* Gaisler Ethernet
* Gaisler MIC
* Kinetis LPUART
* NPCX FIU
* NPCX Flash
* NXP LPSPI
* Renesas RA8M1 SCI
* Renesas DA I2C
* Renesas DA Watchdog
* Renesas DA14 DMA
* Renesas RA6M5 SCI
* Renesas DA DMABase
* S32K3XX LowPowerInterIntegratedCircuit
* SDCard
* STM32 PWR
* STM32F4 CRC
* STM32H7 RCC
* Synopsys DWCEthernetQualityOfService
* Synopsys EthernetMAC
* VirtIOBlockDevice, now based on VirtIO MMIO version v1.2
* Xilinx IPI mailbox
* BME280 sensor
* ICM20948 sensor
* SHT45 sensor
1.15.0 - 2024.03.18
-------------------
Added architecture support:
* initial support for ARMv7-R and Cortex-R8, verified with ThreadX and Zephyr
* initial support for Cortex-A55
* initial support for Cortex-M23 and Cortex-M85
* support for RISC-V Bit Manipulation extensions - Zba, Zbb, Zbc and Zbs
* support for RISC-V Half-precision Floating Point (Zfh) extension, including vector operations
* support for RISC-V Andes AndeStar V5 ISA extension
Added and improved platform descriptions:
* generic Cortex-R8 platform
* Renesas EK-RA2E1 board with R7FA2E1A9 SoC
* Arduino Uno R4 Minima platform with Renesas F7FA4M1A SoC
* Renesas CK-RA6M5 board with R7FA6M5B SoC, with initial radio support
* Renesas EK-RA8M1 board with R7FA8M1A SoC
* Renesas R7FA2L1A SoC
* Renesas DA14592 SoC
* Renesas RZ/T2M-RSK board with RZ/T2M SoC
* Gaisler GR712RC SoC with UART, timer, GPIO, FTMC and Ethernet
* Gaisler GR716 SoC with UART, timer and GPIO
* Gaisler UT32M0R500 SoC with UART, timer and GPIO
* NXP S32K388 with UART, timers, watchdog, SIUL2, SPI, Mode entry module and others
* NXP LPC2294 SoC with UART, CAN, timer and interrupts support
* Xilinx Zynq UltraScale+ MPSoC platform support with single core Cortex-A53, UART, GPIO and I2C
* singlecore Cortex-R5 part of Zynq UltraScale+ MPSoC platform with UART, TTC, Ethernet and GPIO
* Nuvoton NPCX9 platform support with UART, various timers, SPI, flash and other peripherals
* ST Nucleo H753ZI with STM32H753 SoC with a range of ST peripherals
* updates to Armv8-A platforms
* updates to Ambiq Apollo4
* updates to Xilinx Zynq 7000
* various updates in STM32 platform files
Added peripheral models:
* ABRTCMC, I2C-based RTC
* Altera JTAG UART
* Ambiq Apollo4 Watchdog
* Arm Global Timer
* Arm Private Timer
* Arm SP804 Timer
* ArmSnoopControlUnit
* BCM2711 AUX UART
* BME280 sensor
* Betrusted EC I2C
* Betrusted SoC I2C
* Bosch M_CAN
* CAN to UART converter
* Cadence Watchdog Timer
* Gaisler APBUART
* Gaisler GPIO
* GigaDevice GD32 UART
* HS3001 sensor
* ICM20948 sensor
* ICP10101 sensor
* Infineon SCB UART
* LINFlexD UART
* MB85RC1MT Ferroelectric Random Access Memory
* MXIC MX66UM1G45G flash
* NPCX FIU
* NPCX Flash
* NPCX HFCG
* NPCX ITIM32
* NPCX LFCG
* NPCX MDMA
* NPCX Monotonic Counter
* NPCX SPIP
* NPCX Timer and Watchdog
* NPCX UART
* NXP LPC CAN
* NXP LPC CTimer
* NXP LPC USART
* OB1203A sensor
* PL190 vectored interrupt controller
* PL330_DMA (CoreLink DMA-330) Controller
* Renesas DA14 DMA peripheral
* Renesas DA14 GPIO
* Renesas DA14 General Purpose Timer
* Renesas DA14 UART
* Renesas DA14 I2C
* Renesas DA16200 Wi-Fi module
* Renesas RA series AGT
* Renesas RA series GPIO
* Renesas RA series GPT
* Renesas RA series ICU
* Renesas RA series SCI
* Renesas RZ/T2M GPIO
* Renesas RZ/T2M SCI
* S32K3XX Miscellaneous System Control Module
* S32K3XX Periodic Interrupt Timer
* S32K3XX Real Time Clock
* S32K3XX Software Watchdog Timer
* S32K3XX System Integration Unit Lite 2
* S32K3XX System Timer Module
* S32K3XX FlexIO stub
* S32K3XX Mode Entry Module
* SHT45 temperature/humidity sensor
* SPI NAND flash
* STM32WBA PWR
* Samsung K9 NAND Flash
* Smartbond UART
* Universal Flash Storage (JESD220F)
* Universal Flash Storage Host Controller (JESD223E)
* XMC4XXX UART
* ZMOD4xxx sensor
* Zynq 7000 System Level Control Registers
1.14.0 - 2023.08.08
-------------------
Added architecture support:
* initial support for ARMv8-A, verified with a range of software, from Coreboot and U-Boot to Linux
* initial support for ARMv8-R, verified with U-Boot and Zephyr
Added and improved platform descriptions:
* generic Cortex-A53 platform, in flavors with GICv3 and GICv2
* generic Cortex-A78 platform
* generic Cortex-R52 platform
* HiFive Unmatched platform support, with UART, PWM, I2C, GPIO, Ethernet, QSPI and other peripherals
* Nucleo WBA52CG with STM32WBA52
* updated OpenTitan and EarlGrey platform to a newer version
* various updates in STM32 platform files
* translation support for Espressif ESP32 chips
Added peripheral models:
* ARM GIC, compatible with various specification versions
* ARM generic timer
* CMSDK APB UART
* Cypress S25H Flash
* EFR32xG2 I2C
* EFR32xG2 RTCC
* EFR32xG2 UART
* Marvell Armada Timer
* MXC UART
* OMAP Timer
* OpenTitan Entropy Distribution Network
* Quectel BC66
* Quectel BG96
* SI7210 Temperature sensor
* SPI multiplexer
* STM32F4 CRC
* STM32F4 Flash
* STM32H7 Flash
* STM32WBA Flash
* STM32H7 Hardware Semaphore
* STM32H7 SPI
* STM32WBA SPI
* STM32WBA ADC
* Synopsys DWC Ethernet QoS model, along with Linux-based tests
* TMP108 Temperature sensor
Added demos and tests:
* Cortex-A53 and Cortex-A78 running Coreboot, ATF and Linux
* Zephyr running echo_client demo on STM32F7-disco with Quectel BG96
* basic Cortex-A53 Zephyr ``hello-world`` test and sample
* additional Zephyr tests for Cortex-A53: ``synchronization``, ``philosophers``, kernel FPU sharing
* seL4 Adder Sample test for Cortex-A53
* range of Zephyr tests for Cortex-R52, along with custom-made, synthetic tests
* precise pausing tests for LED and terminal tester
Added features:
* renode-test allows to run tests with a specified tag via the ``--include`` switch
* DPI interface for external HDL simulators, supporting AXI4 interface
* portable package creation on dotnet
* option to have Robot test pause execution deterministically after a match in various testers: UART, LED, log
* duty cycle detection in LED tester
* option to load files (e.g. raw binaries, hex files) to different localizations, like memories
* support for relative paths in REPL file ``using`` directive
* MPU support for Cortex-M
* ``FAULTMASK`` register in Cortex-M
* support for Trace Based Model performance simulator by Google
* read and write hooks for peripherals
* DPI interface support for co-simulating with RTL, with initial support for AXI4 bus
* build.sh ``--profile-build`` switch to enable easier profiling of translation libraries
* mechanism for progressing virtual time without executing instructions
* support for subregions in Cortex-M MPU
* support for FPU exceptions for Cortex-M
* quad word (64-bit) peripherals API
* ``CSV2RESD`` tool, for easy generation of RESD files
* automatic selection of port used to communicate between Renode and Robot
* option to pause emulation of Robot keywords
* support for NMI interrupts in RISC-V
* option to save Renode logs for all tests
* ``Execute Python`` keyword in Robot tests
Changed:
* GDB interacts with Renode much faster
* Renode now uses Robot Framework 6.0.2 for testing (with an option to use other versions at your own risk)
* RESD format now accepts negative ``sampleOffsetTime``
* HEX files loader now supports extended segment address and start segment address sections
* GDB ``autostart`` parameter now starts the simulation as soon as the debugger is connected
* VerilatorIntegrationLibrary is now part of Renode packages
* improved performance of the virtual time handling loop
* improved parsing of RESD files
* improved memory allocation mechanism to allocate memory regions larger than 2GiB
* support for mapping memories on very high offsets
* improved GDB connection robustness
* exposed Monitor as a variable in Python hooks
* improved the GDB compare helper script
* improved handling of input files in TFTP server module
Fixed:
* cursor blinking in terminal on Windows
* crash when NetworkServer tried to log an invalid packet
* race condition when trying to pause during the machine startup
* platform serialization when CPU profiler is enabled
* limit buffer behavior in verilated peripherals when they are reset
* registration is no longer taken into account when looking for dependency cycles in REPL files
* exception when issuing a DMA transaction during register access
* reported PC on exception when executing vector instructions in RISC-V
* several RISC-V vector instructions handling, e.g. ``vfredosum``, ``vsetivli`` and ``vector_fpu``
* invalid instruction block exiting on RISC-V
* handling of ``c.ebreak`` instruction in RISC-V, allowing for software breakpoints
* building fixes on dotnet
* removing of IO access flag from memory pages
* invalidation of dirty translation blocks
* handling of MMU faults on address translations
* serialization of RESD files
* automatic creation of TAP interface on Linux
* ARM LDA/STL instructions decoding
* handling of platforms containing both 32- and 64-bit CPUs
* file permissions in .NET portable packages
* handling of non-resettable register fields
* several RISC-V vector instructions
* handling of the context menu in the Monitor window
* support for Cortex-M4F in LLVMDisassembler
* packets matching method in NetworkInterfaceTester
* address calculations in DMA engine
* custom build properties handling in Renode build script
* handling of time reporting and empty test cases in renode-test
Improvements in peripherals:
* AmbiqApollo4 Timer
* ArrayMemory
* AS6221 Temperature sensor
* AT Command Modem
* AT91 Timer
* Cadence UART
* Cortex-M Systick
* EF32MG12 LDMA
* Ibex
* LIS2DW12 Accelerometer
* LiteX I2C
* LSM6DSO
* MAX30208 Temperature sensor
* MAX32650 GPIO
* MAX32650 I2C
* MAX32650 RTC
* MAX32650 SPI
* MAX32650 Timer
* MAX32650 TPU
* MAX32650 WDT
* MAX86171 AFE
* nRF52840 SPI
* nRF52840 I2C
* nRF52840 GPIO
* OpenTitan HMAC
* OpenTitan PLIC
* OpenTitan ROM
* OpenTitan OTP
* OpenTitan Key Manager
* OpenTitan Flash
* OpenTitan Reset Manager
* OpenTitan KMAC
* OpenTitan CSRNG
* OpenTitan Alert Handler
* OpenTitan Timer
* OpenTitan OTBN
* PL011 UART
* Quectel BC660K
* SAMD5 UART
* SiFive GPIO
* Silencer
* STM32 DMA
* STM32G0 DMA
* STM32 EXTI, with specific implementations for STM32F4, STM32H7 and STM32WBA
* STM32 GPIO
* STM32F7 I2C
* STM32L0 LPTimer
* STM32L0 RCC
* STM32H7 RCC
* STM32F4 RTC
* STM32 SPI
* STM32 Timer
* STM32F7 USART
1.13.3 - 2023.02.22
-------------------
Added and improved platform descriptions:
* basic Adafruit ItsyBitsy M4 Express platform with UART and memories
* various STM32 platforms with improved EXTI connections, IWDG configuration, and new CRC, Flash, PWR, RCC, and LPTimer models added to selected platforms
* MAX32650 with a new I2C model
* Zynq 7000 with new I2C, SPI, UART and TTC models
* Apollo 4 with a new Timer model and a ``program_main2`` bootrom function mock
* OpenTitan Earlgrey with new OTBN accelerator, AON Timer, System Reset controller, Entropy source, and SRAM controller models
* nRF52840 with a new EGU model
* EFR32MG1x with a new LDMA model and improved USART interrupt connections
Added peripheral models:
* Apollo4 IOMaster I2C mode
* Apollo4 Timer
* AS6221 skin temperature sensor
* Cadence I2C controller
* Cadence SPI controller
* Cadence TTC
* Cadence UART
* Cadence xSPI controller
* EFR32MG12 LDMA controller
* LIS2DW12 accelerometer sensor
* LC709205F Fuel Gauge
* Macronix MX25R flash
* MAX30208 temperature sensor
* MAX32650 I2C controller
* MAX77818 Fuel Gauge
* MAX86171 Optical AFE
* NRF52840 EGU
* OpenTitan AON Timer
* OpenTitan Big Number Accelerator (OTBN) full model
* OpenTitan ClockManager stub
* OpenTitan Entropy Source controller
* OpenTitan SRAM controller
* OpenTitan SystemReset controller
* Quectel BC660K radio
* RV8803 RTC
* STM32F0 CRC
* STM32H7 RCC
* STM32L0 Flash controller
* STM32L0 Low Power Timer
* STM32L0 PWR
* TMP103 temperature sensor
Added demos and tests:
* RTC mode unit test
* Adafruit ItsyBitsy M4 Express Zephyr shell_module test
* STM32L072 tests for: DMA, PVD interrupt, SPI flash, IWDG, LPUART, EEPROM, and CRC
* STM32F4 tests for RTC and running an STM32CubeMX app
* Zynq tests for I2C, TTC, SPI flash, xSPI, and UART based on Linux
Added features:
* support for RESD - Renode Sensor Data format, allowing users to provide multiple sensors with time-coordinated data specific for a given sensor; currently supported in MAX86171, MAX30208, AS6221, and LSM6DSO
* reorganized CPU classes and interfaces, allowing for easier integration of external CPU simulators
* IOMMU, with example usage in WindowIOMMU, WindowMMUBusController, and SimpleDMA
* new key bindings in the Monitor: Ctrl+D for closing the window and Ctrl+U for clearing the current input
* new key bindings in all terminal windows: Shift+Up/Down arrow for line scrolling and Shift+Home/End for jumping to the beginning and the end of the buffer
* option to configure UART window location offsets via the config file
* support for 64-bit bus accesses and 64-bit peripherals
* support non-resettable peripheral registers and register fields
* option to register hooks to be called whenever a RISC-V register is accessed - this can be used to emulate non-standard implementation of these registers
* option to set CPU exceptions from the outside of the CPU
* Robot keyword to verify that GPIO has a specified state for a given period of time
* verbose mode in Robot tests
Changed:
* Robot tests do not need a header with settings and keywords anymore
* changed the conditional syntax in Robot tests to use IF/ELSE for compatibility with newer Robot Framework versions
* cleaned up tests-related file organization in the repository
* simplified flags for renode-test under dotnet
* added skip_mono and skip_dotnet tags to Robot tests
* removed internal signal mappings from STM32 EXTI, making the interrupt routing more explicit in REPL files
* console mode will be started instead of telnet when the UI fails to start
* reset can now be executed on a not started machine
* expanded the Execution Tracer with ``TrackMemoryAccesses`` and ``TrackVectorConfiguration`` options, along with disassembler-generated info
* OnMemoryAccess hooks now receive the current PC as a parameter
* changed the CRCEngine API and improved implementation
* ELF symbol lookup will now skip several types of unimportant symbols
* tags can now have zero width to ease the creation of variable width registers
* added option to invert reset logic in AXI4Lite
* added handling of the ``WSTRB`` signal in AXI4Lite
* added support for various address lines connections in Wishbone
* added various access lengths support for verilated peripherals
* timeout value for Verilator connections can now be defined in compile time
* all architectures now sync their PC on memory accesses
* UARTBase is now a container for IUART devices
* added option to clear all event subscribers in LimitTimer
* added ITimer interface for handling basic timer properties
* extended the excluded assembly list in TypeManager to speed up startup on dotnet
Fixed:
* flushing of the log when using the ``lastLog`` command
* deadlock when using the ``--console`` mode on dotnet with collapsed log entries enabled
* Wireshark handling on macOS
* TAP support on macOS
* Asciinema usage in multi-machine setups
* closing of Renode in several problematic scenarios
* handling of end of file detection in HEX parsing
* robustness of BLESniffer
* timestamps discrepancies in file logs and console logs
* compilation under Visual Studio on Windows
* compilation on Windows when the PLATFORM environment variable is set
* graph titles for metrics visualizer
* handling of peripheral regions in Profiles
* file sharing and access type settings for open files
* floating point registers access on RV32
* several RISC-V Vector instructions
* crash when the CPU is created with an invalid type
* RISC-V PMP config reading and writing and NAPOT decoding
* translation cache invalidation in multicore RISC-V scenarios
* SEV generation on Cortex-M
* handling of multi-instructions blocks in Xtensa
* execution of too many instructions in a single block
* button sample tests for STM32F072q
* fastvdma co-simulation test
* qCRC packet handling in GDB
* decoding of GDB packets, selecting the command handler based on the longest match for a packet
* address translation in GDB
* UARTToSpiConverter logic and user experience
* handling of Step parameter in ClockEntry
* changing of frequency for divider calculation in ComparingTimer
* cleanup of old clock entries
Improvements in peripherals:
* AmbiqApollo4 IOMaster
* AmbiqApollo4 RTC
* AthenaX5200
* Cadence TTC
* Dummy I2C Slave
* EFR32 CMU
* EFR32 USART
* EFR32 RTCC
* Generic SPI Flash
* HiMax HM01B0
* I2C dummy device
* LSM6DSO IMU
* Mapped Memory
* Micron MT25Q
* MPFS PDMA
* NRF52840 SPI
* NRF52840 I2C
* NRF52840 RTC
* NVIC interrupt controller
* OpenCores I2C
* OpenTitan I2C
* OpenTitan Flash controller
* OpenTitan LifeCycle controller
* OpenTitan ROM controller
* SAMD5 UART
* SI70xx temperature sensor
* SiFive GPIO
* STM32 GPIO
* STM32 SPI
* STM32 Timer
* STM32F4 IndependentWatchdog
* STM32F4 RTC
* STM32F7 I2C
* STM32F7 USART
* STM32L0 RCC
* STM32G0 DMA
1.13.2 - 2022.10.03
-------------------
Added platforms:
* Ambiq Apollo4 with ADC, GPIO, IO Master, System Timer, RTC, UART and other peripherals
* STM32L07x with ADC, GPIO, I2C ,RTC, SPI, Timer, USART, IWDG, DMA and other peripherals (RCC)
* verilated Ibex core with the rest of the platform natively in Renode
Added models:
* MAX32650 TPU with CRC32 support
* basic support for MAX32650 ADC
* MAX32650 SPI
* MAX32650 Watchdog
* LSM6DSO IMU
* EFR32xG12DeviceInformation
* External CPU stub as a base for integration of other CPU simulators
* OpenTitan SPI host
* OpenTitan I2C host
* OpenTitan Alert Handler, along with updates to other OpenTitan peripherals with alert functionality
* new algorithms and cores in AthenaX5200
* EFR32MG1 BitAccess
* i.MX RT GPTimer
Added demos and tests:
* STM32L072 Zephyr shell_module demo and test
* Ambiq Apollo4 Hello World example from Ambiq Suite and various peripheral tests
* MAX32652 EVKIT Hello World example from MAX32652 SDK
* FPGA ISP co-simulation demo and test
Added features:
* experimental support for .NET 6 framework
* guest-application profiling for ARM
* Interrupt hooks for ARM
* BLE sniffer support for Wireshark
* Perfetto profiler format support in guest-application profiling, along with process detection on RISC-V
* binary output format of execution tracer, along with a Python helper script to decode data
* new Run Until Breakpoint keyword for Robot tests
* verbose mode in Robot tester
* region of interest support in FrameBufferTester
* framework for providing timestamped sensor data
* WishboneInitiator bus in Verilator support
* nightly “sources” package with the whole content required for building Renode offline
Organizational improvements:
* added GitHub issue and PR templates, along with an `issue reproduction repository <https://github.com/renode/renode-issue-reproduction-template>`_
updated contributing instructions
Changed:
* added mapping for l2ZeroDevice in PolarFire SoC
* added caching of canvas bounds in TermSharp for improved performance
* restructured height map storage in TermSharp
* updated descriptions of SLTB004A and EFR32MG12 targets
* restructured CPU-related class hierarchy
* disabled TCG optimizations and liveness analysis for improved performance
* updated OpenTitan supported version, changing a range of OpenTitan peripherals
* major refactor of VerilatorIntegrationLibrary, with new interfaces and code restructuration
* updated symbol exclusion rules not to include $x symbol names in SymbolLookup
* disabled TLB flushing in RISC-V on mode change for improved performance
* allowed more than one page permission at a time in RISC-V, reducing the number of address translations
* improved output of Robot tests with timestamps and explicit test results after each suite
* SD card controller now supports more card types
Fixed:
* PMP implementation for RISC-V
* several RISC-V vector instructions including floating-point vector instructions
* 'Take Screenshot' button in VideoAnalyzer
* non-blocking CPU stepping
* crash when loading file without sufficient permissions
* external MMU not respecting the `no_page_fault` flag
* issues with concurrent creation of config file
* indeterminism of sel4_extensions test
* GDB Stub not issuing an error when trying to add zero-sized watchpoint
* handling of watchpoints on big-endian platforms
* portability of MSBuild calls across different host systems
* PolarFire SoC Watchdog test
* serialization of FrameBufferTester
* translation cache flushing after reset
Improvements in peripherals:
* Cortex-M NVIC
* HPSHostController
* NRF52840 Watchdog
* BMC050 accelerometer
* MAX32650 RTC
* MAX32650 GCR
* STM32F7 I2C
* STM32G0 DMA
* Micron MT25Q
* i.MX RT GPIO
1.13.1 - 2022.07.23
-------------------
Added platforms:
* MAX32652 with UART, GPIO, Timer, PWRSEQ, GCR and RTC
* Thunderboard Sense 2 (SLTB004A) based on EFR32MG12
Added models:
* STM32G0 DMA controller
* OpenTitan CSRNG
* OpenTitan OTP controller
* OpenTitan Life Cycle controller
* USBserialport_S3B model for Qomu
* SAMD5 UART
* SAMD20 UART
* AES and Message Authentication cores for AthenaX5200
* LiteX MMCM controller in the 32-bit CSR width configuration
* LiteX Framebuffer in the 32-bit CSR width configuration
Added demos:
* Qomu running Zephyr shell
* SLTB004A running Gecko SDK baremetal CLI sample
Added features:
* guest-application profiling support
* TAP integration on Windows
* interrupt end hooks for RV64
* option for gathering execution metrics when running tests
* tests for logging from a sub-object
* PolarFireSoC Watchdog tests
* the disassembly output format to the Execution Tracer module
* option for filtering messages by log level in the log tester
Changed:
* improved support for ARMv8-M registers
* added option to compare raw values of selected registers in the gdb_compare script
* implemented generation of guest-host PC mappings info on block translation
* added `Frequency` property to ComparingTimer
* monitor-tests: Use virtual time in the pause test
* added static flushing to the logger
* included missing tools (like gdb_compare, sel4_extensions) in all packages
* added precompilation of Python scripts before running (to detect errors early)
* added user-specified file paths handling
* added filtering of ANSI escape codes from Robot tests keyword results
* added option to enable profiler globally in EmulationManager
* added command to disable automatic symbol switching in seL4 GDB extensions
* improved RISC-V kernel breakpoints support in seL4 GDB extensions
* code generator is now compiled with more aggressive optimizations
* changed the CPU class structure, allowing for core implementations not based on translation libraries
* updated the Nexys Video platform description and demo binaries
Fixed:
* 'Should Output Voice Data' test for QuickFeather
* various RISC-V vector instructions
* register values accessing in RISC-V
* help button behavior in AdvancedLoggerViewer
* concurrent access to Pixel Manipulation Tools
* clock residuum handling, e.g. improving the behavior of the BLE demo
* serialization of externals and GDB stub
* stacktrace reporting when exception is rethrown on the native-managed boundary
* packaging of license files from dependency projects
* exception handling on EnsureTypeIsLoaded
* various fixes in file handling layer
* improved handling of variables assigned to variables in the Monitor
* handling of multiple CPUs with different configurations in GDB
* STM32F413 RCC address
* DDR mapping in PolarFire SoC
* TCM memory size in miv_rv32
Improvements in peripherals:
* NVIC
* STM32F4_RCC
* STM32_ADC
* STM32_GPIOPort
* MiV_CoreGPIO
* GigaDevice_GD25LQ
* MC3635
* SynopsysEthernetMAC
* LiteSDCard_CSR32
* ResetPin
* HPSHostController
1.13.0 - 2022.04.29
-------------------
Added platforms:
* Xtensa sample controller stub
* MIMXRT1064-EVK
* STM32L552
* ARVSOM
* BeagleV StarLight
* Sparc GR716
* RISC-V virt
* S32K118 with LPIT, LPTMR, GPIO, Clock generator mock
* STM32G0
* STM32F412
* STM32H743
* MIV_RV32
Added models:
* new models for i.MX RT 1064: PWM, timer, ADC, LPSPI, Flex SPI, TRNG
* new models for nRF52840: RNG, Radio, Watchdog, ECB, PPI infrastructure
* new models for STM32: ADC, slave CAN, PWR, watchdog
* new models for OpenTitan: flash controller, timer, PLIC, HMAC, AES, KMAC, ROM controller, Key manager, Reset manager
* new models for Polarfire SoC: system services, user crypto features (RNG and RSA), Mustein GPU and various fixes to platform description
* new model for Zynq 7000: XADC
* new generic models:
* generic SPISensor
* HostCamera device
* TrivialUart
* HPSHostController - fake I2C host master device for communicating with simulated devices
* GigaDevice_GD25LQ - initial model
* VirtIO block device model
Added demos:
* Murax SoC with verilated UART with simple echo demo
* LiteX with verilated CFU running CFU Playground demo
* Zynq with verilated FastVDMA running Linux
* NRF52840 BLE demo running Zephyr ``central_hr`` and ``peripheral_hr`` samples
* Leon3 running Zephyr shell
* GR716 running Zephyr shell
* Xtensa sample controller running Zephyr "Hello World" sample
Added core features:
* RISC-V: vector extension 1.0 support
* Xtensa architecture support
* RISC-V: access to proper set of registers + custom registers from GDB
* RISC-V: support for Custom Function Unit extensions
* WFE support on ARM cores
* uninterruptible debugging option to all architectures
* floating point support to Cortex-M platforms
* basic support for ARM 64-bit registers
* Cortex-M33 stub
* Sparc: added CSR register and exposed FSR register
Added features:
* primary selection copy support in TermSharp
* support for asciinema UART dumps
* support for native library communication in verilated peripherals
* APB3 bus implementation for VerilatorIntegrationLibrary
* support for loading HEX files
* video capture mechanism with host camera integration
* startup parameter for specifying the config file
* register access keywords for Robot Framework integration
* keyboard input in VideoAnalyzer on Windows
* option to stop on first error when running tests
* option to save failed test logs
* opcodes counting mechanism, along with RISC-V opcodes files parser
* execution tracing mechanism
* Wireshark support on Windows
* seL4-aware GDB debug support
* BLE wireless medium including Wireshark support
* gdb_compare script allowing to compare execution of two GDB instances, for example one connected to Renode and one to hardware
* support for vector registers in GDB
* CPU Id parameter in ARM cores
* option to control timestamp format and visibility in LoggingUartAnalyzer
* option to skip library fetch during build
* option to flush terminal history when connecting via socket
* support for external, bus-connected MMU
Changed:
* bumped Robot Framework version to ``4.0.1``
* RobotFramework: log entries keywords now accept regex patterns
* STM: renamed some UART ports to USART
* ZynqEthernet: removed and replaced with CadenceGEM
* Zedboard: updated demo to Linux 5.10
* reworked CPU halting
* added CRC to packets sent by NetworkServer
* RISC-V: added logs on unhandled CSR accesses
* improved build time by changes to TermSharp project organization
* various updates to STM32F746 CPU definition
* added limit to displayed command history in AntShell
* moved output of Robot tests to current directory when running on Windows
* XWT events are now queued in GTK engine
* added option to reconnect to SocketServerProvider
* explicitly used XZ compression with pacman
* added option to limit function names logging to unique entries, vastly improving performance
* removed dependency to realpath from build and run scripts
* removed dependency to ZeroMQ
* renamed EOSS3_SPIMaster to DesignWare_SPI
* dropped Fedora version indicator from packages
* optimized RISC-V PMP handling
* reworked PlatformLevelInterruptController to operate on contexts instead of targets
* added O/H/W write commands to ArduinoLoader
* enabled TLS 1.1 and TLS 1.2 in CachingFileFetcher
* improved multicore debugging support in GDB
* allowed to reuse testers in Robot tests
* added option to safely include the same C# file multiple times during one Renode run
* added ``tests.yaml``, containing all Robot tests, to all packages
* add debug mode for all architectures disabling interrupts when stepping over guest code
* simplified fixture selection when running tests
* allowed unaligned memory access by default in IbexRiscV32
* added GDB support for VS bits in MSTATUS register
* added interrupts support in verilated peripherals
* added support for CPU registers wider than 64-bits in Renode (C# part, not tlibs)
* improved and unified the --plain mode handling
* refactored the disassembly handling subsystem
* improved GDB packets handling performance
* added option to control serialization mode in the configuration file
* added optional compiled files cache
* improved handling of exceptions at the C/C# boundary
* flattened the TimeFramework structure to increase performance
* improved performance of handling of truncated translation blocks
* improved performance of TermSharp height map calculations and row handling
* added several tlib performance optimizations
* added the synchronized timers emulation mode
* added support for the flow control in UART
* added support for bright colors to TermSharp
* added basic VSCode launch configurations for Renode on Mono
* unified ``renode`` and ``renode-test`` scripts names across all packages
* added support for per-core peripheral registration
* added option to the build script to export the build directory
* improved performance of ELF reloading
* updated Conda build scripts to better work with the latest Renode, improved Windows support
* added option to configure step for clock entries
* improved startup performance by skipping analysis of uninteresting assemblies in TypeManager
* tied the AutoRepaintingVideo refresh frequency to the virtual time flow
* enabled passing the -e parameter to Renode even when providing a script file parameter
* added option to preserve temporary files from Robot tests
* added a source of a log message to the log tester
* Provides and Requires keywords now use state snapshots
Fixed:
* CPU endianness handling in GDB register accesses
* SPARC WRASR and CASA instructions
* SPARC registers handling in GDB
* memory invalidation on writes in MappedMemory
* ARM instructions: ASX, SAX, SUB16 and UQSUB
* symbol name mangling on MacOS
* updating PC before raising MMU exception on RISC-V
* unaligned ld_phys handling, resolves problems of possible memory corruption
* possible race conditions in TerminalTester
* IO access path selection in tlib
* support for big-endian peripherals
* running tests in sequential mode
* HiFive Unleashed platform description including PHY advertisement and RAM size
* Ethernet PHY advertisement on the Zedboard platform
* cross-endian bus accesses
* endian conversion wrappers for untranslated accesses
* registers mapping of fflags/frm/fcsr, resolving GDB registers XML generation
* running tests when the build phase failed
* it-status unit test
* added LibLLVM to all packages
* whitespace handling in resc scripts on Windows
* occasional assertion fail when loading ELF files
* setting breakpoints on virtual addresses
* MicroPython tests
* installation on Linux with a separate /opt mount point
* demangling symbols from the anonymous namespace
* SoftFloat's type conversion functions
* illegal instruction exception on wrong CSR access on RISC-V
* support for quad words access on the system bus
* possible memory leak in tlib
* improved precision of calculations in BasicClockSource and ComparingTimer Fixed
* support for various versions of standard libraries on Linux hosts (libdl, libutil, etc)
* libc dependencies for the Renode portable package
* invalidation of translation blocks on writes
* handling big offsets in MappedMemory
* ARM-M PRIMASK and xPSR handling
* PowerPC registers listing in GDB
* improved tlib debugging by not omitting the frame pointer on debug build
* fixed sfence.vma instruction implementation for RISC-V
* potential math errors (underflows/overflows) when handling the virtual time
* handling input redirected from file in the console mode
* prevented GdbStub from sending telnet config bytes on new connections
* serialization of paused state
* ad-hoc compiler support in the portable package
* flushing of log tester
* UartPtyTerminal serialization
* reporting the exit code in renode-test
* RISC-V custom CSRs handling
* resetting of a machine from the context of another machine
* thread-safety of interrupt handling mechanism
* occasional dependency fail on static constructors
Improvements in peripherals:
* CoreLevelInterruptor
* PlatformLevelInterruptController
* NVIC
* CortexAPrivateTimer
* BMA180
* CC1200
* Micron_MT25Q
* SynopsysEthernetMAC
* K6xF_Ethernet
* CadenceGEM
* OV2640
* GaislerMIC
* PL011
* EFR32_USART
* LowPower_UART
* OpenTitan_UART
* OpenTitan_GPIO
* IMXRT_ADC
* IMXRT_LPSPI
* LPUART
* STM32F7_I2C
* STM32_UART
* STM32 RTC
* STM32_TIMER
* STM32DMA
* STMCAN
* EXTI
* NRF52840_CLOCK
* NRF52840_Timer
* NRF52840 GPIO
* LiteX_I2S
* Litex_GPIO
* MPFS_PDMA
* MPFS_DDRMock
* Gaisler_GPTimer
1.12.0 - 2021.04.02
-------------------
Added:
* STM32F072 platform, with the STM32F072b Discovery board
* i.MX RT1064 platform
* NRF52840 platform, with Arduino Nano 33 BLE Sense board
* OpenTitan EarlGrey RISC-V platform with a range of OpenTitan peripherals
* CV32E40P-based RISC-V platform with many PULP peripherals
* LiteX with RISC-V Ibex CPU platform support
* CrossLink-NX evaluation board
* ice40up5k-mdp-evn board
* Zephyr-based test suite for QuickLogic QuickFeather with EOS S3
* Tock demo on LiteX/VexRiscv and STM32F4
* Mbed demo on STM32F7
* integration with Arduino IDE and Arduino CLI
* Python Standard Library, to be used with Python hooks and scripts in Renode
* support for images in the Monitor, along with possibility to take framebuffer screenshots. This also works with certain terminal emulators, like iTerm2, when in headless mode
* option to connect UART to the running console, improving headless capabilities
* option to run Renode Monitor directly in console, overlapped with logs, using the ``--console`` command line switch
* support for virtual addressing in GDB
* option to combine multiple interrupt or GPIO signals into one, using logical OR, directly in REPL files
* multi-bus support and AXI4 support (both as an initiator and a receiver) in co-simulation with Verilator
* ability to send synthetic network frames in Robot tests
* various sensor models: MC3635, LSM330, LSM303DLHC, LSM9DS1, LIS2DS12, BMP180
* seven-segment display model
* support for camera interfaces for nRF52840 and other platforms, along with a basic HM01B camera model
* support for sound data via PDM and I2S interfaces in nRF52840 and EOS S3
* 32-bit CSR versions of various LiteX peripherals
* ``window-height`` and ``window-width`` Renode config file options
Changed:
* ad hoc C# compilation now uses the same, bundled compiler on all OSes, also allowing for compilation in the portable Linux package
* bumped the officially supported Ubuntu version to 20.04
* added execution metrics analyzer to all Renode packages
* verilated peripherals can now also be used on Windows and on macOS
* verilated UART peripherals have updated protocol message numbers, requiring them to be recompiled to work with the latest Renode version
* moved to use openlibm instead of libm on Linux, improving portability
* GDB can now access memory across pages in a single access
* switched the unit testing framework from NUnit2 to NUnit3
* reduced the number of transitions between the C and C# code, improving performance
* improved performance of peripheral writes
* tests print the run summary at the end of the output, making it easier to spot errors
* revamped handling of the vectored interrupt mode for RISC-V cores
* RISC-V CPUs can now optionally allow for unaligned memory accesses
* updated the default privileged architecture version for VexRiscv CPU
* VexRiscv can now use standard RISC-V interrupt model
* changed the flow of NVIC interrupt handling, significantly improving performance
* STM32F7 DMA2D and LTDC now support more pixel blending modes
* reimplemented and modernized several STM32 peripherals
* improved the model of K6xF Ethernet controller
* LiteSDCard model now supports DMA interface
* EXTI controller now has a configurable number of output lines
* improved handling of dummy bytes in MPFS QSPI
Fixed:
* tests running from installed Renode packages creating output files in forbidden locations
* serialization of NetworkInterfaceTester and UARTBackend
* possible non-deterministic behavior of UART backend in tests
* occasional file sharing violation in PosixFileLocker
* Renode printing out colors when in plain mode
* non-determinism in the button model
* time drift caused by unreported virtual ticks and improper instruction counting
* crash in TermsharpProvider when running on Windows
* invalid default frequency for STM32L1
1.11.0 - 2020.10.22
-------------------
Added:
* support for generating execution metrics, covering information like executed instructions count, memory and peripheral accesses, and interrupt handling
* infrastructure for reporting supported CPU features to GDB
* tests for Icicle Kit with PolarFire SoC
* ``--debug-on-error`` option for ``renode-test`` allowing interactive debugging of failed Robot tests
* ``lastLog`` Monitor command displaying ``n`` last log messages
* ``currentTime`` monitor command with information about elapsed host and virtual time
* ``WriteLine`` UART helper method to feed strings from the Monitor or scripts
* support for non-base RISC-V instruction sets disassembly
* support for custom Robot test results listeners
* support for Python-based implementation of (stateful) custom CSRs and custom instructions in RISC-V
* option to control RISC-V CSR access validation level interactively
* dummy support for data cache flush instruction in VexRiscv
* 64-bit decrementer support in PowerPC
* nRF52840 RTC model
* STM32F4 RTC model
* STM32F4 RCC stub model
* unified timer model for STM32F4 and STM32L1 platforms
* support for ATAPI CD-ROM
* burst read support in OpenCores I2C
Changed:
* time flow settings in Icicle Kit script now ensure full determinism
* all testers (for UART, LED, network, sysbus accesses and log messages) now rely on virtual time instead of host time and accept floating point timeouts
* portable package now includes requirements.txt file
* skipped tests do not generate save files anymore
* ``Clear`` Monitor command does not remove current working directory from searched paths
* WFI handling in RISC-V is simplified, improving performance on sleepy systems
* translation block fetch logger messages are now logged with Info instead of Debug level
* Cortex-M CPUs now reports their registers to GDB
* several infrastructural changes in the PCI subsystem
* STM32L1 oscillators are now all reported as ready
Fixed:
* Renode logo appearing in UART analyzer windows when running without Monitor
* logs not being fully written out when terminating Renode
* keyboard event detection in framebuffer window when no pointer device is attached
* crash when the logger console reports width equal to 0
* crash of ad-hoc compilation on Renode portable. Note that this still requires a C# compiler to be available on the host system
* crash when connecting GDB with the first core not being connected
* occasional crash when providing incorrect CLI arguments
* invalid disassembly of 64-bit RISC-V instructions
* crash on machine reset when using custom CSRs in RISC-V
* handling of multi-byte reads in LiteX I2C model
* handling of images with unaligned size in USB pen drive
* invalid LED connections in STM32F4
1.10.1 - 2020.07.30
-------------------
This is a hotfix release overriding 1.10.0.
Fixed:
* crash on Windows when accessing high memory addresses
* installation instructions in README
1.10.0 - 2020.07.28
-------------------
Added:
* support for the PolarFire SoC-based Icicle Kit platform, with a demo running Linux
* experimental support for OpenPOWER ISA
* support for NXP K64F with UART, Ethernet and RNG
* basic support for Nordic nRF52840
* Microwatt platform, with Potato UART, running MicroPython or Zephyr
* LiteX platform with a 4-core VexRiscv in SMP
* LiteX demo running Microwatt as a CPU
* LiteX demo with VexRiscv booting Linux from the SD card
* LiteX demo with VexRiscv showing how to handle input and output via I2S
* LiteX MMCM model, I2S model and SD card controller model
* several peripheral models for QuickLogic EOS S3: ADC, SPI DMA, Packet FIFO, FFE etc
* ADXL345 accelerometer model
* PAC1934 power monitor model
* PCM encoder/decoder infrastructure for providing audio data to I2S devices
* modular network server allowing to easily add server components to the emulation without a host-to-guest connection
* built-in TFTP server module
* file backend for UARTs, allowing to send output directly to a file (``uart CreateFileBackend``)
* ``alias`` Monitor command
* ``console_log`` Monitor command to simply print to the log window without level filtering
* ``--no-gui`` build option to build without graphical dependencies
* option to define an average cycles count per instruction, to be used by CPU counters
* code formatting rules for translation libraries, to be used with Uncrustify
Changed:
* Renode is now able to be compiled with ``mcs``. This means that you can use your distribution's Mono package instead of the one provided by mono-project.com, as long as it satisfies the minimum version requirement (currently Mono 5.2)
* the default log level is now set to ``INFO`` instead of ``DEBUG``
* all PolarFire SoC peripherals are now renamed from PSE_* to MPFS_*, to follow Microchip's naming pattern
* major rework of the SD card model, along with the added SPI interface
* RI5CY core can now be created with or without FPU support
* STM32 and SAM E70 platforms now have verified ``priorityMask`` in NVIC
* Cortex-M based platforms can now be reset by writing to NVIC
* easy way to update timer values between synchronization phases, significantly improving the performance of polling on timers
* tests are now able to run in parallel, using the ``-j`` switch in the testing script execution
* the pattern for download links in scripts for binaries hosted by Antmicro has been changed
* portable package now includes testing infrastructure and sample tests
* the LLVM-based disassembly library is now rebuilt, using less space and being able to support more architectures on all host OSes
* the C++ symbol demangling now relies on a `CxxDemangler <https://github.com/southpolenator/CxxDemangler>`_ library, instead of libstdc++
* failed Robot tests will now produce snapshots allowing users to debug more easily
* SVD-based log messages on reads and writes are now more verbose
* Terminal Tester API has changed slightly, allowing for easier prompt detection, timeout control etc.
Fixed:
* crash when running tests with empty ``tests.yaml`` file
* crash when Renode is unable to find the root directory
* crash when loading broken or incompatible state snapshot with ``Load``
* several issues in the PPC architecture
* ``mstatus`` CSR behaviour when accessing FP registers in RISC-V
* PMP napot decoding in RISC-V
* evaluation of the IT-state related status codes in ARM CPUs
* invalid setting of CPUID fields in x86 guests
* PolarFire SoC platform description and various models: CAN, SPI, SD controller, etc.
* ``ODR`` register behavior in STM32F1 GPIO port
* ``State changed`` event handling in LED model
* invalid disposal of the SD card model, possibly leading to filesystem sharing violations
* some cursor manipulation commands in TermSharp
* performance issues when hitting breakpoints with GDB
* on the fly compilation of "*.cs" files in the portable Renode package
* Mono Framework version detection
* upgrading Renode version on Windows when installed using the ``msi`` package
* error message when quitting Renode on Windows
* running tests from binary packages
* support for testing in Conda Renode package
* other various fixes in Conda package building
1.9.0 - 2020.03.10
------------------
Breaking changes:
* the Renode configuration directory was moved to another location.
The directory is moved from ``~/.renode`` on Unix-like systems and ``Documents`` on Windows to
``~/.config/renode`` and ``AppData\Roaming\renode`` respectively. To use your previous settings
and Monitor history, please start Renode 1.9 and copy your old config folder over the new one.
Added:
* support for RISC-V Privileged Architecture 1.11
* EOS S3 platform, with QuickFeather and Qomu boards support
* EFR32MG13 platform support
* Zolertia Firefly dual radio (CC2538/CC1200) platform support
* Kendryte K210 platform support
* NeTV2 with LiteX and VexRiscv platform support
* EFR32 timer and gpcrc models
* CC2538 GPIO controller and SSI models
* CC1200 radio model
* MAX3421E USB controller model
* LiteX SoC controller model
* support for Wishbone bus in verilated peripherals, exemplified with the ``riscv_verilated_liteuart.resc`` sample
* one-shot mode in AutoRepaintingVideo allowing display models to control when they are refreshed
* ``GetItState`` for ARM Cortex-M cores allowing to verify the current status of the IT block
* scripts to create Conda packages for Linux, Windows and macOS
* requirements.txt with Python dependencies to simplify the compilation process
* configuration option to collapse repeated lines in the log - turn it to false if you observe strange behavior of the log output
Changed:
* VexRiscv now supports Supervisor level interrupts, following latest changes to this core
* PolarFire SoC script now has a sample binary, running FreeRTOS with LwIP stack
* the output of Robot test is now upgraded to clearly indicate time of execution
* NetworkInterfaceKeywords now support wireless communication
* exposed several RISC-V registers to the Monitor
* VerilatedUART now supports interrupts
* tests file format was changed to yaml, thus changing tests.txt to tests.yaml
* test.sh can now run NUnit tests in parallel
* ``./build.sh -p`` will no longer build the portable Linux package as it requires a very specific Mono version
* path to ``ar`` can now be specified in the properties file before building
* MinGW libraries are now compiled in statically, significantly reducing the Windows package size
Fixed:
* crash when trying to set the underlying model for verilated peripheral in REPL
* crash when copying data from the terminal to clipboard on Windows
* crash on loading missing FDT file
* crash when starting the GDB server before loading the platform
* handling of very long commands via GDB
* improper window positioning when running on Windows with a display scaling enabled
* exception reporting from running CPUs
* flushing of closing LoggingUartAnalyzer
* icon installation on Fedora
* rebuilding translation libraries when only a header is changed
* macOS run scripts bundled in packages
* priority level handling in NVIC
* COUNTFLAG handling in NVIC
* several improvements in Cadence GEM frame handling
* FastRead operations in Micron MT25Q flash
* PolarFire SoC Watchdog forbidden range handling
* offset calculation on byte accesses in NS16550 model
* interrupt handling in PolarFire SoC QSPI model
* connected pins state readout in PolarFire SoC GPIO model
* several fixes in HiFive SPI model
* page latch alignment in PolarFire SoC
1.8.2 - 2019.11.12
------------------
Added:
* a sample running HiFive Unleashed with Fomu running Foboot, connected via USB
* a sample running MicroPython on LiteX with VexRiscv
* vectored interrupts support in RISC-V
* ``pythonEngine`` variable is now availalbe in Python scripting
Changed:
* Renode now requires Mono 5.20 on Linux and macOS
* USB setup packets are now handled asynchronously, allowing more advanced processing on the USB device side
* additional flash sizes for Micron MT25Q
* LiteX_Ethernet has a constant size now
Fixed:
* problem with halting cores in GDB support layer when hitting a breakpoint - GDB works in a proper all-stop mode now
1.8.1 - 2019.10.09
------------------
Added:
* LiteX with VexRiscv configuration running Zephyr
* USB/IP Server for attaching Renode peripherals as a USB device to host
* optional NMI support in RISC-V
* flash controller for EFR32
* I2C controller for LiteX
* SPI controller for PicoRV
* framebuffer controller for LiteX
* USB keyboard model
Changed:
* ``-e`` parameter for commands executed at startup can be provided multiple times
* ``polarfire`` platform is now renamed to ``polarfire-soc``
* style of Robot Framework result files
* MT25Q flash backend has changed from file to memory, allowing software to execute directly from it
* improved LiteX on Fomu platform
* terminals based on sockets now accept reconnections from clients
Fixed:
* ``Bad IL`` exceptions when running on Mono 6.4
1.8.0 - 2019.09.02
------------------
Added:
* support for RI5CY core and the VEGA board
* UART and timer models for RI5CY
* support for Minerva, a 32-bit RISC-V soft CPU
* LiteX with Minerva platform
* LiteX with VexRiscv on Arty platform
* SPI, Control and Status, SPI Flash and GPIO port peripheral models for LiteX
* PSE_PDMA peripheral model for the PolarFire SoC platform
* basic slave mode support in PSE_I2C
* EtherBone bridge model to connect Renode with FPGA via EtherBone
* EtherBone bridge demo on Fomu
* RTCC and GPCRC peripheral models for EFR32
* support for deep sleep on Cortex-M cores
* option of bundling Renode as an ELF executable on Linux
Changed:
* GDB server is now started from the ``machine`` level instead of ``cpu`` and is able to handle multiple cores at once
* renamed ``SetLossRangeWirelessFunction`` to ``SetRangeLossWirelessFunction``
* LiteX Ethernet now supports the MDIO interface
* updated memory map for several EFR32 platforms
* changed the interrupt handling of EFR32_USART
* several changes in Ethernet PHY
* switch is now started immediately after creation
* the Monitor (and other mechanisms) now uses caching, increasing its performance
* Robot tests are now part of packages
* Robot tests no longer cause the Monitor telnet server to start automatically
* REPL files now accept multiline strings delimited with triple apostrophe
* UART analyzers are writing to the Renode log when running from Robot
* simplified command line switches for running Robot tests
* some Robot keywords (e.g. ``LogToFile``) are not saved between related tests
Fixed:
* compilation of verilated peripheral classes in Windows (backported to 1.7.1 package)
* determinism of SAM E70 tests
* crash when using ``logLevel`` command with ``--hide-log`` switch
* ad-hoc compiler behavior in Windows
* crash on too short Ethernet packets
* byte read behavior in NS16550
* auto update behavior of PSE_Timer
* connection mode when running the Monitor via telnet
* deserialization of ``SerializableStreamView``
* crash when completing interrupts in PLIC when no interrupt is pending
* Renode startup position on Windows with desktop scaling enabled
* fence.* operation decoding in RISC-V
* invalid size reported by SD card
* crash when trying to set the same log file twice
* compilation issues on GCC 9
1.7.1 - 2019.05.15
------------------
Added:
* integration layer for Verilator
* base infrastructure for verilated peripherals
* base class for verilated UARTs, with analyzer support
* Linux on LiteX with VexRiscv demo
Changed:
* RISC-V CPUs now don't need CLINT in their constructor, but will accept any abstract time provider
* updated LiteX with PicoRV32 and LiteX with VexRiscv platform
Fixed:
* sharing violation when trying to run downloaded files
1.7.0 - 2019.05.02
------------------
Added:
* PicoRV32 CPU
* LiteX platform with PicoRV32
* LiteX timer and ethernet (LiteEth) model
* Murax SoC with UART, timer and GPIO controller models
* Fomu target support with LiteX and VexRiscv
* SAM E70 Xplained platform with USART, TRNG and ethernet controller models
* STM32F4 Random Number Generator model
* PSE watchdog model
* PTP support in Cadence GEM ethernet model, along with several fixes
* option to execute CPUs in serial instead of parallel
* support for custom instructions in RISC-V
* ``empty`` keyword in REPL
* graphical display analyzer support on Windows
* multi-target GPIO support, along with the new REPL syntax
* local interrupts in PolarFire SoC platform
* option to pass variables to Robot tests via test.sh
* some SiFive FU540 tests
* network interface tester for Robot tests
* tests for PTP implementation in Zephyr
Changed:
* Micron MT25Q is now able to use file as a backend and does not need to have a separate memory provided in REPL
* Micron MT25Q now has selectable endianess
* ``logFile`` command will now create a copy of the previous log before overwriting it
* ``sysbus LogPeripheralAccess`` will now add the active CPU name and current PC to log messages
* single-stepping of a CPU is now easier, it requires only a single call to ``cpu Step`` on a paused CPU
* NVIC reload value is now 24-bit
* reimplemented the STM32_UART model
* updated the PolarFire SoC memory map
* updated the SiFive FU540 memory map
* ``GetClockSourceInfo`` will now display the name of the timer
* Termsharp will no longer print the NULL character
* RISC-V cores will now abort when trying to run a disabled F/D instruction
Fixed:
* handling of divider in ComparingTimer
* reporting of download progress on some Mono versions
* running Robot tests on Windows
* generation of TAP helper on newest Mono releases
* Renode crashing after opening a socket on the same port twice
* serialization of data storage structures
* architecture name reported on GDB connection for Cortex-M CPUs
* highlighting of wrapped lines in the terminal on Windows
* TAB completion in the Monitor on Windows
* RNG determinism and serialization for multicore/multi-node systems
* SiFive FE310 interrupt connection
* instruction counting in RISC-V on MMU faults
* time progress in multicore systems
* fixes in MiV GPIO controller model
* several fixes and improvements in file backend storage layer
* several fixes in testing scripts
* several fixes in various LiteX peripherals
* several fixes in PSE QSPI and Micron MT25Q model
1.6.2 - 2019.01.10
------------------
Added:
* instructions on running in Docker
* --pid-file option to save Renode's process ID to a file
Changed:
* RISC-V X0 register is now protected from being written from the Monitor
* Renode will now close when it receives a signal from the environment (e.g. Ctrl+C from the console window)
* invalid instructions in RISC-V will no longer lead to CPU abort - an exception will be issued instead, to be handled by the guest software
* Robot tests will now log more
Fixed:
* formatting of symbol logging
* error reporting in Robot tests using the ``Requires`` keyword
* Microsemi's Mi-V CPU description
1.6.1 - 2019.01.02
------------------
Added:
* CC2538 Flash Controller
* ECB mode for CC2538 Cryptoprocessor
Changed:
* unhandled read/write logs are now decorated with the CPU name instead of the number
* message acknowledge logic on PolarFire CAN controller
Fixed:
* race condition in PromptTerminal used by the Robot Framework
* Monitor socket not opening in certain situations
* unaligned accesses in RISC-V not setting the proper badaddr value
* handling of data exceeding the maximum packet size of USB endpoint
* memory map and CPU definition for SiFive FE310
* out of bounds access when using Ctrl+R with wrapped lines in the Monitor
1.6.0 - 2018.11.21
------------------
Added:
* new USB infrastructure
* new PCI infrastructure
* PolarFire SoC platform support
* atomic instructions on RISC-V
* basic PicoSoC support - the picorv32 CPU and UART
* block-finished event infrastructure - verified on RISC-V and ARM cores
* more PSE peripherals: RTC, PCIe controller, USB controller, QSPI, CAN, etc
* Micron MT25Q flash model
* ``watch`` command to run Monitor commands periodically
* a message on the Monitor when quitting Renode
* qXfer support for GDB, allowing the client to autodetect the architecture
* log tester for Robot Framework
Changed:
* added error handling for uninitialized IRQ objects in REPL loading
* RISC-V CSR registers are now accessible in relevant privilege architecture version only
* RISC-V CPUs no longer require CLINT provided as a constructor parameter
* added second timer interrupt to PSE_Timer
* machine.GetClockSourceInfo now prints the current value for each clock entry
* REPL loading tests are now in Robot
* value provider callbacks on write-only fields will generate exceptions
* watchpoint handling infrastructure
* reworked single stepping
* Monitor errors are forwarded to the GDB client when issuing qRcmd
* LoadELF command initializes PC on all cores by default
* reduced the default synchronization quantum
* CPU abort now halts the emulation
* --disable-xwt no longer requires opening a port
* RISC-V atomic instructions now fail if the A instruction set is not enabled
Fixed:
* pausing and halting the CPU from hooks
* error when trying to TAB-complete nonexisting paths
* packaging script on Windows
* crash on extremely narrow Terminal on Windows
* inconsistent cursor position when erasing in Termsharp
* selection of multibyte UTF characters on Linux
* scrollbar behavior on Windows
* error reporting from executed commands in Robot
* RISC-V cores reset
* several fixes in time framework
* output pin handling and interrupt clearing in PSE_GPIO
* minor fixes in PSE_SPI
* throwing invalid instruction exception on wrong CSR access in RISC-V
* CPU abort will now stop the failing CPU
1.5.0 - 2018.10.03
------------------
Added:
* custom CSR registers in RISC-V
* VexRiscv CPU
* basic LiteX platform with VexRiscv
* LiteX VexRiscv demo with Zephyr
* single and multinode CC2538 demos with Contiki-NG
* PSE peripherals
* several tests for demos and internal mechanisms
* base classes for bus peripherals, allowing for easier definition of registers
Changed:
* installation instructions in README
* the target .NET version changed to 4.5 reducing the number of dependencies
* forced mono64 on macOS
* renamed the multinode demos directory
* RISC-V CPUs now generate an exception on unaligned memory reads and writes
* CLINT is now optional for RISC-V CPUs
* reimplemented FileStreamLimitWrapper
Fixed:
* first line blinking in terminal on Windows
* performance fixes in function logging
* handling of broken CSI codes in Termsharp
* completely removed the GTK dependency on Windows
* handling of CheckIfUartIsIdle Robot keyword
* resetting of RISC-V-based platforms
* prevented a rare crash on disposing multicore platforms when using hooks
* handling of unsupported characters in Robot protocol
* Windows installer correctly finds the previous Renode installation (may require manual deinstallation of the previous version)
* compilation of translation libraries on Windows is no longer forced on every Renode recompilation
1.4.2 - 2018.07.27
------------------
Added:
* debug mode in RISC-V, masking interrupts and ignoring WFI when connected via GDB
* installer file for Windows
* GPIO controller for STM32F103, with other improvements to the platform file
* PWM, I2C and SPI peripherals for HiFive Unleashed
* tests for HiFive Unleashed
* configuration option to always add machine name in logs
* test scripts when installing Renode from a package on Linux
Changed:
* changed gksu dependency to pkexec, as Ubuntu does not provide gksu anymore
* virtual time of machines created after some time is synchronized with other machines
* improved Vector Table Offset guessing when loading ELF files on ARM Cortex-M CPUs
* extended capabilities of some Robot keywords
* changed the way peripheral names are resolved in logs, so that they don't disappear when removing the emulation
Fixed:
* support for writing 64-bit registers from GDB
* crash when trying to connect to a nonexisting interrupt
* GDB access to Cortex-M registers
* some fixes in EFR32_USART
1.4.1 - 2018.06.28
------------------
Added:
* AXI UART Lite model
Changed:
* event dispatching on WPF on Windows
Fixed:
* an error in handling of generated code on Windows, causing the emulated application to misbehave
* font loading and default font size on Windows
1.4.0 - 2018.06.22
------------------
Added:
* support for RISC-V Privileged Architecture 1.10
* 64-bit RISC-V target emulation
* support for HiFive Unleashed platform
* support for SiFive Freedom E310 platform
* new way of handling time progression and synchronization in the whole framework
* support for 64-bit registers
* basic support for a range of SiLabs EFM32, EFR32 and EZR32 MCUs
* several new Robot keywords
* Wireshark support for macOS
Changed:
* Windows runs a 64-bit version of Renode
* 32-bit host OSes are no longer supported
* Robot tests can now be marked as OS-specific or ignored
* improvements in CC2538 radio model
* enum values in REPL files can now be provided as integers
* updated interrupt model in RISC-V
* MaximumBlockSize is no longer forced to 1 when starting GDB server
Fixed:
* several fixes in REPL grammar
* fixes in Robot test handling
* fixes in GDB watchpoints and breakpoints
* few other fixes in GDB integration layer
* floating point operations in RISC-V
* atomic operations in RISC-V
* high CPU usage when loading many nodes at the same time
* deserialization of the UART windows
* symbol names caching when loading new symbol files
* several minor fixes in different platform files
1.3.0 - 2018.01.26
------------------
Added:
* EmulationEnvironment - a mechanism to handle sensor data in a centralized way
* test for loading REPL files
* several registers and commands in CC2538RF
* SCSS device for QuarkC1000 platform
* sample scripts with two nodes running a Zephyr demo
Changed:
* ComparingTimer and LimitTimer are now more similar in terms of API
* macOS runs a 64-bit version of Renode
* changed Arduino 101 with CC2520 board to Quark C1000 devkit
* improvements in RISC-V interrupt handling
* current working directory is now always a part of Monitor's default path
Fixed:
* crash when closing Renode with Wireshark enabled but not yet started
* handling of timer events for a specific timer configuration
* implementation of LED tester
* starting Robot on Windows without administrative privileges
* terminal state after running Robot tests
* improper timer initialization in RISC-V's CoreLevelInterruptor
* text highlighting in wrapped lines in terminal windows
1.2.0 - 2017.11.15
------------------
Added:
* support for RISC-V architecture
* support for Microsemi Mi-V platform
* thin OpenOCD layer in GDB remote protocol support
Changed:
* timers can now hold values up to 64 bits
* ``Button`` peripheral can now have inverted logic
* GDB server can be configured to autostart after the first "monitor halt" received
Fixed:
* translation cache invalidation on manual writes to memory
* reset of ``LimitTimer`` peripheral, which is the base for most of the supported timers
1.1.0 - 2017.11.14
------------------
Added:
* sample scripts for different platforms
* support for running Renode on Windows
* EFR32MG cpu support. For the list of peripherals, see efr32mg.repl
* more robust support for SVD files
* support for '\n -> \r\n' patching in Termsharp console windows
* support for font configuration in Termsharp
* support for CRC in Ethernet
* packaging scripts
Changed:
* API for UART-related keywords in Robot Framework integration layer
* the project infrastructure now supports C# 7.0
* directory organization
Fixed:
* several minor fixes in platform description format (.repl)
* bug where Renode hanged after issuing the "help" command in the Monitor
1.0.0 - 2017.06.13
------------------
This is the initial release of Renode.
Renode is a virtual development and testing tool for multinode embedded networks.
For more information please visit `<https://www.renode.io>`_.