Memory Mapping
Mapping Table
Section titled “Mapping Table”| Region | Start | End | Size | Notes |
|---|---|---|---|---|
| Boot ROM | 0x0000_0000 | - | - | Initial boot code |
| Main RAM | 0x8C00_0000 | 0x8CFF_FFFF | 16 MB | OS + apps + heap |
| Cached ROM | 0x8000_0000 | 0x81FF_FFFF | 512 MB | Cached access |
| MCS FS | 0x8E00_0000 | - | - | Filesystem (avoid overwriting!) |
| Uncached ROM | 0xA000_0000 | 0xA1FF_FFFF | 512 MB | Direct, no cache |
| CPG | 0xA415_0000 | 0xA415_FFFF | 64 KB | Clock control |
| Touch? | 0xA405_0100 | - | - | Touch register at 0xA405_01F3 |
| Display DMAC | 0xB400_0000 | - | - | Display DMA controller |
| XRAM | 0xE500_7000 | 0xE500_9000 | 8 KB | Fast data RAM (Bank 1) |
| YRAM | 0xE501_7000 | 0xE501_9000 | 8 KB | Fast data RAM (Bank 2) |
| IL Memory | 0xE520_0000 | 0xE520_4000 | 16 KB | Fast instruction RAM |
| Direct I/O | 0xFEC0_0000 | 0xFEFF_FFFF | 4 MB | Hardware registers |
| RS Memory | 0xFD80_0000 | 0xFD80_07FF | 2 KB | CRITICAL. Retained during standby |
Here’s some informations gathered about the mapping :
-
boot rom is at
0x0000_0000, it’s taken from the first part of the flashed rom -
bootloader is at
0x0000_0300with theLV777thenCASIOABSat0x0000_3380 -
Clock Pulse Generator (CPG) is at
0xA415_0000to0xA415_FFFF -
0xA405_0100may be the touchscreen, where0xA405_01F3changes when screen it touched -
RAM is
0x8c00_0000to0x8cff_ffff -
MCS starts at
0x8e00_0000 -
Cached ROM is
0x8000_0000to0x81ff_ffff -
Uncached ROM is
0xa000_0000to0xa1ff_ffff -
Display DMAC start at
0xb400_0000 -
There are some “direct Io” from
0xFEC0_0000to0xFEFF_FFFF
When loading a .bin program, it is copied at 0x8cff_0000 and the PC jump to this offset
For hollyhock, we usually use the end of the ram, that space is usually occupied by the mcs file system, but if it’s not fully full, then it should work. Just note that the hollyhock launcher is running from ram, so it can’t overwrite itself…
8C00_0000to8CFF_FFFFis ram, we use8CFE_0000for the launcher (from the run.bin file) and8CFF_0000for programs, just look at the launcher how big it is, you can squeeze out a bit if you start your program at8CFE_8000…