123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131 |
- 1. MEC and ERC32 emulation
- The file 'erc32.c' contains a model of the MEC, 512 K rom and 4 M ram.
- The following paragraphs outline the implemented MEC functions.
- 1.1 UARTs
- The UARTs are connected to two pseudo-devices, /dev/ttypc and /dev/ttypd.
- The following registers are implemeted:
- - UART A RX and TX register (0x01f800e0)
- - UART B RX and TX register (0x01f800e4)
- - UART status register (0x01f800e8)
- To speed up simulation, the UARTs operate at approximately 115200 baud.
- The UARTs generate interrupt 4 and 5 after each received or transmitted
- character. The error interrupt is generated if overflow occurs - other
- errors cannot occure.
- 1.2 Real-time clock and general pupose timer A
- The following registers are implemeted:
- - Real-time clock timer (0x01f80080, read-only)
- - Real-time clock scaler program register (0x01f80084, write-only)
- - Real-time clock counter program register (0x01f80080, write-only)
- - Genearl pupose timer (0x01f80088, read-only)
- - Real-time clock scaler program register (0x01f8008c, write-only)
- - General purpose timer counter prog. register (0x01f80088, write-only)
- - Timer control register (0x01f80098, write-only)
- 1.3 Interrupt controller
- The interrupt controller is implemented as in the MEC specification with
- the exception of the interrupt shape register. Since external interrupts
- are not possible, the interrupt shape register is not implemented. The
- only internal interrupts that are generated are the real-time clock,
- the general purpose timer and UARTs. However, all 15 interrupts
- can be tested via the interrupt force register.
- The following registers are implemeted:
- - Interrupt pending register (0x01f80048, read-only)
- - Interrupt mask register (0x01f8004c, read-write)
- - Interrupt clear register (0x01f80050, write-only)
- - Interrupt force register (0x01f80054, read-write)
- 1.4 Breakpoint and watchpoint register
- The breakpoint and watchpoint functions are implemented as in the MEC
- specification. Traps are correctly generated, and the system fault status
- register is updated accordingly. Implemeted registers are:
- - Debug control register (0x01f800c0, read-write)
- - Breakpoint register (0x01f800c4, write-only)
- - Watchpoint register (0x01f800c8, write-only)
- - System fault status register (0x01f800a0, read-write)
- - Firts failing address register (0x01f800a4, read-write)
- 1.5 Memory interface
- The following memory areas are valid for the ERC32 simulator:
- 0x00000000 - 0x00080000 ROM (512 Kbyte, loaded at start-up)
- 0x02000000 - 0x02400000 RAM (4 Mbyte, initialised to 0x0)
- 0x01f80000 - 0x01f800ff MEC registers
- Access to unimplemented MEC registers or non-existing memory will result
- in a memory exception trap. However, access to unimplemented MEC registers
- in the area 0x01f80000 - 0x01f80100 will not cause a memory exception trap.
- The written value will be stored in a register and can be read back. It
- does however not affect the function in any way.
- The memory configuartion register is used to define available memory
- in the system. The fields RSIZ and PSIZ are used to set RAM and ROM
- size, the remaining fields are not used. NOTE: after reset, the MEC
- is set to decode 4 Kbyte of ROM and 256 Kbyte of RAM. The memory
- configuration register has to be updated to reflect the available memory.
- The waitstate configuration register is used to generate waitstates.
- This register must also be updated with the correct configuration after
- reset.
- The memory protection scheme is implemented - it is enabled through bit 3
- in the MEC control register.
- The following registers are implemeted:
- - MEC control register (bit 3 only) (0x01f80000, read-write)
- - Memory control register (0x01f80010, read-write)
- - Waitstate configuration register (0x01f80018, read-write)
- - Memory access register 0 (0x01f80020, read-write)
- - Memory access register 1 (0x01f80024, read-write)
- 1.6 Watchdog
- The watchdog is implemented as in the specification. The input clock is
- always the system clock regardsless of WDCS bit in mec configuration
- register.
- The following registers are implemeted:
-
- - Watchdog program and acknowledge register (0x01f80060, write-only)
- - Watchdog trap door set register (0x01f80064, write-only)
- 1.7 Software reset register
- Implemented as in the specification (0x01f800004, write-only).
- 1.8 Power-down mode
- The power-down register (0x01f800008) is implemented as in the specification.
- However, if the simulator event queue is empty, power-down mode is not
- entered since no interrupt would be generated to exit from the mode. A
- Ctrl-C in the simulator window will exit the power-down mode.
- 1.9 MEC control register
- The following bits are implemented in the MEC control register:
- Bit Name Function
- 0 PRD Power-down mode enable
- 1 SWR Soft reset enable
- 3 APR Access protection enable
|