I-Appliance BBS
The Official Source for Internet Appliance Upgrades and Mods
Amazon Honor System Click Here to Pay Learn More
BBS Main List | Sign In | Sign Up | Search | Help | Linux-Hacker.netReply to Thread | Printer |

Home / MISC Areas / Mattel JuiceBox
SkyEye - ARM/JuiceBox Emulator

New MessageSkyEye - ARM/JuiceBox Emulator (modified 0 times) bkgoodman
Profile
Anyone using SkyEye to try to emulate the Juicebox?

I've been working with it, running emsoft's kernel and ROM image.

There have been a few issues I've had to work through to get it working (bugs in SkyEye's interrupt handing, etc.)

If anyone is working with it and would like to share notes, ping me.

-BKG


---------
Brad Goodman
[myfirstname]@bradgoodman.com
10-13-2006 21:13:31

New MessageRE:SkyEye - ARM/JuiceBox Emulator (modified 0 times) j_palito
Profile
where can i find SkyEye?
10-14-2006 05:03:56

New MessageRE:SkyEye - ARM/JuiceBox Emulator (modified 0 times) bkgoodman
Profile
https://gro.clinux.org/projects/skyeye/
10-14-2006 07:14:22

New MessageRE:SkyEye - ARM/JuiceBox Emulator (modified 0 times) bkgoodman
Profile
Woo Hoo!

Finally got the emsoft kernel running on the Skyeye emulator!

Had to make a bunch of changes to the emulator to get it working - all stuff that was broken/missing in the emulator.

Will post the patches soon if anyone is interested!

-BKG


Linux version 2.4.24-uc0 (bkg@catbear) (gcc version 2.95.3 20010315 (release)(ColdFire patches - 2 0010318 from http://fiddes.net/coldfire/)(uClinux XIP and shared lib patches from http://www.snapg ear.com/)) #71 Tue Oct 17 12:57:33 EDT 2006
Processor: Samsung S3C44B0X revision 0
Architecture: S3C44B0X
On node 0 totalpages: 497
zone(0): 0 pages.
zone(1): 497 pages.
zone(2): 0 pages.
Kernel command line: root=/dev/rom0
Calibrating delay loop... 38.09 BogoMIPS
Memory: 1MB = 1MB total
Memory: 1300KB available (468K code, 153K data, 32K init)
Dentry cache hash table entries: 512 (order: 0, 4096 bytes)
Inode cache hash table entries: 512 (order: 0, 4096 bytes)
Mount cache hash table entries: 512 (order: 0, 4096 bytes)
Buffer cache hash table entries: 1024 (order: 0, 4096 bytes)
Page-cache hash table entries: 1024 (order: 0, 4096 bytes)
POSIX conformance testing by UNIFIX
Linux NET4.0 for Linux 2.4
Based upon Swansea University Computer Society NET3.039
Initializing RT netlink socket
Starting kswapd
Samsung S3C44B0X UART driver version 0.1 <thomas.eschenbacher@sympat.de>
ttyS0 (irq = 3) is a builtin Samsung S3C44B0X UART
Samsung s3c44b0x 4096 color STN driver frame buffer: 0x0C1F1F00
Function keys for Toymaker video player
Power Management for Toymaker video player
Blkmem copyright 1998,1999 D. Jeff Dionne
Blkmem copyright 1998 Kenneth Albanowski
Blkmem 1 disk images:
0: 100000-1FFFFF [VIRTUAL 100000-1FFFFF] (RO)
NET4: Unix domain sockets 1.0/SMP for Linux NET4.0.
VFS: Mounted root (romfs filesystem) readonly.
Welcome to
____ _ _
/ __| ||_|
| | | | _ ____ _ _ _ _
| | | | | | || | _ \| | | |\ \/ /
| |_| | |__| || | | | | |_| |/ \
| ___\____|_||_|_| |_|\____|\_/\_/
| |
|_|

For further information check:
http://www.uclinux.org/

shelling
# ls
bin dev etc files home lib mn t proc ram sbin tmp usr var
# cds^? sbin
cd: not found
# cd sbin
# ls
basename busybox cat chmod chown chroot cp date dd df dmesg du echo gunzip gzip hostname init insmod kill killall ln lrz ls lsmod lsz md5sum mkdir mke2fs mknod modprobe more mount mv nandctrl ps pwd rm rmdir rmmod sh sleep sync time top umount uptime usleep which zcat


10-17-2006 10:05:16

New MessageRE:SkyEye - ARM/JuiceBox Emulator (modified 0 times) jbfan
Profile

Finally got the emsoft kernel running on the Skyeye emulator!
Awesome!

Will post the patches soon if anyone is interested!
Yes, please do!

-J

10-18-2006 08:09:00

New MessageRE:SkyEye - ARM/JuiceBox Emulator (modified 0 times) bkgoodman
Profile
All files are at:

http://www.bradgoodman.com/skyeye

The patch for skyeye-v1 is here:

http://www.bradgoodman.com/skyeye/bkg_skyeye.patch

(It's a little messy - i.e. adding a bunch of lines that are commented out - but I'll clean it up later.)

The patch fixes a few things:

1. Allows halfword and word read to 32-bit I/O ports via GDB (instead of 4 individual byte reads - which are not the same thing)

2. Fixes in UART FIFO status registers which were not implemented and would break Linux S3C44B0X serial driver.

3. Internal Interrupt status bits were not actually updated when things like the interrupt mask registers were modified - breaking interrupt suport.

My skyeye.conf file is here:

http://www.bradgoodman.com/skyeye/skyeye.conf

Note the memory images:


mem_bank: map=M, type=RW, addr=0x00000000, size=0x00400000, file=newboot.rom
mem_bank: map=I, type=RW, addr=0x01c00000, size=0x00400000
mem_bank: map=M, type=RW, addr=0x0c000000, size=0x00400000, file=./linux

The file "newboot.rom" is a slightly modified version of the JuiceBox ROM file from emsoft's web site (boot.rom). It is actually importiant to have this loaded, because the ARM boot and (more important) interrupt vectors are down in this area (0x000000) - and point up to your installed kernel - the "./linux" file at 0xc000000.

(My linux and newboot.rom are included)

The Linux kernel I built was also from emsoft's web site - using the arm-elf-tools-20030314.sh toolchain to build it.

Also, the RAMdisk is in this image too - a ROMFS filesystem at address 0x100000 (0x10000 offset in this ROM file.)

The "slight modification" to the boot.rom is in the /etc/rc file in the RAMdisk. I added a command here to launch a shell /bin/sh:


/bin/sh < /dev/ttyS0 > /dev/ttyS0

To modify the ROMFS filesystem within the ROM image, you need to do a couple things:

1. Get genromfs off of SourceForge

2. Yank the ROMFS image out of the boot.rom. Remember, this starts at offset 0x100000 from the file - so you can do this with:


dd if=boot.rom of=romfs.img bs=1024 skip=1024

(Note: For all you Dee-Dee-Dee types, 1024*1024=0x100000)

3. Mount the ROMFS filesytem: mount -t romfs romfs.img /mnt

4. Make your modifications to the filesytem, then use genfromfs to re-create it.

NOTE when you unpackage the ROMFS filesystem, all of the links become "normal" files. Since most of the stuff in the /bin directory (and maybe /sbin?) are links to /bin/busybox - this will make it a whopping 16M ROMFS image. To fix this, you're going to want to copy the old filesystem image (cp -ax /mnt /newdir). Then, find all the files in the /bin directory which as the same size as /bin/busybox, delete them, and make them symlinks to busybox. Then use *this* directory to rom genromfs on.

genromfs -a 16 -f newimage.img -d /newdir

5. Then put this image back into the ROM - copying it back to the 0x100000 offset of the file:


dd if=newimage.img of=newboot.rom bs=1024 seek=1024


{myfirstname}@bradgoodman.com

10-18-2006 19:30:30

New MessageRE:SkyEye - ARM/JuiceBox Emulator (modified 0 times) DavidM348
Profile
BKG,

I followed your instructions (I think!!). I applied bkg_skyeye.patch, built skyeye and am using your skyeye.conf, newboot.rom and linux files. Also, I am running under CYGWIN. This is the output I get:

C:©ygwin\bin>skyeye
SKYEYE: If you have ELF kernel file, please use -e option to indicate your ELF f
ormat kernel filename
SKYEYE: If you only have kernel binary image, you should put the filename of ker
nel binary image in skyeye.conf file
arch: arm
cpu info: armv3, arm7tdmi, 41007700, fff8ff00, 0
mach info: name s3c44b0, mach_init addr 0x412ec0
ethmod num=1, mac addr=0:4:3:2:1:f, hostip=10.0.0.1
can't find device module: (null) for net
uart info: input device is /dev/tty, fd is 4.
uart info: output device is /dev/tty, fd is 5.
log_info: log is off.
log_info:log file is /tmp/sk1.log, fd is 0x7e1eec
log_info: log start clock 0
log_info: log end clock 4294967295
can't find device module: (null) for lcd
IN s3c44b0_mach_init
SKYEYE: use arm7100 mmu ops
Loaded RAM newboot.rom
Loaded RAM ./linux
IO RESET
IN s3c44b0_io_reset
Linux version 2.4.24-uc0 (msiu@martin) (gcc version 2.95.3 20010315 (release)(Co
ldFire patches - 20010318 from http://fiddes.net/coldfire/)(uClinux XIP and shar
ed lib patches from http://www.snapgear.com/)) #6 Thu Feb 24 15:32:03 HKT 2005
Processor: Samsung S3C44B0X revision 0
Architecture: S3C44B0X
On node 0 totalpages: 2033
zone(0): 0 pages.
zone(1): 2033 pages.
zone(2): 0 pages.
Kernel command line: root=/dev/rom0
Calibrating delay loop... 38.09 BogoMIPS
Memory: 7MB = 7MB total
Memory: 7208KB available (546K code, 186K data, 92K init)
Dentry cache hash table entries: 1024 (order: 1, 8192 bytes)
Inode cache hash table entries: 512 (order: 0, 4096 bytes)
Mount cache hash table entries: 512 (order: 0, 4096 bytes)
Buffer cache hash table entries: 1024 (order: 0, 4096 bytes)
Page-cache hash table entries: 2048 (order: 1, 8192 bytes)
POSIX conformance testing by UNIFIX
Linux NET4.0 for Linux 2.4
Based upon Swansea University Computer Society NET3.039
Initializing RT netlink socket
Starting kswapd
Samsung S3C44B0X UART driver version 0.1 <thomas.eschenbacher@sympat.de>
ttyS0 (irq = 3) is a builtin Samsung S3C44B0X UART
Giantplus GPM425A0 240x160 4096 color STN frame buffer address: 0x0c7f1f00
8x8 Matrix keyboard for Noah Dictionary installed
Blkmem copyright 1998,1999 D. Jeff Dionne
Blkmem copyright 1998 Kenneth Albanowski
Blkmem 1 disk images:
0: 100000-1FFFFF [VIRTUAL 100000-1FFFFF] (RO)
SSFDC core support installed
S3C44B0X nand I/O driver installed
NET4: Unix domain sockets 1.0/SMP for Linux NET4.0.
VFS: Mounted root (romfs filesystem) readonly.

The boot process stops at this point. In the boot process above, the output looks like the pre-compiled EmSoft output, not what you have posted. And of course, I can't get past the part where the romfs is mounted. Any advice?

Thanks!

-David

11-04-2006 11:40:25

New MessageRE:SkyEye - ARM/JuiceBox Emulator (modified 0 times) bkgoodman
Profile
I tried it again - and got the same results that you did!

When I failed to mention, is this:

When you evoke skyeye, use the following command line:


skyeye -e linux

Where "linux" is the name of the ELF executable for the kernel - (which I think is normally named "linux")

I think this just redundantly loads the same image as in the skyeye.conf file - but it tells it to enter execuution at it's address - rather than the normal boot vector - which would vector you to the Kernel in the ROM.

See if this works!

11-05-2006 20:54:48

New MessageRE:SkyEye - ARM/JuiceBox Emulator (modified 0 times) DavidM348
Profile
Woot!!

That was it - thanks a bunch!! This will give me a chance to play around with the juicebox "virtually" until I'm brave enough to start soldering :)

Thanks again!

-David

11-05-2006 23:49:08

New MessageRE:SkyEye - ARM/JuiceBox Emulator (modified 0 times) bkgoodman
Profile
I've done my JTAG work - and it all works well - but I haven't got an RS-232 level-shifter - so aside from trying the LCD demo - the only stuff I've done so far has been with the emulator!
11-06-2006 13:20:00

Reply to Thread | Printer |
All times are PSTPowered by UltraBoard v1.62



Copyright © 2000, Netmake Inc. All Rights Reserved.
See Terms and Conditions for more information.




i-opener opener laptop notebook computer help drivers dll free windows dos repair fix linux mac macintosh 2000 95 98 nt pc configure hardware software sound video netscape explorer network networking lan wan software cmos fat bios printer card mouse modem ide scsi cd rom controllers scanner tape hard drive cgi scripts source code mp3