From coreboot
Revision as of 22:38, 4 March 2007 by Uwe (talk | contribs) (Move obsolete FAQ items to FAQ/Obsolete. Leave them there, because maybe someone still finds the information useful.)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Probably Obsolete FAQ Items

How do I burn a DoC?

A DoC (Disk on Chip) is a storage device aiming at serving as both boot-ROM and background storage (CF disk) to save circuit board space and pin-count, e.g. in a digital camera.

Currently, only the DoC Millennium is supported. See the documentation.

How do I put a filesystem on DoC?

OK, here is a little HOWTO on how to set up MTD with a file system.

This is a m810lmr, booting out of DoC. I am going to reserve the first 2M for kernel. So the layout will be the first 2M for linuxbios and kernel, and 6M for a file system. Kernel is 2.4.17, with linux-2.4.17-sis.patch from linuxbios source tree, and config-2.4.17-sis from the linuxbios source tree. Mainboard is the pcchips m810lmr.

So I:

modprobe doc2001 
modprobe docprobe 

which shows:

DiskOnChip Millennium found at address 0xFFFC8000 
Flash chip found: Manufacturer ID: 98, Chip ID: E6 (Toshiba TC58V64AFT/DC) 
1 flash chips found. Total DiskOnChip size: 8 MiB 
mtd: Giving out device 0 to DiskOnChip Millennium 
Ignoring DiskOnChip Millennium at 0xFFFCA000 - already configured 
Ignoring DiskOnChip Millennium at 0xFFFCC000 - already configured 
Ignoring DiskOnChip Millennium at 0xFFFCE000 - already configured 
Ignoring DiskOnChip Millennium at 0xFFFD0000 - already configured 
Ignoring DiskOnChip Millennium at 0xFFFD2000 - already configured 
Ignoring DiskOnChip Millennium at 0xFFFD4000 - already configured 
Ignoring DiskOnChip Millennium at 0xFFFD6000 - already configured 
Now I need MTD utilities. 
So I: 
cvs -d :pserver:anoncvs@cvs.infradead.org:/home/cvs login 
CVS password: 

(password is anoncvs) 
cvs -d :pserver:anoncvs@cvs.infradead.org:/home/cvs co mtd 

Forget the drivers and such, you don't need them. What you need is the tools.

cd mtd/tools 

Go ahead and copy the executables somewhere handy, you'll need them.

Now we need to make the last 6M into a "disk". We need to format it. The tool is nftl_format, so:

[root@carly util]# ./nftl_format 
$Id: nftl_format.c,v 1.17 2001/08/29 14:28:48 dwmw2 Exp $ 
Usage: ./nftl_format [ []] 
[root@carly util]# expr 2048 \* 1024 
[root@carly util]# expr 6 \* 1024 \* 1024 
[root@carly util]# ./nftl_format /dev/mtd0 2097152 6291456 
$Id: nftl_format.c,v 1.17 2001/08/29 14:28:48 dwmw2 Exp $ 
Phase 1. Checking and erasing Erase Zones from 0x00200000 to 0x00800000 
Phase 2.a Writing NFTL Media Header and Bad Unit Table 
Phase 2.b Writing Spare NFTL Media Header and Spare Bad Unit Table 
Phase 3. Writing Unit Control Information to each Erase Unit 

we now have a formatted disk in there. We can now partition it.

[root@carly util]# modprobe nftl 

dmesg shows LOTS of errors, since this was never partitioned ...

Also, if you don't have /dev/nftla,

[root@carly util]# mknod /dev/nftla b 93 0 

Don't use the script just yet, it makes /dev/nftla as b 93 16, which is the wrong unit #.

now fdisk /dev/nftla

[root@carly util]# fdisk /dev/nftlA 
Command (m for help): n 
Command action 
e extended 
p primary partition (1-4) 
Partition number (1-4): 1 
First cylinder (1-1, default 1): 
Using default value 1 
Command (m for help): p 
Disk /dev/nftlA: 1 heads, 12224 sectors, 1 cylinders 
Units = cylinders of 12224 * 512 bytes 
Device Boot Start End Blocks Id System 
/dev/nftlA1 1 1 6111+ 83 Linux 
Partition 1 has different physical/logical endings: 
phys=(768, 0, 0) logical=(0, 0, 12224) 
Partition 1 does not end on cylinder boundary: 
phys=(768, 0, 0) should be (768, 0, 12224) 
Command (m for help): w 
The partition table has been altered! 
Calling ioctl() to re-read partition table. 
WARNING: If you have created or modified any DOS 6.x partitions, please see the fdisk manual page for additional information. 
Syncing disks. 
[root@carly util]# mknod /dev/nftlA1 b 93 1 
[root@carly util]# mke2fs /dev/nftlA1 
mke2fs 1.23, 15-Aug-2001 for EXT2 FS 0.5b, 95/08/09 
Filesystem label= 
OS type: Linux 
Block size=1024 (log=0) 
Fragment size=1024 (log=0) 
1528 inodes, 6111 blocks 
305 blocks (4.99%) reserved for the super user 
First data block=1 
1 block group 
8192 blocks per group, 8192 fragments per group 
1528 inodes per group 
Writing inode tables: done 
Writing superblocks and filesystem accounting information: done 

This filesystem will be automatically checked every 37 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override.

[root@carly util]# mount /dev/nftlA1 /mnt 
[root@carly util]# cd /mnt 
[root@carly mnt]# df . 
Filesystem 1k-blocks Used Available Use% Mounted on 
/dev/nftlA1 5915 13 5597 1% /mnt 
[root@carly mnt]# 

and so you now have an ext2 file system on the DoC.

(Above is from Ron Minnich)