Showing changes from revision #31 to #32:
Added | Removed | Changed
This page documents the current state of the in-progress attempt to port the shared-source RISC OS to the new ARM Cortex-A8 based processors. The code is available in CVS as the ‘OMAP3Dev’ product. At present the port consists of a HAL targetting TI’s OMAP3530 SoC, as well as a modified RISC OS kernel intended to support all Cortex-A8 implementations.
Current hardware known to use the OMAP3530 SoC, with which this RISC OS port will most likely be compatible, include the BeagleBoard, Pandora, Touch Book, and DevKit8000. Two variants of QEMU are also known to emulate the OMAP3530, and can be made compatible with RISC OS with some simple patches: QEMU-OMAP3 and Maemo QEMU
This table lists the current state of all planned tasks.
Task | Description/Status | Assigned to |
---|---|---|
OMAP3 HAL – Basic implementation | Implementation is complete and functional under qemu/beagleboard. However further work may still be needed. | Jeffrey Lee, Uwe Kall |
OMAP3 HAL Video driver? | Functional, but further work is needed to iron out bugs and improve capabilities. | See linked page |
OMAP3 HAL – Audio driver | Unassigned | – |
OMAP3 HAL – SD/MMC support | – | Uwe Kall |
OMAP3 HAL – GPMC support | Support for devices connected to the GPMC controller (extra RAM, onboard NAND, etc.) | – |
OMAP3 HAL – CMOS/NVRAM support/emulation | Unassigned | – |
OMAP3 HAL – Keyboard scan at boot | Unassigned | – |
OMAP3 HAL – DMA support | Unassigned | – |
OMAP3 HAL – RTC support | Complete! | – |
Kernel – Basic support | Kernel is functional on both qemu and beagleboard. But further work may still be needed. | Jeffrey Lee |
Kernel – ARM feature registers | Extend OS_PlatformFeatures (or similar) to allow reading of ARM feature registers. Provide suitable feature register values for old ARMs that don’t implement the feature registers. | – |
VFPU support | Code to initialise VFPU. APCS amendments and compiler/OS support to allow its use by programs. New FPEmulator to provide VFPU emulation for old ARMs. Possibility of special FPEmulator that emulates old FPU instructions by executing new VFPU instructions instead of using software emulation. | – |
ARM v6/v7 instruction set support | Assembler support in BASIC, objasm and cc, and disassembler support in decaof and Debugger. Contact ROOL if you’re interested in working on objasm, cc or decaof under NDA, these are closed-source. | – |
Pandora support | Support for Pandora-specific hardware – keyboard, touchscreen, RTC, etc. | – |
Touch Book support | Support for TouchBook-specific hardware – keyboard, touchscreen, accelerometer, etc. | – |
i.MX515 support | New HAL and associated code to support Freescale’s i.MX515 Cortex-A8 implementation, which has a good chance of being used in the first ARM based netbooks to hit the (UK) market (Pegatron – Prototype, |
– |
Kernel – New video mode support | Support for video modes with new pixel formats (R5G5B5, A4R4G4B4, etc.) See here | – |
USB – OHCI | Will require an OMAP3530 board that supports OHCI (beagleboard uses an external tranceiver that only supports EHCI). In theory, only need to add HAL code to configure USB host for OHCI and to report its presence to RISC OS. | – |
USB – EHCI | Complete; believed to be fully functional. | – |
USB – OTG | In progress. |
Jeffrey Lee |
find . -name "CVS" -or -name ".cvstag" | xargs rm -rf
There are two ways to run RISC OS on a beagleboard – the easy way and the hard way.
The easy way involves placing the ROM image on a FAT-formatted SD card along with a u-boot boot script.
When you want to update the RISC OS ROM image, all you need to do is replace the ROM file on the card.
If you don’t have a suitable version of u-boot in NAND, you can update to a new one using the following steps:
There are actually three hard ways – manual booting, booting as a uImage, and booting without u-boot.
mmcinit;fatload mmc 0:1 0x80000000 riscos;go 0x80000000
A uImage is an operating system kernel with a u-boot header attached, containing information such as the load & execution address of the image, the operating system name and version contained within, etc. To boot RISC OS as a uImage, follow the following steps:
mkimage -A arm -O linux -T kernel -C none -a 0x81000000 -e 0x81000040 -n "RISC OS" -d riscos uImage.bin
When you want to upgrade your RISC OS ROM, you’ll obviously have to go through the mkimage step again. Technically this uImage could also be written to NAND and booted from there, but you’ll have to be careful with the NAND boot commands since the default only loads 4MB of data and the uImage will be slightly larger than that.
Currently the only way to boot without u-boot is to get x-loader to boot your ROM image directly. However currently there is a bug in the RISC OS video driver which will prevent video output from working unless the ROM is loaded via u-boot.
If you’ve got a ‘new’ version of x-loader in your NAND which supports automatic loading of u-boot from SD cards (e.g. x-loader version 1.4.2 or above) then all you need to do is copy the RISC OS ROM image to an SD card and name it as ‘u-boot.bin’.
If you’ve got an older version of x-loader, and don’t feel like upgrading, then you’ll have to create a bootable SD card and use that:
Note that no guarantee is made of the suitability of QEMU to run the current version of OMAP3 RISC OS. At the time of writing QEMU’s OMAP3 emulation capability is rather poor, and emulator patches and/or RISC OS source changes are required to get RISC OS running.
To make things easier, you can create a script that will build the NAND image for you:
#!/bin/bash
rm -f beagle-nand.bin
./bb_nandflash.sh x-load-bin.ift beagle-nand.bin x-loader
./bb_nandflash.sh riscos.rom beagle-nand.bin u-boot
./bb_nandflash_ecc beagle-nand.bin 0x0 0xe80000
The script will put the ‘riscos.rom’ ROM image into a NAND image, ‘beagle-nand.bin’, suitable for use by QEMU.
Get in touch with ROOL, they can provide CVS write access to those who need it. A guide should also appear on the wiki at some point.