Class ArchXT_NVM
Defined in File arch_xt_nvm.h
Nested Relationships
Nested Types
Inheritance Relationships
Base Types
public Peripheral(Class Peripheral)public SignalHook(Class SignalHook)
Class Documentation
-
class ArchXT_NVM : public Peripheral, public SignalHook
Implementation of a NVM controller for Mega0/Mega1 series.
Limitations:
The Configuration Change Protection for SPM registers has no effect
CTLREQs supported:
AVR_CTLREQ_NVM_REQUEST : Used internally when the CPU writes to a data space address mapped to a NVM block. Used to redirect the write to the page buffer.
Public Functions
-
explicit ArchXT_NVM(const ArchXT_NVMConfig &config)
-
virtual ~ArchXT_NVM()
-
virtual bool init(Device &device) override
Virtual method called when the device is initialised. This is where the peripheral can allocate its I/O registers, interrupts or connect signals.
- Returns:
boolean indicates the success of all allocations.
-
virtual void reset() override
Virtual method called when the device is reset. Note that resetting I/O registers is only necessary here if their reset value is not zero.
-
virtual bool ctlreq(ctlreq_id_t req, ctlreq_data_t *data) override
Virtual method called for a CTL request. The method must return true if the request has been processed.
-
virtual void ioreg_write_handler(reg_addr_t addr, const ioreg_write_t &data) override
Virtual method called when the CPU is writing a I/O register allocated by this peripheral. The value has already been written.
- Parameters:
addr – the register address in I/O space
value – the new register content
-
virtual void raised(const signal_data_t &sigdata, int hooktag) override
Pure virtual callback called during signal raises.
- Parameters:
sigdata – Data structure passed on when raising a signal
hooktag – integer passed on when connecting a hook to a signal. For hooks connected to several signals, it provides a mean to identify the caller.
-
class Timer : public CycleTimer
Public Functions
-
inline Timer(ArchXT_NVM &ctl)
-
inline virtual cycle_count_t next(cycle_count_t when) override
Callback from the cycle loop.
Note
there’s no guarantee the method will be called exactly on the required ‘when’ cycle. The only guarantee is “called ‘when’ <= ‘current cycle’”, the implementations must account for this.
Note
The next ‘when’ can be in the ‘past’ (i.e. <= ‘current cycle’). In this case, the timer will be called again within the same cycle with the given next ‘when’. The only constraint is that it must be greater than the previous ‘when’. If it’s negative or zero, the timer is removed from the queue.
- Parameters:
when – current ‘when’ cycle, at which the timer was scheduled
- Returns:
the next ‘when’ the timer requires to be called at.
-
inline Timer(ArchXT_NVM &ctl)