This page aims to be a step-by-step guide to help people who are unfamiliar with the ROM build system to build their first ROM image.
RISC OS uses ROM images that are customised to different machine types. Use the table below to work out which “product” you need to use to build a ROM that’s suitable for a particular machine.
Product | Builds a ROM suitable for… |
---|---|
BCM2835 | Any official Raspberry Pi model |
iMx6 | Wandboard, ARMX6, and other iMX6-based machines |
IOMD | RiscPC, A7000(+), RPCEmu |
OMAP3 | BeagleBoard, ARMini and other OMAP3-based machines |
OMAP4 | PandaBoard, ARMiniX and other OMAP4-based machines |
OMAP5 | IGEPv5, RapidO-Ig, and other OMAP5-based machines |
Titanium | RapidO-Ti, TiMachine and other Titanium-based machines |
Tungsten | Iyonix |
There is also a “Disc” product, for building the base hard disc image; see the notes at the bottom of this page for the extra steps necessary to build that.
$ git clone https://gitlab.riscosopen.org/Products/BCM2835.gitThis will clone the repository into a new folder (“BCM2835”). Note that if you have a gitlab account, you’ll probably want to use the SSH URL instead, as SSH is typically more convenient if you’re going to be pushing/submitting changes later on.
$ cd BCM2835 $ git submodule update --init --remote(Note the use of the ‘—remote’ option to make sure each submodule is updated to point to the latest development code)
OS developers will often want to customise the ROM images they build, e.g. to enable debug output for particular modules, or to enable the debug serial terminal. Customising the ROM in this way is somewhat beyond the scope of this document, so please take any questions you have to the forums.
Building the disc image differs from building a ROM image in two ways:
Note also that the disc image is created as a set of separate files, which should be installed by copying them to a blank hard disc/SD card under RISC OS. Additional tools are required if you want to create an image file which can be written to a disc by ‘dd’, Win32DiskImager, etc.
If you’ve got an existing clone of a repository, in most cases you can just execute git pull && git submodule update --init --remote
in order to fetch the latest changes from git. Creating a fresh clone of the repository every time you want to update is discouraged as it will consume a lot more of ROOL’s bandwidth than an incremental pull & update.
Get in touch with ROOL, they can provide gitlab accounts to those who need it.