Empeg Kernel

Saving State During Power Failure

The player opens /dev/empeg_state and can store up to 126 bytes of info (well, it has a 128 byte block but there's a CRC-16 at the end). In case of a power fail, the kernel dumps the latest complete /dev/empeg_state 128 byte block to flash.

On power up, the kernel finds the latest valid block in flash and makes it available in /dev/empeg_state.

The kernel has to do it as there are, well, hard real-time constraints on the task - like running out of power to the CPU and flash :)

Contributed by Hugo Fiennes

Determining the Power Source

The file /proc/empeg_power can be used to tell whether the empeg is docked in the cage or using the AC power adapter.

Contributed by Rob Leslie

Kernel Messages

The empeg runs a modified Linux kernel. Here are the beta6 developer image boot-up messages:

empeg-car v0.04 19990121 (altman@empeg.com)
If there is anyone present who wants to upgrade the flash, let them speak now,
or forever hold their peace...it seems not. Let fly the Penguins of Linux!


Clearing 8Mb of RAM...
Copying kernel...
Calling linux kernel...
Uncompressing Linux...done.
Now booting the kernel
Linux version 2.2.9-rmk3-np9-empeg8 (mac@fatboy.internal.empeg.com) (gcc version
 egcs-2.91.66 19990325/philb (egcs-1.1.2 release)) #112 Fri Sep 3 21:28:08 BST 1
999
NetWinder Floating Point Emulator V0.94.1 (c) 1998 Corel Computer Corp.
Calibrating delay loop... 208.08 BogoMIPS
Memory: 7376k/8M available (548k code, 20k reserved, 244k data, 4k init)
POSIX conformance testing by UNIFIX
Linux NET4.0 for Linux 2.2
Based upon Swansea University Computer Society NET3.039
Starting kswapd v 1.5 
SA1100 serial driver version 4.26 with no serial options enabled
ttyS00 at 0xf8010000 (irq = 15) is a SA1100 UART
ttyS01 at 0xf8050000 (irq = 17) is a SA1100 UART
ttyS02 at 0xf8030000 (irq = 16) is a SA1100 UART
Linux video capture interface: v1.00
empeg FM radio driver.
empeg audio driver initialized
empeg infra-red support initialised.
empeg usb initialised, USBN9602 revision 1
empeg display initialised.
empeg state support initialised.
empeg RDS driver initialised
RAM disk driver initialized:  16 RAM disks of 4096K size
empeg dual channel IDE
No drives responded - waiting & retrying
hda: TOSHIBA MK1011GAV, ATA DISK drive
ide0 at 0x040-0x047,0x078 on irq 7
hda: TOSHIBA MK1011GAV, 9590MB w/0kB Cache, CHS=19485/16/63
Partition check:
 hda: hda1 hda2 hda3 hda4
RAMDISK: ext2 filesystem found at block 0
RAMDISK: Loading 320 blocks [1 disk] into ram disk... done.
VFS: Mounted root (ext2 filesystem).
empeg-pump v0.03 (19980601)
Press Ctrl-A to enter pump...VFS: Mounted root (ext2 filesystem) readonly.
change_root: old root has d_count=1
Trying to unmount old root ... okay
Freeing unused kernel memory: 4k initI see this is a developer image!
Mounting proc
Mounting first music partition
Mounting second music partition
Tried to mount /drive1 but got error 15
Error mounting partitions (possibly already mounted)
Remounting first music partition read-only
Remounting second music partition read-only
No secondary hard disk
Press 'q' now to go into development mode. You Have 1 Second To Comply...
q
Switched to development moStarting bash.
bash-2.01# 

PPP Kernel

A kernel with PPP support is also available. Its boot-up messages are as follows:

empeg-car v0.04 19990121 (altman@empeg.com)
If there is anyone present who wants to upgrade the flash, let them speak now,
or forever hold their peace...it seems not. Let fly the Penguins of Linux!


Clearing 8Mb of RAM...
Copying kernel...
Calling linux kernel...
Uncompressing Linux...done.
Now booting the kernel
Linux version 2.2.9-rmk3-np9-empeg7 (altman@sleeper) (gcc version egcs-2.91.60 1
9990113/philb (egcs-1.1.1 release)) #349 Thu Sep 9 11:12:11 BST 1999
NetWinder Floating Point Emulator V0.94.1 (c) 1998 Corel Computer Corp.
Calibrating delay loop... 208.08 BogoMIPS
Memory: 7124k/8M available (788k code, 20k reserved, 256k data, 4k init)
POSIX conformance testing by UNIFIX
Linux NET4.0 for Linux 2.2
Based upon Swansea University Computer Society NET3.039
NET4: Linux TCP/IP 1.0 for NET4.0
IP Protocols: ICMP, UDP, TCP
Starting kswapd v 1.5 
SA1100 serial driver version 4.26 with no serial options enabled
ttyS00 at 0xf8010000 (irq = 15) is a SA1100 UART
ttyS01 at 0xf8050000 (irq = 17) is a SA1100 UART
ttyS02 at 0xf8030000 (irq = 16) is a SA1100 UART
Linux video capture interface: v1.00
empeg FM radio driver.
empeg audio driver initialized
empeg infra-red support initialised.
empeg usb initialised, USBN9602 revision 1
empeg display initialised.
empeg state support initialised.
empeg RDS driver initialised
RAM disk driver initialized:  16 RAM disks of 4096K size
empeg dual channel IDE
request_module[ide-probe]: Root fs not mounted
request_module[ide-probe]: Root fs not mounted
No drives responded - waiting & retrying
hda: TOSHIBA MK1011GAV, ATA DISK drive
ide0 at 0x040-0x047,0x078 on irq 7
hda: TOSHIBA MK1011GAV, 9590MB w/0kB Cache, CHS=19485/16/63
PPP: version 2.3.7 (demand dialling)
TCP compression code copyright 1989 Regents of the University of California
PPP line discipline registered.
Partition check:
 hda: hda1 hda2 hda3 hda4
RAMDISK: ext2 filesystem found at block 0
RAMDISK: Loading 320 blocks [1 disk] into ram disk... done.
VFS: Mounted root (ext2 filesystem).
empeg-pump v0.03 (19980601)
Press Ctrl-A to enter pump...VFS: Mounted root (ext2 filesystem) readonly.
change_root: old root has d_count=1
Trying to unmount old root ... okay
Freeing unused kernel memory: 4k initI see this is a developer image!
Mounting proc
Mounting first music partition
Mounting second music partition
kmod: failed to exec /sbin/modprobe -s -k block-major-22, errno = 2
Tried to mount /drive1 but got error 15
Error mounting partitions (possibly already mounted)
Remounting first music partition read-only
Remounting second music partition read-only
No secondary hard disk
Press 'q' now to go into development mode. You Have 1 Second To Comply...
q
Switched to development mode
Starting bash.
kmod: failed to exec /sbin/modprobe -s -k net-pf-1, errno = 2
bash-2.01# 
Contributed by Rob Leslie