Bennett/Requirements

From Engineering Wiki
Revision as of 14:01, 2 March 2021 by Mbasscp2 (talk | contribs)
Jump to navigation Jump to search

Base Requirements

  • Multiplatform (Linux/Windows. Mac if possible, but has serious challenges)
  • Needs to support different different architectures: ARM, RISC-V, [others]
    • Needs to be configurable to 8, 16, 24, 32, or 64 bit architecture
    • Needs to support different memory models, different register configurations, etc
    • Needs be able to work with simulators, or to communicate with a lab board
  • Display of CPU registers (which registers are available will depend on architecture)
  • Display of Status Flags (which flags are available will depend on architecture)
  • Memory view, with optional disassembly.
    • View should be configurable to show memory in different ways: single word, multiple words, ascii characters, disassembly (word size and disassembly will depend on architecture) and if an address matches the value in a register, the register name should be highlighted next to that address.
  • Multiple memory views need to be available, and individually configurable.
  • Breakpoints (stop on PC reaching memory address)
  • Watchpoint (stop on value at address being changed/set to value)
  • CPU controls: step [single, multiple], run, reset - is continue just another form of 'run'?
  • Output console for
  • Needs to be extensible to support different simulated memory-mapped peripherals. Peripherals separate from architecture?
  • avoid using linux-specific mechanisms for IPC: sockets instead of pipes, for example. Dynamic loading of extensions will need thought.

Extras

  • Compilers/assemblers for target architectures
    • GNU as (GAS) (part of the gcc suite) will target almost any architecture, but may not produce useful file types (MU0 support is curiously absent, for example)
    • Writing an actual assembler is possible but nontrivial. Are there real reasons not to use GAS (mingw under Windows)? Would they function as stopgaps in the short-term?