Help - Search - Members - Calendar
Full Version: Pimp Your Zaurus: 1gbyte Nand Flash Upgrade
OESF Forums > General Forums > General Support and Discussion > Hardware Mods
ranma
Hi all!

I recently looked into how the NAND is hooked up on the Zaurus (my C750):

CODE
          TP6
            TP5
          TP4
---------   TP3
|Xilinx | TP2
|CPLD   |   TP1
|       |
---------


TP1 => CE0
TP2 => CE1! (unused?)
TP3 => /WP
TP4 => /WE
TP5 => ALE
TP6 => CLE

I also found two nicely compatible 8GBit TSOP48 Toshiba Flash Chips in a CNMemory 2GByte CF Card.

So I soldered one of the 8GBit chips on top of the already existing 512MBit chip (all signals except CE are shared).
Soldering was a bitch though (pins did almost, but not quite reach the pins below), but with lots of solder, cursing, solderwick and patience
I eventually had all relevant pins connected. smile.gif
Since the Linux kernel unfortunately always enables/disables both CE signals I couldn't simply use the CE1 signal from the CPLD, but for now
(first tests) I hooked up CE to the Cathode of the Green EMail-LED (which is normally always off and the transistor acts as an inverter, so
'on' == low, exactly what I need) and a 10k pull-up.

The system boots fine and a hacked up 'fiddle with CEs and read IDs' kernel module finds both Chips just fine:
CODE
Trying to read id from Flash on CE0
Got maker=98 device=76
Trying to read id from Flash on CE1|GreenLED
Got maker=98 device=d3


According to drivers/mtd/nand/nand_ids.c maker 0x98 is 'Toshiba', device 0x76 is a 'NAND 64MiB 3,3V 8-bit' and
device 0xd3 is the shiny new 'NAND 1GiB 3,3V 8-bit' (Yay!).

This should actually already exercise all control signals, so the only remaining task is to modify the built-in sharp_sl nand driver to properly support two chips. smile.gif
Capn_Fish
Very nice! Now how about 1GB RAM? That would REALLY make my day! biggrin.gif
ranma
QUOTE(Capn_Fish @ Jun 15 2008, 09:01 AM) *
Very nice! Now how about 1GB RAM? That would REALLY make my day! biggrin.gif


I'm not sure the pxa would support that (and haven't looked into the datasheet). smile.gif

BTW, unit striptease:

Before mod:


After mod:


Better view of the flash stack:
the_oak
Wow! Really nice mod. Is hacking the NAND driver a trivial matter (asking because from what I hear, Sharp did not release source files). Is hacking the driver the only thing that needs to be done to have the Zaurus see and use the new NAND storage as ROM? Would love to see a screenshot of System Properties showing all that internal memory.

If you pre-tin the new memory chip leads, would that extend them enough to make soldering less risky?
stupkid
I thought long ago someone was stating that 128MB RAM was possible with the Z.
ranma
QUOTE(the_oak @ Jun 16 2008, 05:23 AM) *
Wow! Really nice mod. Is hacking the NAND driver a trivial matter (asking because from what I hear, Sharp did not release source files). Is hacking the driver the only thing that needs to be done to have the Zaurus see and use the new NAND storage as ROM? Would love to see a screenshot of System Properties showing all that internal memory.


The nand driver is included in the sharp source tree (or in the cacko source tree, for that matter).
Hacking the driver shouldn't be too difficult, I hope to find the time to do that the coming weekend.
The hacked driver would expose the NAND as just another mtd partition, which can then be formatted using JFFS2.
Using a FS not specifically designed for flash would also be possible, but a big "don't do that" since ther is no wear-leveling. smile.gif
Unfortunately JFFS2 does not perform well with big filesystem sizes, maybe I'll try YAFFS instead.

QUOTE
If you pre-tin the new memory chip leads, would that extend them enough to make soldering less risky?


Maybe.
I think applying flux to the old chip leads may also help a lot. smile.gif

Interesting tidbits:
dd if=/dev/mtdblock of=/dev/null clocks in at about 2MB/s (on the 64MB flash)
This corresponds nicely to a benchmark I did on the PIO reads from the CPLD, however if I use the pxa dma engine I can read at >10MB/s.

Hooking up the chip-enable to the green led is just a temporary measure, I'm thinking of hooking it up using a transistor, with the base connected to CE0 using a resistor,
the emitter connected to CE1 an the collector connected to CE (while also leaving the pull-up in place).

This should act so that a low-level on CE1 gets only passed on to CE if CE0 is high-level and so works around the 'Sharp Kernel turns on/off both CE0 and CE1'.
the_oak
QUOTE(stupkid @ Jun 16 2008, 11:00 AM) *
I thought long ago someone was stating that 128MB RAM was possible with the Z.


I think it was Speculatrix who (unsuccessfully) tried that. Brave soul. It would have been a success but the chip cracked, or something like that.
pelrun
The RAM upgrade is hard simply because it's in a BGA package which needs hot-air rework equipment and no fear. I seem to recall Maslovsky had a few done.
speculatrix
QUOTE(the_oak @ Jun 17 2008, 04:25 AM) *
QUOTE(stupkid @ Jun 16 2008, 11:00 AM) *
I thought long ago someone was stating that 128MB RAM was possible with the Z.


I think it was Speculatrix who (unsuccessfully) tried that. Brave soul. It would have been a success but the chip cracked, or something like that.


no, I was trying to fit a bluetooth module inside my sl-6000, turned out I had the wrong type of module - there are many variants of Mitsumi devices. in the process of reassembling it I was squeezing the USB wifi module on and snapped a RAM chip. I tried to find someone who could do BGA "surgery" to remove the bust ram chip and fit a new one, and possibly populate the empty slots for more memory too.

that zaurus is still b0rked - the person capable of BGA surgery was unavailable and the RAM chips are very hard/impossible to find.
speculatrix
QUOTE(pelrun @ Jun 17 2008, 07:23 AM) *
The RAM upgrade is hard simply because it's in a BGA package which needs hot-air rework equipment and no fear. I seem to recall Maslovsky had a few done.


yes, Anton Mas. had a friend who can do BGA, but I think that friend has changed job and no longer has access to the specialised equipment.
the_oak
QUOTE(speculatrix @ Jun 22 2008, 05:53 PM) *
QUOTE(the_oak @ Jun 17 2008, 04:25 AM) *
QUOTE(stupkid @ Jun 16 2008, 11:00 AM) *
I thought long ago someone was stating that 128MB RAM was possible with the Z.


I think it was Speculatrix who (unsuccessfully) tried that. Brave soul. It would have been a success but the chip cracked, or something like that.


no, I was trying to fit a bluetooth module inside my sl-6000, turned out I had the wrong type of module - there are many variants of Mitsumi devices. in the process of reassembling it I was squeezing the USB wifi module on and snapped a RAM chip. I tried to find someone who could do BGA "surgery" to remove the bust ram chip and fit a new one, and possibly populate the empty slots for more memory too.

that zaurus is still b0rked - the person capable of BGA surgery was unavailable and the RAM chips are very hard/impossible to find.


Speculatrix:
Did you happen to notice this thread:

http://www.oesf.org/forum/index.php?showtopic=25886

Maybe a cheap motherboard to replace borked one. Been a while since that ad, but I just now remembered seeing it.
speculatrix
QUOTE(the_oak @ Jul 2 2008, 03:29 AM) *
QUOTE(speculatrix @ Jun 22 2008, 05:53 PM) *
no, I was trying to fit a bluetooth module inside my sl-6000... snapped a RAM chip


Speculatrix:
Did you happen to notice this thread:

http://www.oesf.org/forum/index.php?showtopic=25886

Maybe a cheap motherboard to replace borked one. Been a while since that ad, but I just now remembered seeing it.


thanks, but I did buy a b0rked 6000, a guy dropped it off the roof of his house (I've never found out why he was up there with his Z!), the screen broke but the motherboard survived! I've still got problems with its LCD connector, it needs refixing. Also my batteries are shot. I recently bought a Dlink DSM-G600 wifi hard drive thing which I intend to fit in the car and use the Z as a media player using samba over wifi.
ranma
QUOTE(ranma @ Jun 16 2008, 12:34 PM) *
The nand driver is included in the sharp source tree (or in the cacko source tree, for that matter).
Hacking the driver shouldn't be too difficult, I hope to find the time to do that the coming weekend.
The hacked driver would expose the NAND as just another mtd partition, which can then be formatted using JFFS2.
Using a FS not specifically designed for flash would also be possible, but a big "don't do that" since ther is no wear-leveling. smile.gif
Unfortunately JFFS2 does not perform well with big filesystem sizes, maybe I'll try YAFFS instead.


Well, it took a bit longer than expected, but it is basically working now.
I can mount jffs2 and read/write to the partition.
I get occasional crc errors though (probably because I commented out the write verification code, that is not converted yet).
For testing I only used 128MB instead of the full size:

CODE
bash-3.00# df  
Filesystem           1k-blocks      Used Available Use% Mounted on
/dev/root                32768     32664       104 100% /
/dev/ram1                  108        29        79  27% /dev
/dev/loop0               26368     26368         0 100% /usr
/dev/mtdblock3           25600     21660      3940  85% /home
none                     10240        24     10216   0% /dev/shm
/dev/mtdblock4          131072     30020    101052  23% /usr/mnt.rom/cf
bash-3.00# cat /proc/mtd
dev:    size   erasesize  name
mtd0: 006d0000 00020000 "Filesystem"
mtd1: 00700000 00004000 "smf"
mtd2: 02000000 00004000 "root"
mtd3: 01900000 00004000 "home"
mtd4: 08000000 00040000 "NAND flash partition 0"
mtd5: 20000000 00040000 "NAND flash partition 1"



QUOTE
Interesting tidbits:
dd if=/dev/mtdblock of=/dev/null clocks in at about 2MB/s (on the 64MB flash)
This corresponds nicely to a benchmark I did on the PIO reads from the CPLD, however if I use the pxa dma engine I can read at >10MB/s.


Well, slight problem with trying to use dma: Apparently I overread the part where the docs state that byte-reads are only allowed for on-chip peripherals
and all external reads have to be 8-byte aligned. sad.gif
Unfortunately the data register is not 8-byte aligned and only byte-readable.

Aligned dma copies from/to the w100 framebuffer seem to work fine though (didn't get much testing though). smile.gif
the_oak
Keep up the good work. We'll be waiting to hear of future developments.
Ragnorok
QUOTE(pelrun @ Jun 17 2008, 06:23 AM) *
The RAM upgrade is hard simply because it's in a BGA package which needs hot-air rework equipment and no fear. I seem to recall Maslovsky had a few done.

- 'Twere he. Saint Maslovsky has a C750 w/ 128MB RAM and was working on the C1000 about the time Cacko 1.23 was released. Since then he evaporated, seemingly. Hope he's okay and all.
- I like the GB flash mod. I could fit Debian in that and not worry about stuffing it on an SD card. Nice! Now if I could just work up the courage to rip Hiro apart and go at him with heat and purpose. (owlish stare)
speculatrix
Is there any news on this l33t hack? It occurs to me you could do a similar hack with the 6000!

There was a guy on the forum who had the legendary 6000D, developers model which had twice the flash and ram.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Invision Power Board © 2001-2014 Invision Power Services, Inc.