[RFC v3 0/1] Implement AVR WDT (watchdog timer)

Michael Rolnik posted 1 patch 2 years, 11 months ago
Test checkpatch passed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20210515220957.13053-1-mrolnik@gmail.com
MAINTAINERS                   |   2 +
hw/avr/Kconfig                |   1 +
hw/avr/atmega.c               |  15 +-
hw/avr/atmega.h               |   2 +
hw/watchdog/Kconfig           |   3 +
hw/watchdog/avr_wdt.c         | 279 ++++++++++++++++++++++++++++++++++
hw/watchdog/meson.build       |   2 +
hw/watchdog/trace-events      |   5 +
include/hw/watchdog/avr_wdt.h |  47 ++++++
target/avr/cpu.c              |   3 +
target/avr/cpu.h              |   1 +
target/avr/helper.c           |   7 +-
target/avr/translate.c        |  58 ++++++-
13 files changed, 419 insertions(+), 6 deletions(-)
create mode 100644 hw/watchdog/avr_wdt.c
create mode 100644 include/hw/watchdog/avr_wdt.h
[RFC v3 0/1] Implement AVR WDT (watchdog timer)
Posted by Michael Rolnik 2 years, 11 months ago
1.  Initial implementation of AVR WDT
    There are two issues with this implementation so I need your help here
    a. when I configure the WDT to fire an interrupt every 15ms it actually happens every 6 instructions
    b. when I specify --icount shift=0 qemu stucks

changes since v1
1.  correct RW or RW1C behavior is implemented
2.  icount functionality is fixed
3.  I still observe something strange, it takes AVR 150 instructions to simulate 15ms

changes since v2
1.  use REG8 & FIELD macros to define registers
2.  fixing ICOUNT behavior

*** BLURB HERE ***

Michael Rolnik (1):
  Implement AVR watchdog timer

 MAINTAINERS                   |   2 +
 hw/avr/Kconfig                |   1 +
 hw/avr/atmega.c               |  15 +-
 hw/avr/atmega.h               |   2 +
 hw/watchdog/Kconfig           |   3 +
 hw/watchdog/avr_wdt.c         | 279 ++++++++++++++++++++++++++++++++++
 hw/watchdog/meson.build       |   2 +
 hw/watchdog/trace-events      |   5 +
 include/hw/watchdog/avr_wdt.h |  47 ++++++
 target/avr/cpu.c              |   3 +
 target/avr/cpu.h              |   1 +
 target/avr/helper.c           |   7 +-
 target/avr/translate.c        |  58 ++++++-
 13 files changed, 419 insertions(+), 6 deletions(-)
 create mode 100644 hw/watchdog/avr_wdt.c
 create mode 100644 include/hw/watchdog/avr_wdt.h

-- 
2.25.1


Re: [RFC v3 0/1] Implement AVR WDT (watchdog timer)
Posted by Michael Rolnik 2 years, 10 months ago
ping

On Sun, May 16, 2021 at 1:10 AM Michael Rolnik <mrolnik@gmail.com> wrote:

> 1.  Initial implementation of AVR WDT
>     There are two issues with this implementation so I need your help here
>     a. when I configure the WDT to fire an interrupt every 15ms it
> actually happens every 6 instructions
>     b. when I specify --icount shift=0 qemu stucks
>
> changes since v1
> 1.  correct RW or RW1C behavior is implemented
> 2.  icount functionality is fixed
> 3.  I still observe something strange, it takes AVR 150 instructions to
> simulate 15ms
>
> changes since v2
> 1.  use REG8 & FIELD macros to define registers
> 2.  fixing ICOUNT behavior
>
> *** BLURB HERE ***
>
> Michael Rolnik (1):
>   Implement AVR watchdog timer
>
>  MAINTAINERS                   |   2 +
>  hw/avr/Kconfig                |   1 +
>  hw/avr/atmega.c               |  15 +-
>  hw/avr/atmega.h               |   2 +
>  hw/watchdog/Kconfig           |   3 +
>  hw/watchdog/avr_wdt.c         | 279 ++++++++++++++++++++++++++++++++++
>  hw/watchdog/meson.build       |   2 +
>  hw/watchdog/trace-events      |   5 +
>  include/hw/watchdog/avr_wdt.h |  47 ++++++
>  target/avr/cpu.c              |   3 +
>  target/avr/cpu.h              |   1 +
>  target/avr/helper.c           |   7 +-
>  target/avr/translate.c        |  58 ++++++-
>  13 files changed, 419 insertions(+), 6 deletions(-)
>  create mode 100644 hw/watchdog/avr_wdt.c
>  create mode 100644 include/hw/watchdog/avr_wdt.h
>
> --
> 2.25.1
>
>

-- 
Best Regards,
Michael Rolnik