This is the nanoEngine "build from pristine sources" kit, version 0.8, by Larry Doolittle January 10, 2003 This kit is posted at http://recycle.lbl.gov/~ldoolitt/bse/ Look in index.html for general information. One very important note on reliability: many boards, including current releases of the nanoEngine, have broken Flash reset circuitry. If a reset happens when the software is writing to the Flash, there will always be a possibility of a reset getting stuck, and a power cycle is required to un-stick it. Current versions of the Linux mtd (Flash chip) driver do not take this into consideration, and dramatically _increase_ the chance of such failure. At some point I may modify the driver to minimize the possibility of triggering such a failed reset, but it is impossible to eliminate entirely. If you need a reliable reboot (without cycling the power), disable MTD support in the Linux kernel, or hack the hardware to give a proper reset to the 28F320B3B Flash chip. See http://lists.infradead.org/pipermail/linux-mtd/2001-August/003041.html Once you have all the "stuff" itemized in downloads.html, the contents of this kit will tie up loose ends, and script your way to a working nanoEngine and development system. Of course, you can use the files on Bright Star's eLinux SDK CD-ROM, instead, but I think this method has more lasting value. Files you will find here: index.html introductory documentation downloads.html URLs for downloading source code README this file README.build instructions for performing the build README.booting instructions for booting the nanoEngine etc/ minimal /etc tree for your embedded system src/ source for nanoEngine utilities nanofix/ source for boot transition layer Flash->Linux unpack-all script to unpack sources build-tools script to build binutils, gcc, glibc, linux kernel build-root script to build binaries for root filesystem make_image_arm script to convert root tree to ramdisk image write_devs used by make_image_arm strace-4.2-patch glibc-2.1.3-stdio.texi.patch busybox-0.60.5-cleanup upstream-urls data incorporated in downloads.html todo list of unresolved "issues" src/fpget.c was provided by Stuart Adams of BSE, although I modified it slightly for the purposes of this kit. There is an additional README file in the src directory. Compared to the previously posted version 0.7, this copy has updated busybox-0.60.3 to busybox-0.60.5 genext2fs_1.3-1 to genext2fs_1.3-2 Mostly it fixes a few typos, and fixes up the glibc build to work properly on a Red Hat 7.3 host. It now appears to run properly on RH5.2 and RH6.2 (both upgraded to gcc-2.95.3), as well as RH7.3 and RH8.0. I also added a hook to the init script to tftp a shell script and run it. See etc/init.d/rcS . Compared to the previously posted version 0.6, this copy has updated glibc-2.1.2 to glibc-2.1.3 binutils-2.9.5.0.22 to binutils-2.10.1 linux-2.4.9-ac10-rmk2-np1 to linux-2.4.18-rmk7 busybox-0.60.2 to busybox-0.60.3 It adds termcap-1.3.1 and procinfo-18. It also adds Vladimir Oleynik's telnetd applet to busybox, and radically changes the boot sequence. See README.booting. Compared to the previously posted version 0.4, version 0.6 had updated linux-2.4.2-rmk1-np2 to linux-2.4.9-ac10-rmk2-np1 busybox-0.51 to busybox-0.60.2 including fully functional Flash support (MTD and JFFS2). See note above about the interaction of Flash and reset. Possibly more important, an old glibc configuration bug was fixed, and root privilege is no longer needed to make the ramdisk image, thanks to genext2fs. Compared to the previously posted version 0.1, version 0.4 had updated: gcc-2.95.2 to gcc-2.95.3 linux-2.4.0-test10-rmk1 to linux-2.4.2-rmk1-np2 busybox-0.47 to busybox-0.51 internal ntpclient to ntpclient_2000_345 net-tools-1.57 absorbed by busybox internal adjtimex absorbed by busybox To use this kit: Read index.html (you probably did this a long time ago, it's a copy of the web page http://recycle.lbl.gov/~ldoolitt/bse/ ) Read this README file Download all the files in downloads.html Read, customize, and run the commands in README.build Turn on and configure your nanoEngine according to its manual, and the instructions in README.booting Some measured data points to guide your expectations on how long it takes to actually perform the build: 70 minutes on 400 MHz P2 40 minutes on 850 MHz Duron 15 minutes on 2.2 GHz P4 If you want your nanoEngine to set its clock at boot time, define (with the BSE monitor Flash commands) one of the parameters timehost or ntphost (set it to the IP address of a time server). You might want to peruse etc/init.d/rcS and src/hostconfig.c, to see what other Flash parameter setup features are supported during the Linux boot sequence, and add more if you want them. Whenever you want to build binaries for the nanoEngine do: PATH=$PREFIX/bin:$PATH (this can go in your .profile, make sure $PREFIX matches what you set above). Invoke the compiler as "arm-linux-gcc". Often that is easily done by saying "make CC=arm-linux-gcc". You can also put the PATH adjustment and "CC=arm-linux-gcc" at the beginning of a Makefile. On the nanoEngine, if you want to NFS mount a disk, do something like: $ mkdir -p /mnt/workstation $ mount -n -t nfs -o nolock 192.168.0.10:/home/mortal/bse /mnt/workstation Where 192.168.0.10 is the IP address of the NFS server (I never trust DNS for something this important). I believe the "-o nolock" flag applies to any Linux-2.4 kernel NFS mounting from an NFSv2 server. I know if I leave it off, the mount command hangs for 30 seconds, then succeeds with a warning.