Sigmarion III baremetal tests
This is a collection of programs meant to run on baremetal Sigmarion III, which can be run with hpcboot.exe from NetBSD.
This is an attempt to create a working example of basic display and keyboard driver (and possibly other hardware devices), in order to port OSes to run on the Pocket PC.
Build and boot instructions
By default, clang is used for compiling, but arm-none-eabi-gcc can also be used. See or edit common.mk for toolchain options.
Go to each of the directories and run GNU make to obtain a *.elf file, which can be copied to the Sigmarion III and run with NetBSD's hpcboot.exe. For the platform, I tend to use W-ZERO3 but any platforms with PXA2X0 should work (see sys/arch/hpc/conf/platid.def).
TODO
- Currently the entry point is changed from virtual 0xc020_0000 (as per NetBSD sys/arch/hpcarm/conf/std.pxa2x0) to physical 0xa020_0000 and does away with the virtual address mapping, but how robust is this?
- Even though this overwrites the RAM area that might be the file storage region, and there's a chance the filesystem will be corrupted after the next soft reboot. Is there a way to trigger a hard reset, or a way to determine the split between storage and program memory?
- In contrast to how well the PXA255 is documented, there seems to be very little information about the video chip which may or may not be Imageon 3200 or 4200. It's trivial to use the 0x1480_0000 region inside the VRAM which gets configured by the WinCE, but it may be necessary to reconfigure it after a sleep or a reboot.
- arm-none-eabi-gcc seems to generate a thumb interwork while clang uses BLX
Hardware
Memory map
- 0xa000_0000 - 0xa400_0000: 64MB RAM
- 0x1480_0000 - : VRAM (16bpp)
I2C
- 0x11: Keyboard?
References
- Intel PXA255 datasheets/manuals
- Inside Sigmarion III