There are 3 types of disk-on-chip devices in use in HTC phones: disk-on-chip devices have 2 kinds of partitions:

layout used by htc

the IPL

reading G3 devices

reading G4 devices

reading H3 devices

pdocread

pdocread has several options to make it possible reading all these different layuts. some DOC implementations do not allow reading past the sector end. you will get crc or other errors

reading G3

pdocread -n 0 0 0x100000 -b 0x8000 bdk0-spl.bin 
pdocread -n 1 0 0x10000 bdk1-0-cid.bin 
pdocread -n 1 0x10000 0x10000 bdk1-1-cidbk.bin 
pdocread -n 1 0x20000 0x10000 bdk1-2-serial.bin 
pdocread -n 1 0x30000 0x10000 bdk1-3-subsplash.bmp 
pdocread -n 1 0x10000 0x4000 -b 0x4000 bdk1-4-gsmdata.bin
pdocread -n 1 0x50000 0x280000 bdk1-5-gsmcode.bin
pdocread -n 1 0x2d0000 0x30000 bdk1-45-splash.bin 

reading G4

pdocread -n 0 -b 0x20000 0 0x100000 bdk0-spl.nb
pdocread -n 1 -b 0x10000 0 0x40000 bdk1-0-cid.nb
pdocread -n 1 -b 0x10000 0x10000 0x40000 bdk1-1.nb
pdocread -n 1 -b 0x10000 0x20000 0x40000 bdk1-2-serials.nb
pdocread -n 1 -b 0x10000 0x30000 0x40000 bdk1-3.nb
pdocread -n 1 -b 0x4000 0x10000 0x4000 bdk1-4-gsmdata.nb
pdocread -n 1 -b 0x40000 0x140000 0x280000 bdk1-5-gsmcode.nb
pdocread -n 1 -b 0x40000 0x380000 0x40000 bdk1-e.nb
pdocread -n 1 -G 0x30000 -b 0x10000 0xF0000 0x30000 bdk1-f-splash.nb

reading H3

pdocread -n 0 -b 0x40000 0 0x100000 bdk0-spl.nb
pdocread -S BK1A -n 1 -b 0x40000 -G 0x40000 0x00000 0x40000 A-cid.nb
pdocread -S BK1B -n 1 -b 0x40000 -G 0x40000 0x00000 0x40000 B-empty.nb
pdocread -S BK1C -n 1 -b 0x40000 -G 0x40000 0x00000 0x40000 C-serials.nb
pdocread -S BK1D -n 1 -b 0x40000 -G 0x40000 0x00000 0x40000 D-empty.nb
pdocread -S BK1E -n 1 -b 0x40000 -G 0x40000 0x00000 0x40000 E-gsmdata.nb
pdocread -S BK1F -n 1 -b 0x40000 -G 0x40000 0x00000 0x280000 F-gsmcode.nb
pdocread -S BK1G -n 1 -b 0x40000 -G 0x40000 0x00000 0x40000 G-splash.nb