Date: Wed, 6 May 2009 10:03:06 +0200 From: Jacques Fourie <jacques.fourie@gmail.com> To: Johan Simpson <jsimpson.za@gmail.com> Cc: freebsd-embedded@freebsd.org Subject: Re: FreeBSD 7.1 AMD Geode LX 800 / Compact Flash boot issues Message-ID: <be2f52430905060103p21b2688fj3570078379f4e217@mail.gmail.com> In-Reply-To: <9e6237170905060003n673711bdp2e36c3b55ead3b7f@mail.gmail.com> References: <9e6237170905060003n673711bdp2e36c3b55ead3b7f@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
> Hi all, im having some problems with getting FreeBSD to work on a new > embedded Geode based motherboard. > > This is the board im using: > http://files.ieiworld.com/files/news/080325/NOVA-LX_homepage.html > > To sum up what ive tried.. > > 1. When i boot the freebsd 7.1 dvd normally, sysinstall hangs at > probing devices. > 2. I managed to get a minimal install on the compact flash, by > disabling ACPI on the dvd's boot menu. > 3. Now i have FreeBSD 7.1 successfully installed on the CF card. > > > Here is where the problems start :( > > > It locks up right before/after the loader loads loader.conf. > > > Ive put some printf calls in the loader to see where exactly the system h= angs. > > > In src/sys/boot/common/interp.c,v 1.29.28.1 2008/11/25 02:59:29 kensmith = Exp $ > > ive found a problem in interact() > > -------------------------------------------------------------------------= ------ > #ifdef BOOT_FORTH > =A0 =A0bf_init(); > #endif > =A0 =A0 printf("Reached interact1\n"); =A0 =A0/*PUT IN BY ME */ > =A0 =A0/* > =A0 =A0 * Read our default configuration > =A0 =A0 */ > =A0 =A0if(include("/boot/loader.rc")!=3DCMD_OK) > =A0 =A0 =A0 =A0include("/boot/boot.conf"); > =A0 =A0printf("\n"); > =A0 =A0/* > =A0 =A0 * Before interacting, we might want to autoboot. > =A0 =A0 */ > =A0 =A0 printf("Reached interact2\n"); /*PUT IN BY ME */ > > =A0 =A0autoboot_maybe(); > > -------------------------------------------------------------------------= ---- > > It never gets to print "Reached interact2". > > > > So ive put in some printf's into include() > > which look like this: > > ----------------------------------------------------------- > > =A0printf("Including config file\n"); > =A0 =A0if (((fd =3D open(filename, O_RDONLY)) =3D=3D -1)) { > =A0 =A0 =A0 =A0sprintf(command_errbuf,"can't open '%s': %s\n", filename, = strerror(errno)); > =A0 =A0 =A0 =A0return(CMD_ERROR); > =A0 =A0} > =A0 =A0printf("Config file is open: %s\n", filename); > =A0 =A0/* > =A0 =A0 * Read the script into memory. > =A0 =A0 */ > =A0 =A0script =3D se =3D NULL; > =A0 =A0line =3D 0; > > =A0 =A0while (fgetstr(input, sizeof(input), fd) >=3D 0) { > > =A0 =A0 =A0 =A0printf("Reading.. %s\n", input); > > > > ------------------------------------------------------------ > > > It seems that include() is called 3 times. > > After which it hangs. So ive decided to print out the lines its > reading from the config files. > > > Turns out that its not reading the config files, but garbage data. > > What can i do to fix this problem, and is this a filesystem / CF problem? > > Im willing to fix up the problem, but need some advice from the > experts before i go look for the problem in the wrong places. > > > Thank you for your time > > Johan Simpson > _______________________________________________ > freebsd-embedded@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-embedded > To unsubscribe, send any mail to "freebsd-embedded-unsubscribe@freebsd.or= g" > Disable DMA by adding hw.ata.ata_dma=3D0 to /boot/loader.conf and see if it makes a difference. Jacques
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?be2f52430905060103p21b2688fj3570078379f4e217>