HowToDevelopForTheMist - mist-devel/mist-board GitHub Wiki

The MiST board will always be a work in progress as support for new cores and new target platforms is being added. All code and all tools required to work on the MiST board are free.

Tutorials

A full set of tutorials is available in the tutorial branch of the repository.

Development hardware

The only thing you'll unfortunately have to pay for is the board itself which we've tried to keep as cheap as possible. But the board itself is a must. There are no simulators or similar for the board.

See TheBoard for a detailed view of the connectors being used.

Some additional hardware may be handy during development:

  • A TTL UART USB converter can be connected to the 4 pin header SV3 right to the SD card slot. This serial port carries debug output of the ARM IO controller at 115200/8N1
  • A ARM JTAG cable (tested with Olimex ARM-USB-Tiny-H) can be connected to SV4 to be used to flash the ARM controller directly speeding up turn around times significantly
  • A Altera Byte Blaster USB cable (tested with various cheap china clones, although some of them only worked under Windows) can be connected to SV1 allowing for fast FPGA upload and advanced FPGA debugging

For more information on using a Byte Blaster see the Using A Byte Blaster.

https://raw.githubusercontent.com/wiki/mist-devel/mist-board/adapters.jpg

IO controller vs. FPGA development

There are two main devices that drive the MiST board:

  • The IO controller is a normal ARM CPU and is running ordinary software. It is mainly used for for IO (hence the name) and e.g. talks to the USB ports as well as the SD card and the joysticks
  • The FPGA is doing 90% of the magic and implements the hardware of the targets

As a rule of thumb: Working on IO features mainly happens on the IO controller. Examples are:

  • Support for new USB devices (e.g. game pads and memory sticks)
  • Support for new SD card types, new file systems etc
  • Keyboard mappings
  • Mouse settings
  • On Screen Display (except the OSD video signal generation itself)

All issues regarding the target core happen on the the FPGA. Examples are:

  • Fixing of target bugs (e.g. mis-implemented hardware preventing certain software from running)
  • Video display
  • Audio output
  • Additional target features (e.g. new target chipsets like STE/AGA)
  • Speedups (Memory caches, fast RAM interfaces, faster target CPU)

And there are things that affect both components equally. Examples are:

  • Floppy and harddisk emulation
  • FPGA configuation

Firmware development

The tools required for firmware development are described here.

https://raw.githubusercontent.com/wiki/mist-devel/mist-board/firmware.png

Core development

The tools required for core development are described here.

A lot of examples are available to get you started and to introduce all major functions of the MiST.

Debugging the core

Signaltap:

https://raw.githubusercontent.com/wiki/mist-devel/mist-board/signaltap_1.jpg

https://raw.githubusercontent.com/wiki/mist-devel/mist-board/signaltap_2.jpg