Skip site navigation (1)Skip section navigation (2)
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>