[unicorn-engine] Cortex-M Interrupts, also Thread Safety

  • From: Brian Henning <lotharyx@xxxxxxxxx>
  • To: unicorn-engine@xxxxxxxxxxxxx
  • Date: Tue, 18 Jun 2019 17:06:45 -0400

Hi,

Unicorn is great and I've received good help from this list previously.  So
here I am again. :-)

I'm using Unicorn to emulate Cortex-M firmware.  It's working very well;
only, the code depends on certain hardware-generated interrupts.  Is it
possible to cause Unicorn to perform a hardware-triggered interrupt?  In
particular, I need to trigger the Cortex-M's SysTick interrupt.  Ideally,
the emulator would service the SysTick feature of the core itself, but I
don't mind having to do something externally to trigger any given interrupt.

I'm still poking around trying to figure it out myself, but I thought I'd
pose the question here as well.  How can I exert control over hardware
interrupts with Unicorn?  Since the Cortex-M holds all its NVIC registers
in the 0xE0000000 page, maybe I could externally write something into those
locations (as seen by Unicorn having mapped memory to that region).

As an aside, how does Unicorn fare when it comes to being thread-safe?  Any
external solution to generating hardware interrupts would have to be in a
separate thread from the one blocked on uc_emu_start(..)..

Cheers,
-Brian

Other related posts:

  • » [unicorn-engine] Cortex-M Interrupts, also Thread Safety - Brian Henning