This is definitely a must have for any type of development.  If you're bitbaking an image, saving it to an SD card and then booting off of that ... you're wasting a lot of time.  It's nice to just extract the image to a directory on your computer and then boot it.  It made it real easy to fix that ttyO2 thing when all I had to do was change a file on my local drive.  I should note that my development environment is a VMware Ubuntu 10.04 LTS image (as per TI's DVSDK requirement).

The directions for an NFS boot can be found at Scott's website (here).  I didn't really use them because my first attempts at working with the Overo I was playing with TI's DVSDK.  It comes with a setup.sh file that will setup the NFS server and directories.  Therefore, my directories are a little different than Scott's but his discussion is great.

One change I did make was in the u-boot.  I tried briefly bitbaking a u-boot image but when I boot from it the baud rate looks all screwed up.  I'll mess with it later, not worth the time now.  I basically followed Scott's directions for configuring u-boot with NFS except I wanted to keep booting from the SD card as an option.  Therefore, my u-boot variables look like this:

bootdelay=5
baudrate=115200
loadaddr=0x82000000
console=ttyS2,115200n8
vram=12M
dvimode=1024x768MR-16@60
defaultdisplay=dvi
mmcroot=/dev/mmcblk0p2 rw
mmcrootfstype=ext3 rootwait
nandroot=/dev/mtdblock4 rw
nandrootfstype=jffs2
mmcargs=setenv bootargs console=${console} mpurate=${mpurate} vram=${vram} omapfb.mode=dvi:${dvimode} omapfb.debug=y omapdss.def_disp=${defaultdisplay} root=${mmcroot} rootfstype=${mmcrootfstype}
nandargs=setenv bootargs console=${console} mpurate=${mpurate} vram=${vram} omapfb.mode=dvi:${dvimode} omapfb.debug=y omapdss.def_disp=${defaultdisplay} root=${nandroot} rootfstype=${nandrootfstype}
loadbootscript=fatload mmc 0 ${loadaddr} boot.scr
bootscript=echo Running bootscript from mmc ...; source ${loadaddr}
loaduimage=fatload mmc 0 ${loadaddr} uImage
mmcboot=echo Booting from mmc ...; run mmcargs; bootm ${loadaddr}
nandboot=echo Booting from nand ...; run nandargs; nand read ${loadaddr} 280000 400000; bootm ${loadaddr}
dieid#=56d800029ff800000160716406013027
ethact=smc911x-0
mem=mem=96M@0x80000000 mem=384M@0x88000000
ipaddr=192.168.54.102
netmask=255.255.255.0
serverip=192.168.54.101
gatewayip=192.168.54.1
hostname=overo
ip=192.168.54.102:192.168.54.101:192.168.54.1:255.255.255.0:overo:eth0:none
nfsroot=/home/user/targetfs
nfsargs=setenv bootargs console=${console} mpurate=${mpurate} vram=${vram} ${mem} omapfb.mode=dvi:${dvimode} omapdss.def_dsp=${defaultdisplay} root=/dev/nfs rootfstype=nfs ip=${ip} nfsroot=${nfsroot} rootwait
loadnfskernel=tftp ${loadaddr} uImage.bin
nfsboot=echo Booting from nfs ...; run loadnfskernel; run nfsargs; bootm ${loadaddr}
bootnfs=true
mmcargs2=setenv bootargs console=${console} mpurate=${mpurate} vram=${vram} omapfb.mode=dvi:${dvimode} omapfb.debug=y omapdss.def_disp=${defaultdisplay} root=${mmcroot} rootfstype=${mmcrootfstype} ${mem}
bootargs=console=ttyS2,115200n8 mpurate=500 vram=12M omapfb.mode=dvi:1024x768MR-16@60 omapfb.debug=y omapdss.def_disp=dvi root=/dev/mmcblk0p2 rw rootfstype=ext3 rootwait
mem=96M@0x80000000 mem=384M@0x88000000
mmcboot2=echo Booting from mmc ...; run mmcargs2; bootm ${loadaddr}
bootcmd=if mmc init; then run loaduimage; run mmcboot2; else run nfsboot; fi
mpurate=1000
stdin=serial
stdout=serial
stderr=serial

What you'll notice is the added nfsboot, mmcargs2, and mmcboot2 variables.  I changed the bootcmd so that it checks the SD card, if it's there it boots it.  If not it boots from the NFS.  Now I can pull that card out to boot from my wired connection or pop in the SD card and go untethered (once I hook up a battery to the Chestnut).  You'll notice the mem variable, that was done to enable the DSP, I'll talk about that next.

Last modified Sun, 4 Sep, 2011 at 16:39