Kernel¶
Overview¶
Linux4.BE used the Linux 2.4.18 kernel as its base, adapted for the NEC VR4131 SoC in the Casio BE-300. A Linux 2.6.8.1 port was later contributed by Mouse.
Supported Hardware¶
The following hardware was supported by the original Linux4.BE kernels:
- Serial console (VR4131 SIU UART at 0x0A008680)
- Framebuffer (320x240, 16-bit color)
- Ramdisk boot (initrd loaded by CyaCE)
Not Supported¶
The following hardware was not supported in the original kernels:
- NAND flash (no read/write access to internal storage)
- Touchscreen (not exposed as a Linux input device)
- CompactFlash (no Linux CF driver for the VR4131 socket)
- Sound
Warm Start Caveat
The Linux kernels were originally loaded from a running WinCE environment via the CyaCE bootloader (warm start). Hardware may have been partially initialized by WinCE before the kernel took control.
Available Kernel Builds¶
| Kernel | Version | Description |
|---|---|---|
vmlinux-pgui-demo |
2.4.18 | PicoGUI demo --- known good, boots to userspace on real hardware |
vmlinux |
2.4.18 | Base kernel, not stripped, includes debug symbols |
vmlinux-mw |
2.4.18 | MicroWindows/Nano-X build |
vmlinux-pgui-test1 |
2.4.18 | PicoGUI test build |
vmlinux-qte |
2.4.18 | Qt/Embedded build |
vmlinux_sdlregtest |
2.4.18 | SDL register test |
vmlinux-2.6 |
2.6.8.1 | Linux 2.6 port by Mouse |
The reference kernel for testing is vmlinux-pgui-demo, which is confirmed to boot to a working PicoGUI userspace on real hardware.
Linux 2.6 Port¶
Mouse contributed a Linux 2.6.8.1 port (linux2.6-l4be.diff). Key differences from the 2.4 kernels:
prom_init()takes no parameters;arcs_cmdlineis not populated from bootloader arguments- The
--cmdlinebootloader argument has no effect (the kernel ignoresfw_arg0/fw_arg1) - Serial console is registered directly via
be300_console_init()inprom_init(UART at 0xAA008680) - The framebuffer uses 5-bit green encoding (requires
--sfb-5bit-greenflag in the emulator)
Building from Source¶
The kernel source is available from the project CVS repository:
Build steps:
This requires a MIPS little-endian cross-compiler (mipsel-linux-gcc). See the Toolchain page for setup instructions.
Kernel Command Line¶
The standard command line used for BE-300 kernels:
console=tty0--- output to framebufferconsole=ttyS0,9600--- output to serial port at 9600 baudroot=/dev/ram--- boot from ramdisk
Serial Console Behavior
Using console=ttyS0 as the primary console can cause userspace to hang when processes write to the serial driver. For emulator testing, use console=tty0 as the primary console.