RISC OS Open
A fast and easily customised operating system for ARM devices
ROOL
Home | News | Software | Bugs | Bounties | Forum | Documents | Photos | Contact us
Account

Cortex-A8 port status

General status

At present the port consists of three components:

  • A HAL targetting TI’s OMAP3530 system-on-chip.
  • A modified version of the RISC OS kernel containing support for Cortex-A8 CPU cores
  • Additional custom driver modules, e.g. MUSBDriver, OMAPVideo

One optional component adds some value:

  • A disc image including the boot sequence and some applications (not specific to the port, but useful in getting a viable system running)

At present the port is known to be functional on the following hardware devices:

  • BeagleBoard
  • DevKit8000
  • IGEPv2
  • BeagleBoard-xM
  • Touch Book

In the future, the port is likely to support at least the following additional devices:

  • Pandora

In the past, the port has also been used via the QEMU emulator (QEMU-OMAP3, Maemo QEMU). However it is not currently known whether QEMU’s OMAP3 emulation has reached the state where running RISC OS from within QEMU is again feasible.

There is also scope for expanding the port to support other SoC’s made by other manufacturers, e.g. the Freescale i.MX515 . For anyone considering this, refer to How to port RISC OS to new hardware.

Current status

This table lists the current state of all planned major tasks.

Task Description/Status Assigned to
OMAP3 HAL – Basic implementation Implementation is complete and functional on real hardware. However further work may still be needed. N/A
OMAP video driver Functional, but further work is needed to iron out bugs and improve capabilities. See linked page
OMAP3 HAL – Audio driver Audio output functional on beagleboard. May need minor changes for other board types. Audio input needs a proper API before the driver can be extended to support it. Unassigned
OMAP3 HAL – SD/MMC support Good progress, but still plenty to do Dave Higton, Uwe Kall
OMAP3 HAL – CMOS/NVRAM support/emulation Code for reading a CMOS file from the SD card is now in CVS. Next step: Writing! Dave Higton
OMAP3 HAL – Keyboard scan at boot Functional. Jeffrey Lee
OMAP3 HAL – DMA support Functional. Could do with further improvements being made. Unassigned
OMAP3 HAL – RTC support Working, but need to come to a consensus on how to handle nonstandard RTC batteries N/A
Kernel – Basic support Kernel is functional on real hardware. Further work is desireable to improve performance. Unassigned
Kernel – New video mode support Support for video modes with new pixel formats (R5G5B5, A4R4G4B4, etc.) See here Unassigned
VFP/NEON support – part 1 ‘VFPSupport’ module to handle VFP/NEON unit initialisation, access control, and context switching. Jeffrey Lee
VFP/NEON support – part 2 APCS amendments and compiler/OS support to allow its use by programs. Possibility of new FPEmulator to provide VFP/NEON emulation for old ARMs. Possibility of special FPEmulator that emulates old FPU instructions by executing new VFP/NEON instructions instead of using software emulation. New BASIC64 which uses VFP instead of FPA. Updated OS components to use VFP/NEON where sensible (e.g. use NEON for audio mixing in SoundDMA). Unassigned
VFP/NEON support – GCC Get VFP/NEON working with GCC 4.6 and iron out all the issues with using VFPSupport in the real world. Jeffrey Lee
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. ROOL, other
Pandora support Support for Pandora-specific hardware – keyboard, touchscreen, battery charger, etc. Unassigned
Touch Book support Support for TouchBook-specific hardware – touchscreen, accelerometer, battery charger, etc. Jeffrey Lee
Genesi Efika MX support (Freescale i.MX515) + next gen. Genesi (i.MX53) Good progress (May 2011) Michael Grunditz
USB – EHCI Complete; may be a couple of OMAP-specific bugs however. Unassigned
USB – OTG In progress. Both host & peripheral mode are now functional. Lots of work still to be done; see the MUSBDriver page for more details. Unassigned
Disc image We believe this is mostly finished. Please get in touch if you find anything missing/broken. ROOL
IGEPv2 – NIC support In beta testing. Stephen Leary
IGEPv2 – Wifi support – Stephen Leary?
DevKit8000 – NIC support DM9000 NIC driver. Stephen Leary
BeagleBoard-xM – NIC support Functional. The NIC is supported by the latest version of EtherUSB. Unassigned
SmartReflex driver Needed to allow BB-xM to safely reach 1GHz. Unassigned
Add partition support to filesystem stack Needed for the SD/MMC driver to be fully usable. See here Unassigned

Minor todo items and other miscellaneous tasks

  • Kernel
  • OMAP3 HAL
    • Soft-off/resets:
      • Soft-off is only implemented for TouchBook so far. Implementing true soft-off for other devices seems trivial (IIC write to P1_SW_EVENTS), but since most devices (or the beagleboard, at least) only wires the reset button up to the OMAP it means that there’s no way of restoring power afterwards other than turning it off and on at the wall. So may need to investigate implementing some deep sleep state instead (e.g. everything off except VDD1, and OMAP in sleep state with the reset button set as a wakeup event, which will then trigger code to perform a soft reset upon wakeup)
    • IIC driver needs updating to support speeds > 100kbps
    • DMA driver needs to bundle logical channels in pairs, to allow for double-buffering
      • AM/DM37x has an improved DMA controller that supports arbitrary length transfer lists, would be good to use that functionality where possible.
      • Also need to work out how to handle the DMA packet size – it looks like both the DMA controller and the device need to know the packet size in order for DMA to work correctly?
  • RTCAdjust
    • Module needs updating to understand HAL RTC’s before it can be used with the OMAP port
    • Or migrate the RTC code out of the kernel since it doesn’t need it to boot, and combine it with RTCAdjust (supporting Philips/Dallas/OMAP3530/emulated RTCs)
  • USB
    • HAL USB enumeration doesn’t work too well; may not even work at all if both HAL & PCI USB controllers are present
    • Need to investigate file corruption issues that people are reporting.
  • Power saving
    • Make more stuff call Portable_Idle. Potential candidates:
      • DebugTerminal code that calls HAL_DebugRX (tricky – HAL isn’t likely to use interrupt driven debug I/O. Plus low priority since only developers would be using the code.)
      • IRQ-based IIC ops
      • USB driver tsleep() implementation
    • Need HAL device/API to read temperature sensor(s) – see here
    • Need HAL device/API to read power consumption – see here and the following few posts.
    • Implement Portable_Stop for suspend-to-RAM functionality
    • Come up with sensible API for reading battery state & charge, bearing in mind that AI’s SmartBook will have three different batteries and charging circuits.
    • Investigate ways of improving the sound stack so that the audio hardware can be powered down when not in use.
      • Could easily detect when no sound is being output by examining the audio buffer. Then disable all audio hardware, and switch to one of the OMAP’s timers for generating fake buffer fill requests. But re-enabling everything without causing a big delay (or losing the first few frames of data) could be tricky.
  • SCSI
    • Get background transfers working to improve performance. Might make sense to start off by translating SCSIFS into C to make it easier to adapt/maintain/debug.
    • Fix the long mount times, if background transfers don’t. Problem seems to be that lots of sectors are read one at a time.
  • Fix the boot sequence/network stack so it doesn’t fail if EtherUSB is in use but no NIC is connected
  • Improved ROM packaging
    • SDCreate version 2 that can download suitable x-loader and u-boot files from the internet instead of requiring the user to source his own
    • Change everything over to use uimages by default, or add a ROM checksum check to the HAL? (to fix problems caused by SD cards not being properly dismounted after copying ROMs to them)
  • Integrate Absolutely’s functionality with the OS
  • Video:
    • Tool to generate MDFs from EDID data
    • HALify *vidcbandwidthlimit
  • Update the Debugger module so that it’s smart enough to unprotect ‘ROM’ pages when placing breakpoints. Being able to place breakpoints in ROM is very useful!
Revised on December 12, 2011 23:49:30 by Jeffrey Lee (213) (91.84.11.161)
Edit | Back in time (33 revisions) | See changes | History | Views: Print | Source | Linked from: Cortex-A8 port

Search the Wiki

Commercial use

For commercial enquiries, please contact the owners of RISC OS, Castle Technology Ltd.

ROOL Store

The official C/C++ Development kit and more here.

Donate! Why?

Help ROOL make things happen – please consider donating!

Navigation

  • Home Page
  • All Pages
  • Recently Revised
  • Authors
  • Feeds
Site design © RISC OS Open Limited 2011 except where indicated
The RISC OS Open Instiki theme is based on Insitki's default layout

Valid XHTML 1.0  |  Valid CSS

Instiki 0.19.1(MML+)
This site runs on Rails

Hosted by Arachsys