FreeBSD 7.1 AMD Geode LX 800 / Compact Flash boot issues

Jacques Fourie jacques.fourie at gmail.com
Wed May 6 08:26:31 UTC 2009


> 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 hangs.
>
>
> 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
>    bf_init();
> #endif
>     printf("Reached interact1\n");    /*PUT IN BY ME */
>    /*
>     * Read our default configuration
>     */
>    if(include("/boot/loader.rc")!=CMD_OK)
>        include("/boot/boot.conf");
>    printf("\n");
>    /*
>     * Before interacting, we might want to autoboot.
>     */
>     printf("Reached interact2\n"); /*PUT IN BY ME */
>
>    autoboot_maybe();
>
> -----------------------------------------------------------------------------
>
> It never gets to print "Reached interact2".
>
>
>
> So ive put in some printf's into include()
>
> which look like this:
>
> -----------------------------------------------------------
>
>  printf("Including config file\n");
>    if (((fd = open(filename, O_RDONLY)) == -1)) {
>        sprintf(command_errbuf,"can't open '%s': %s\n", filename, strerror(errno));
>        return(CMD_ERROR);
>    }
>    printf("Config file is open: %s\n", filename);
>    /*
>     * Read the script into memory.
>     */
>    script = se = NULL;
>    line = 0;
>
>    while (fgetstr(input, sizeof(input), fd) >= 0) {
>
>        printf("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 at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-embedded
> To unsubscribe, send any mail to "freebsd-embedded-unsubscribe at freebsd.org"
>
Disable DMA  by adding hw.ata.ata_dma=0 to /boot/loader.conf and see
if it makes a
difference.

Jacques


More information about the freebsd-embedded mailing list