After some 130MB or so of downloads, several hours, and getting a crash-course in cross-compiling NetBSD... I managed to compile a NetBSD kernel that boots on this device.

+

+

[http://dev.gentoo.org/~redhatter/mips/hpc/sharp_mp_pv5000a/netbsd/ Here] you'll find my kernel (netbsd.gz) and config (TX3922-ramdisk.gz, based on TX3922). Drop these on a CF card (or download them across a network, or upload via serial link... whatever floats your boat), along with [ftp://ftp.netbsd.org/pub/NetBSD-daily/netbsd-3/200511140000Z/hpcmips/installation/hpcboot.exe hpcboot] and [ftp://ftp.netbsd.org/pub/NetBSD-daily/netbsd-3/200511140000Z/hpcmips/installation/miniroot/miniroot.fs.gz this ramdisk image].

+

+

Then, on the device, fire up hpcboot. Select ''md'' as your root device, and enter ''miniroot.fs'' (or .gz if you haven't decompressed it). Select "boot verbosely" and "serial console 9600", then plug in your sync cable, fire up a serial terminal program (e.g. minicom; 9600 baud, 8N1) and hit BOOT on the device. You should see NetBSD start booting after a few seconds.

+

+

Having a kernel which boots, means it should be only a little more work to get Linux doing the same thing. I can boot to a shell via NetBSD. I haven't got PCMCIA working just yet, but I hope to get something going in the next few weeks as I tinker.

+

+

== 28/10/2005: Locating the JTAG Interface ==

+

+

Looking at [http://openwince.sourceforge.net/jtag/iPAQ-3600/ this page], it seems somewhere on the mainboard, they'll be some pads, to which I can wire a JTAG Interface. Now, I've got some pretty clear shots of the CPU on my devspace (see my raw pictures -- hpim0527.jpg is a particularly detailed shot of the CPU), it's just a matter of finding out what each and every pin does. In addition, more challenges lay ahead -- these pins are very bloody close together, and my chances of hitting one the wrong way are extremely high. I've touched this board with a soldering iron before -- but that was to fix a power socket with nice chunky connections -- this is much smaller again. I may require a new soldering iron for the task.

+

+

After my exams, I'll look into it. I found a datasheet on the CPU [http://www.toshiba.com/taec/components/Datasheet/TX3922ds.pdf here], which I will naturally have a close look at. Pins 30 ~ 34 may have something to do with it. Here's hoping that's the case. :-) Of course mearly having a JTAG isn't good enough -- one must know what to do with it. That is the next step.

+

+

These are the pins where I suspect the JTAG resides:

+

+

[[Image:Mobilion_pro_jtag.jpg]]

+

+

== 14/08/2005: Obtaining the tools & my plans ==

+

+

I've been chasing my tail lately, trying to build a cross-compile toolchain for the mipsel-wince-pe target. It seems this functionality disappeared from binutils back around 2.13 or so, 2.12.2 fails to compile.

+

+

I'm currently looking around. So far, I discovered [http://www.toyoshima-house.net/wince/ this page] which suggests using binutils-2.11.2 and gcc-3.03. Well, worth a try I guess :-), it also gives instructions on how to compile GUI apps for WinCE, so I think this will be a definate winner as far as aiding progress. I also managed to find [http://www.rainer-keuchel.de/software.html this site] which has loads of WinCE/MIPS stuff, including a POSIX library (celib) which may be useful for phase 2.

+

+

I've already managed to get a copy of the entire contents of the "Windows" directory of my PDA (thank you to the devs who made [http://synce.sourceforge.net SynCE], it's a wonderful tool), and once I've got a toolchain, I should be able to pull those apart and have a look (I won't be posting code though for legal reasons -- Sure, I never agreed to any licence agreement, none came with the PDA, but I don't want to push my luck there) to see how everything fits together.

+

+

=== Why? ===

+

+

Currently, Windows CE 2.11/MIPS is practically dead. There's a couple of sites offering downloads for it, but the vast majority out there is for PPC200x/ARM. Drivers are even harder to find.

+

+

Linux on this machine, with a suitable embedded Desktop, should vastly improve the system's capabilities. It's much more modern, with many applications available. Combined with some sort of PCMCIA storage (PCMCIA IDE or SCSI, or perhaps a CF adaptor), it should be capable of running full distributions such as Debian/MIPS or Gentoo/MIPS. Running purely from RAM, things like Qtopia shouldn't be out of the question... and running such an open platform, opens up all sorts of possibilities, many which I haven't touched on yet.

+

+

=== The plan ===

+

+

# Create a cross-compiler for mipsel-wince-pe target.

+

# Create some simple programs to explore the system. The aim here is to try and discover where various devices are located.

+

#* (Me only) Learn some MIPS asm, I've already found what looks to be a fairly complete guide [http://chortle.ccsu.edu/AssemblyTutorial/TutorialContents.html here].

+

# Make a first attempt at some non-trivial applications to interact with the hardware. Specifically, I'll be focussing on interaction with the screen, keyboard & serial interface.

+

# Begin porting Linux. :-)

+

+

=== Goal ===

+

+

Once Linux runs; (i.e. I can boot up to some sort of shell, possibly BusyBox and a ÂµClibc environment), I'll look at how to package a distribution to run on the machine.

+

+

At the moment, due to the limited memory (32MB) and storage (none), I'm thinking about using QT's Qtopia to provide the full system. It's much more up to date than Windows CE 2.11, and should provide everything I need, whilst leaving sufficient memory over to do something useful.

+

+

Eventually, I'd like to burn this into the ROM somehow. The idea at present, is to try and implement the ROM as some sort of block device, with a small partition table. Put a bootloader in at the start, ideally, the kernel should stay in ROM, and be accessed directly. This will all become clearer though as I learn how to talk to the hardware in this device.

+

+

Almost certainly, I can forget a full distro like Gentoo or Debian, not without a fairly large root FS sitting on a PCMCIA flash drive of some description. Given the cost of these things, I don't see me trying this anytime soon.

Natively, they run [[Wikipedia:Windows_CE|Windows CE 2.11 H/PC PRO 3.0]]. There is some resources on the net to suggest NetBSD potentially runs, but I have not succeeded in this endeavour. I'm looking into the feasability of porting Linux onto these devices.

Natively, they run [[Wikipedia:Windows_CE|Windows CE 2.11 H/PC PRO 3.0]]. There is some resources on the net to suggest NetBSD potentially runs, but I have not succeeded in this endeavour. I'm looking into the feasability of porting Linux onto these devices.

+

+

= A look inside =

+

+

I ended up pulling my unit apart tonight... finally got fed up of the wobbly power socket, so I thought I'd take a look.

+

The power socket was fixed very easy... The solder connections were worn... in fact, I suspect a manufacturing fault. Not to worry though, a quick jab with a soldering iron soon fixed up what the ravages of time had slowly worn away.

+

+

I have raw images, straight from the camera [http://dev.gentoo.org/~redhatter/mips/hpc/sharp_mp_pv5000a/rawphotos/ here]. These are 5MPixel shots.

+

+

== Motherboard: Top surface ==

+

+

Pulling up the keyboard, you'll see the top surface of the motherboard... shown in this photo.

The only ICs I've identified thus far are the CPU and the LCD controller... although I'll be pestering Google for info on the others shortly.

+

+

===Links===

+

+

1. http://www.realitydiluted.com/projects/nino/port/remove-rom.html describes the ROM in a similar device. The ROM used on the Mobilion PRO above is almost identical (other than the fact that the plug is in a different location) This site also describes how to potentially erase and reprogramme the flash chips used on this ROM. This opens the possibility of completely ridding WinCE for good. :-)

News

30/11/2005: Got NetBSD/hpcmips running

After some 130MB or so of downloads, several hours, and getting a crash-course in cross-compiling NetBSD... I managed to compile a NetBSD kernel that boots on this device.

Here you'll find my kernel (netbsd.gz) and config (TX3922-ramdisk.gz, based on TX3922). Drop these on a CF card (or download them across a network, or upload via serial link... whatever floats your boat), along with hpcboot and this ramdisk image.

Then, on the device, fire up hpcboot. Select md as your root device, and enter miniroot.fs (or .gz if you haven't decompressed it). Select "boot verbosely" and "serial console 9600", then plug in your sync cable, fire up a serial terminal program (e.g. minicom; 9600 baud, 8N1) and hit BOOT on the device. You should see NetBSD start booting after a few seconds.

Having a kernel which boots, means it should be only a little more work to get Linux doing the same thing. I can boot to a shell via NetBSD. I haven't got PCMCIA working just yet, but I hope to get something going in the next few weeks as I tinker.

28/10/2005: Locating the JTAG Interface

Looking at this page, it seems somewhere on the mainboard, they'll be some pads, to which I can wire a JTAG Interface. Now, I've got some pretty clear shots of the CPU on my devspace (see my raw pictures -- hpim0527.jpg is a particularly detailed shot of the CPU), it's just a matter of finding out what each and every pin does. In addition, more challenges lay ahead -- these pins are very bloody close together, and my chances of hitting one the wrong way are extremely high. I've touched this board with a soldering iron before -- but that was to fix a power socket with nice chunky connections -- this is much smaller again. I may require a new soldering iron for the task.

After my exams, I'll look into it. I found a datasheet on the CPU here, which I will naturally have a close look at. Pins 30 ~ 34 may have something to do with it. Here's hoping that's the case. :-) Of course mearly having a JTAG isn't good enough -- one must know what to do with it. That is the next step.

These are the pins where I suspect the JTAG resides:

14/08/2005: Obtaining the tools & my plans

I've been chasing my tail lately, trying to build a cross-compile toolchain for the mipsel-wince-pe target. It seems this functionality disappeared from binutils back around 2.13 or so, 2.12.2 fails to compile.

I'm currently looking around. So far, I discovered this page which suggests using binutils-2.11.2 and gcc-3.03. Well, worth a try I guess :-), it also gives instructions on how to compile GUI apps for WinCE, so I think this will be a definate winner as far as aiding progress. I also managed to find this site which has loads of WinCE/MIPS stuff, including a POSIX library (celib) which may be useful for phase 2.

I've already managed to get a copy of the entire contents of the "Windows" directory of my PDA (thank you to the devs who made SynCE, it's a wonderful tool), and once I've got a toolchain, I should be able to pull those apart and have a look (I won't be posting code though for legal reasons -- Sure, I never agreed to any licence agreement, none came with the PDA, but I don't want to push my luck there) to see how everything fits together.

Why?

Currently, Windows CE 2.11/MIPS is practically dead. There's a couple of sites offering downloads for it, but the vast majority out there is for PPC200x/ARM. Drivers are even harder to find.

Linux on this machine, with a suitable embedded Desktop, should vastly improve the system's capabilities. It's much more modern, with many applications available. Combined with some sort of PCMCIA storage (PCMCIA IDE or SCSI, or perhaps a CF adaptor), it should be capable of running full distributions such as Debian/MIPS or Gentoo/MIPS. Running purely from RAM, things like Qtopia shouldn't be out of the question... and running such an open platform, opens up all sorts of possibilities, many which I haven't touched on yet.

The plan

Create a cross-compiler for mipsel-wince-pe target.

Create some simple programs to explore the system. The aim here is to try and discover where various devices are located.

(Me only) Learn some MIPS asm, I've already found what looks to be a fairly complete guide here.

Make a first attempt at some non-trivial applications to interact with the hardware. Specifically, I'll be focussing on interaction with the screen, keyboard & serial interface.

Begin porting Linux. :-)

Goal

Once Linux runs; (i.e. I can boot up to some sort of shell, possibly BusyBox and a ÂµClibc environment), I'll look at how to package a distribution to run on the machine.

At the moment, due to the limited memory (32MB) and storage (none), I'm thinking about using QT's Qtopia to provide the full system. It's much more up to date than Windows CE 2.11, and should provide everything I need, whilst leaving sufficient memory over to do something useful.

Eventually, I'd like to burn this into the ROM somehow. The idea at present, is to try and implement the ROM as some sort of block device, with a small partition table. Put a bootloader in at the start, ideally, the kernel should stay in ROM, and be accessed directly. This will all become clearer though as I learn how to talk to the hardware in this device.

Almost certainly, I can forget a full distro like Gentoo or Debian, not without a fairly large root FS sitting on a PCMCIA flash drive of some description. Given the cost of these things, I don't see me trying this anytime soon.

Operating System Support

Natively, they run Windows CE 2.11 H/PC PRO 3.0. There is some resources on the net to suggest NetBSD potentially runs, but I have not succeeded in this endeavour. I'm looking into the feasability of porting Linux onto these devices.

A look inside

I ended up pulling my unit apart tonight... finally got fed up of the wobbly power socket, so I thought I'd take a look.
The power socket was fixed very easy... The solder connections were worn... in fact, I suspect a manufacturing fault. Not to worry though, a quick jab with a soldering iron soon fixed up what the ravages of time had slowly worn away.

I have raw images, straight from the camera here. These are 5MPixel shots.

Motherboard: Top surface

Pulling up the keyboard, you'll see the top surface of the motherboard... shown in this photo.

The only ICs I've identified thus far are the CPU and the LCD controller... although I'll be pestering Google for info on the others shortly.

Links

1. http://www.realitydiluted.com/projects/nino/port/remove-rom.html describes the ROM in a similar device. The ROM used on the Mobilion PRO above is almost identical (other than the fact that the plug is in a different location) This site also describes how to potentially erase and reprogramme the flash chips used on this ROM. This opens the possibility of completely ridding WinCE for good. :-)