Internal Flash
- Gen1 EZX phones have two distinct flash chips for firmware/user data storage, a 32MB Intel Strataflash (NOR) and a 64MB m-systems DiskOnChip G3 (NAND).
The StrataFlash contains the bootloader, kernel, rootfs, /usr/setup(factory configuration), /ezxlocal(user data) and a logo partition. This chip is fully supported by the Linux MTD layer.
The DiskOnChip contains /diska(user data), /usr/language(localization). There is NO gpl driver for this chip! Its supported on linux only through a proprietary tffs kernel module for 2.4 series. The limitation is due to the patents M-system uses, reading /drivers/mtd/mftl.c (a driver for this type of chips) you can find:
A signed copy of this agreement from M-Systems is kept on file by Red Hat UK Limited. In the unlikely event that you need access to it, please contact dwmw2@redhat.com for assistance.
In 2006, Sandisk bought M-systems, with probably the patents coming with their products...
.
- Gen2 devices are limited to a 64 MB Intel Strataflash NOR memory chip.
An OpenEzx patch exist for mainline 2.6 kernel, in december, 2008 it's still in the svn (old) depository], or there is also one for A1200 there: [1]
- The A1200 kernel source from motorola contains a MTD mapping that don't match my phone.
Luckilly, there is some kind of security table read by MBM, on flash at 0x60800. On my phone it looks like this:
NAME |TYPE| ID | START | END |SIG STRT|SIG END | mbm.bin 0001 001e 00020000 0005ffff 00000000 00000000 kct.bin_cdt.bin 0016 001f 00060800 0007ffff 00060000 000607ff blob 0016 0020 00080800 0009ffff 00080000 000807ff zImage 0016 0021 000a0800 0019ffff 000a0000 000a07ff resource.img 0000 0022 001a0000 00a9ffff 00000000 00000000 userfs_db.img 0000 0023 00aa0000 0109ffff 00000000 00000000 userfs_general.img 0000 0024 010a0000 0189ffff 00000000 00000000 secure_setup.img 0016 0025 018a1000 018bffff 018a0000 018a0fff tcmd_data 0000 0026 018c0000 018dffff 00000000 00000000 logo.img 0016 0027 018e0800 018fffff 018e0000 018e07ff fota.img 0000 0028 01900000 019bffff 00000000 00000000 language.img 0000 0029 019e0000 025dffff 00000000 00000000 setup.img 0000 002a 025e0000 025fffff 00000000 00000000 rootfs_cramfs.img 0016 002b 02601000 03ffffff 02060000 02600fff blob-nohwinit 0000 00ff a0de0000 a0dfffff 00000000 00000000 zImage-ramos 0000 00ff a0e00000 a0ffffff 00000000 00000000 rootfs_ramos.img 0000 00ff a1000000 a13ffccc 00000000 00000000 erase_table 0000 00ff a13ffd00 a13fffff 00000000 00000000
Note that the 4 last entries are for RAM memory, and you can see which partitions are offset by 2KB or 4KB.