New IT forum
13 August 2022, 11:28:02 am *
Welcome, %1$s. Please login or register.

: CubieBoard 2 and Cubietruck both now in stock.
 
Pages: 1 [2]

Author Topic: GP+ booting from eSata - Phew!  (Read 17722 times)

apemberton

  • Full Member
  • ***
  • Posts: 187
Re: GP+ booting from eSata - Phew!
« Reply #15 on: 16 August 2011, 10:24:22 pm »

Paco,

I'm a bit hazy about the u-boot I used on the GP+ but I followed the wiki pagehttp://plugcomputer.org/plugwiki/index.php/Re-building_the_kernel_and_U-Boot to build u-boot. (Its the grey cells evaporating at a prodigious rate I'm afraid.) I compiled as per the instructions and had no problems with the result. I don't want to reboot and check the u-boot version in use as it is a bit inconvenient. The compiled object is 224964 octets and dated Apr 19 19:57 as u-boot.kwb. There will be a later version 'u-boot-2011.06' which should compile correctly as there is a good 'guruplug.h' file in 'u-boot-2011.06/include/configs'. The u-boot has the ide available and you can alter the commands you need by adjusting the commands in 'guruplug.h' (see included files for command list - can't quite remember the cmd_all_???.h file!). I compiled the guruplugs u-boot on an eSata sheevaplug but as it is also a kirkwood platform, the object is fine. The object was tftp'ed across in the normal way but I was suprised (and pleased) that it worked straight out of the box! no nasty JTAG/OpenOCD to cope with. I wish creating the sheevaplug u-boot was as simple but after tweaking 'sheevaplug.h' I have got a working u-boot-2011.06 on one of my sheevaplugs though I had to use JTAG/Openocd to get me out of a pickle there! I will be converting my other sheevaplugs in due course.

My fw_printenv for one of my guruplugs is:-

bootdelay=3
baudrate=115200
x_bootcmd_usb=usb start
x_bootcmd_kernel=nand read.e 0x6400000 0x100000 0x400000
x_bootargs=console=ttyS0,115200
x_bootargs_root=ubi.mtd=2 root=ubi0:rootfs rootfstype=ubifs
ethaddr=02:50:43:a6:4c:53
ethact=egiga0
eth1addr=02:50:43:2f:ce:09
mainlineLinux=yes
arcNumber=2097
fileaddr=6400000
bootargs_debian=console=ttyS0,115200 root=/dev/sdb2
bootcmd_nand=nand start; nand read.e 0x00800000 0x100000 0x400000; nand read.e 0x01100000 0x500000 0x600000
bootcmd=setenv bootargs $(bootargs_debian); run bootcmd_nand; bootm 0x00800000 0x01100000
arcnumber=2659
stdin=serial
stdout=serial
stderr=serial
ipaddr=192.168.2.98
serverip=192.168.2.248
filesize=36EC4

I didn't really bother with NAND or mmc. the kernel i am using is:-

2.6.38.2 #1 PREEMPT Wed Apr 13 12:50:36 UTC 2011 armv5tel GNU/Linux

I note that in the latest u-boot, arcNumber has bee replaced by machid followed by the hexadecimal string for the machine.

I have not compiled any version 3 kernels yet, my latest (on sheeva) is 2.6.39.3. Since all the kernel sources and patches are available courtesy of 'cbxbiker' and kernel.org, I should think there would be no problems using make menuconfig to change the esata setting from module load to built-in. I will be building a version 3 kernel soon but I am working on something else.

BTW, on another subject entirely, I never got Zoneminder to work with my Edimax and Y-CAM IP cameras. ZM works on a sheeva fine but there isn't a good enough example to describe how to configure for thes cams. Another day I will have a go at it but in the meantime, the cams are FTP'ing alarm snapshots to a NAS box so not mission critical.

My Guruplugs (with the external fan mods) are proving to be extremely reliable. I wish i could say the same for my sheevaplugs as I have replaced all but one of the PSU's and the one that hasn't (and it has been working for well over a year)  is out of service pending my ordering a new PSU.

BTW, is there any place to post object files hereabouts?

My 'u-boot-2011.06/include/configs/sheevaplug.h' :-
Code: [Select]
[email protected]:/u-boot-2011.06# more include/configs/sheevaplug.h
/*
 * (C) Copyright 2009
 * Marvell Semiconductor <www.marvell.com>
 * Written-by: Prafulla Wadaskar <[email protected]>
 *
 * See file CREDITS for list of people who contributed to this
 * project.
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License as
 * published by the Free Software Foundation; either version 2 of
 * the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
 * MA 02110-1301 USA
 */

#ifndef _CONFIG_SHEEVAPLUG_H
#define _CONFIG_SHEEVAPLUG_H

//#define DEBUG 1

/*
 * Version number information
 */
#define CONFIG_IDENT_STRING     "\nMarvell-Sheevaplug - eSATA - SD/MMC"

/*
 * High Level Configuration Options (easy to change)
 */
#define CONFIG_FEROCEON_88FR131 1       /* CPU Core subversion */
#define CONFIG_KIRKWOOD         1       /* SOC Family Name */
#define CONFIG_KW88F6281        1       /* SOC Name */
//#define CONFIG_MACH_SHEEVAPLUG        /* Machine type */
#define CONFIG_MACH_ESATA_SHEEVAPLUG    /* Machine type */
#define CONFIG_SKIP_LOWLEVEL_INIT       /* disable board lowlevel_init */

/*
 * Commands configuration
 */
#define CONFIG_SYS_NO_FLASH     /* Declare no flash (NOR/SPI) */
#include <config_cmd_default.h>
#define CONFIG_CMD_DHCP         /* DHCP Support                 */
#define CONFIG_CMD_ENV
#define CONFIG_CMD_IDE          /* IDE harddisk support         */
#define CONFIG_CMD_MII          /* MII support                  */
#define CONFIG_CMD_MMC          /* MMC support                  */
#define CONFIG_CMD_NAND         /* NAND support                 */
#define CONFIG_CMD_PING         /* ping support                 */
#define CONFIG_CMD_USB          /* USB Support                  */

/*
 * Custom CONFIG_SYS_PROMPT
 */

#define CONFIG_SYS_PROMPT       "U-Boot> "    /* Command Prompt */


/*
 * Custom CONFIG_SYS_NAND_BASE to locate start of nand
 */

#define CONFIG_SYS_NAND_BASE    0xD8000000      /* MV_DEFADR_NANDF */

/*
 * Custom CONFIG_SYS_TEXT_BASE to put u-boot into the nand kernel space
 */

#define CONFIG_SYS_TEXT_BASE    0x0600000

/*
 * mv-common.h should be defined after CMD configs since it used them
 * to enable certain macros
 */
#include "mv-common.h"

/*
 *  Environment variables configurations
 */
#ifdef CONFIG_CMD_NAND
#define CONFIG_ENV_IS_IN_NAND           1
#define CONFIG_ENV_SECT_SIZE            0x20000 /* 128K */
#else
#define CONFIG_ENV_IS_NOWHERE           1       /* if env in SDRAM */
#endif
/*
 * max 4k env size is enough, but in case of nand
 * it has to be rounded to sector size
 */
#define CONFIG_ENV_SIZE                 0x20000 /* 128k */
#define CONFIG_ENV_ADDR                 0x60000
#define CONFIG_ENV_OFFSET               0x60000 /* env starts here */

/*
 * Default environment variables
 */
#define CONFIG_BOOTCOMMAND              "dhcp; run x_bootcmd_usb; run x_bootcmd_sata; setenv machid 831; " \
        "run x_bootcmd_mmc; run x_bootcmd_nand\0"

#define CONFIG_MTDPARTS                "orion_nand:512k(uboot),[email protected](kernel),[email protected](rootfs) rw"
/*
#define CONFIG_MTDPARTS         "orion_nand:512k(uboot),"       \
        "[email protected](kernel),[email protected](psm),[email protected](rootfs) rw\0"
 */
#define CONFIG_EXTRA_ENV_SETTINGS      "x_bootargs_console=console=ttyS0,115200 [email protected]$serverip\0" \
       "ipaddr=192.168.2.240\0" \
       "serverip=192.168.2.248\0" \
       "arcNumber=2678\0" \
       "machid=a76\0" \
       "mainlineLinux=yes\0" \
       "ideload=ide reset; ext2load ide 0:1 0x800000 /uImage\0" \
       "mmcload=mmcinit; ext2load mmc 0:1 0x800000 /uImage; fatload mmc 0:1 0x800000 /uImage;\0" \
       "nandload=nand read 0x800000 0x100000 0x400000\0" \
       "x_bootcmd_nand=setenv $(x_bootargs_console) $(x_bootargs_nand); run nandload; bootm 0x800000\0"  \
       "x_bootcmd_usb=usb start;\0" \
       "x_bootcmd_sata=ide reset; setenv bootargs $(x_bootargs_console) $(x_bootargs_sata); run ideload; bootm 0x800000\0" \
       "x_bootcmd_mmc=setenv bootargs $(x_bootargs_console) $(x_bootargs_mmc); run mmcload; bootm 0x800000\0" \
       "x_bootargs_root=ubi.mtd=2 root=ubi0:rootfs rootfstype=ubifs\0" \
       "x_bootargs_sata=root=/dev/sda2 rw rootwait\0" \
       "x_bootargs_mmc=root=/dev/mmcblk0p2 rootdelay=5\0" \
       "x_bootargs_nand=mtdparts="CONFIG_MTDPARTS"\0"

/*
#define CONFIG_EXTRA_ENV_SETTINGS       "x_bootargs=console"    \
        "=ttyS0,115200 mtdparts="CONFIG_MTDPARTS        \
        "x_bootcmd_kernel=nand read 0x6400000 0x100000 0x300000\0" \
        "x_bootcmd_usb=usb start\0" \
        "x_bootargs_root=root=/dev/mtdblock3 rw rootfstype=jffs2\0"
 */
/*
 * Ethernet Driver configuration
 */
#ifdef CONFIG_CMD_NET
#define CONFIG_MVGBE_PORTS      {1, 0}  /* enable port 0 only */
#define CONFIG_PHY_BASE_ADR     0
#endif /* CONFIG_CMD_NET */

 /*
 * SDIO/MMC Card Configuration
 */
#ifdef CONFIG_CMD_MMC
#define CONFIG_MMC
#define CONFIG_MV_SDIO
#endif /* CONFIG_CMD_MMC */

/*
 * IDE Support on SATA port0
 */
#ifdef CONFIG_CMD_IDE
#define __io
#define CONFIG_CMD_EXT2
#define CONFIG_MVSATA_IDE
#define CONFIG_IDE_PREINIT
#define CONFIG_MVSATA_IDE_USE_PORT0
/* Needs byte-swapping for ATA data register */
#define CONFIG_IDE_SWAP_IO
/* Data, registers and alternate blocks are at the same offset */
#define CONFIG_SYS_ATA_DATA_OFFSET     (0x0100)
#define CONFIG_SYS_ATA_REG_OFFSET      (0x0100)
#define CONFIG_SYS_ATA_ALT_OFFSET      (0x0100)
/* Each 8-bit ATA register is aligned to a 4-bytes address */
#define CONFIG_SYS_ATA_STRIDE          4
/* Controller supports 48-bits LBA addressing */
#define CONFIG_LBA48
/* CONFIG_CMD_IDE requires some #defines for ATA registers */
//#define CONFIG_SYS_IDE_MAXBUS          1
//#define CONFIG_SYS_IDE_MAXDEVICE       1
/* ATA registers base is at SATA controller base */
//#define CONFIG_SYS_ATA_BASE_ADDR       KW_SATA_BASE
/* ATA bus 0 is Kirkwood port 1 on sheevaplug */
#define CONFIG_SYS_ATA_IDE0_OFFSET     KW_SATA_PORT1_OFFSET
#endif /* CONFIG_CMD_IDE */

/*
 * File system
 */
#define CONFIG_CMD_EXT2
#define CONFIG_CMD_FAT
#define CONFIG_CMD_JFFS2
#define CONFIG_CMD_UBI
#define CONFIG_CMD_UBIFS
#define CONFIG_RBTREE
#define CONFIG_MTD_DEVICE               /* needed for mtdparts commands */
#define CONFIG_MTD_PARTITIONS
#define CONFIG_CMD_MTDPARTS
#define CONFIG_LZO

/*
 Selected other commands not specific Sheevaplug or default commands
 */
//#define CONFIG_CMD_AMBAPP       /* AMBA Plug & Play Bus print utility */
//#define CONFIG_CMD_ASKENV       /* ask for env variable         */
//#define CONFIG_CMD_AT91_SPIMUX  /* AT91 MMC/SPI Mux Support     */
//#define CONFIG_CMD_BEDBUG       /* Include BedBug Debugger      */
//#define CONFIG_CMD_BMP          /* BMP support                  */
//#define CONFIG_CMD_BSP          /* Board Specific functions     */
#define CONFIG_CMD_CACHE        /* icache, dcache               */
//#define CONFIG_CMD_CDP          /* Cisco Discovery Protocol     */
//#define CONFIG_CMD_DATE         /* support for RTC, date/time...*/
#define CONFIG_CMD_DIAG         /* Diagnostics                  */
//#define CONFIG_CMD_DISPLAY      /* Display support              */
//#define CONFIG_CMD_DOC          /* Disk-On-Chip Support         */
//#define CONFIG_CMD_DTT          /* Digital Therm and Thermostat */
//#define CONFIG_CMD_EEPROM       /* EEPROM read/write support    */
//#define CONFIG_CMD_ELF          /* ELF (VxWorks) load/boot cmd  */
//#define CONFIG_CMD_FDC          /* Floppy Disk Support          */
//#define CONFIG_CMD_FDOS         /* Floppy DOS support           */
//#define CONFIG_CMD_HWFLOW       /* RTS/CTS hw flow control      */
//#define CONFIG_CMD_I2C          /* I2C serial bus support       */
//#define CONFIG_CMD_IMMAP        /* IMMR dump support            */
//#define CONFIG_CMD_IRQ          /* irqinfo                      */
//#define CONFIG_CMD_KGDB         /* kgdb                         */
//#define CONFIG_CMD_LICENSE      /* console license display      */
//#define CONFIG_CMD_MFSL         /* FSL support for Microblaze   */
//#define CONFIG_CMD_MG_DISK      /* mGine m(g)flash IO node support */
//#define CONFIG_CMD_ONENAND      /* OneNAND support              */
//#define CONFIG_CMD_PCI          /* pciinfo                      */
//#define CONFIG_CMD_PCMCIA       /* PCMCIA support               */
#define CONFIG_CMD_PORTIO       /* Port I/O                     */
#define CONFIG_CMD_REGINFO      /* Register dump                */
#define CONFIG_CMD_REISER       /* Reiserfs support             */
#define CONFIG_CMD_RARP         /* rarpboot support             */
//#define CONFIG_CMD_SAVES        /* save S record dump           */
//#define CONFIG_CMD_SCSI         /* SCSI Support                 */
#define CONFIG_CMD_SDRAM        /* SDRAM DIMM SPD info printout */
//#define CONFIG_CMD_SETEXPR      /* setexpr support              */
//#define CONFIG_CMD_SNTP         /* SNTP support                 */
//#define CONFIG_CMD_SPI          /* SPI utility                  */
//#define CONFIG_CMD_TERMINAL     /* built-in Serial Terminal     */
//#define CONFIG_CMD_UNIVERSE     /* Tundra Universe Support      */
//#define CONFIG_CMD_UNZIP        /* unzip from memory to memory  */

#endif /* _CONFIG_SHEEVAPLUG_H */


Logged
Tony Pemberton

apemberton

  • Full Member
  • ***
  • Posts: 187
Re: GP+ booting from eSata - Phew!
« Reply #16 on: 16 August 2011, 10:36:02 pm »

Paco, I forgot to ask, does your u-boot have the ide commands available to you? I didn't have to configure them myself as they were already present. It also looks like the latest 'guruplug.h' has the command available by default.
Logged
Tony Pemberton

PacoLM

  • Full Member
  • ***
  • Posts: 108
Re: GP+ booting from eSata - Phew!
« Reply #17 on: 17 August 2011, 06:54:17 am »

Quote from: apemberton
bootargs_debian=console=ttyS0,115200 root=/dev/sdb2
bootcmd_nand=nand start; nand read.e 0x00800000 0x100000 0x400000; nand read.e 0x01100000 0x500000 0x600000
bootcmd=setenv bootargs $(bootargs_debian); run bootcmd_nand; bootm 0x00800000 0x01100000

This is one of the thing I do not understand. I copied the content of the entire filesystem from the nand to the external esata disk, and changed the uboot parameters in a similar way you do, but still do not work. Do I need to do something else to have a really bootable esata drive?. Maybe my mistake was to create 2 partitions (ext3(boot) + swap). In some posts I've read that only ext2 is supported, perhaps reformatting the hard disk and creating the ext2+swap and then copying the files should work, what do you think?. Which steps did you followed to get a bootable drive?.

Quote from: apemberton
BTW, on another subject entirely, I never got Zoneminder to work with my Edimax and Y-CAM IP cameras. ZM works on a sheeva fine but there isn't a good enough example to describe how to configure for thes cams. Another day I will have a go at it but in the meantime, the cams are FTP'ing alarm snapshots to a NAS box so not mission critical.

 Here I could help you, my Zoneminder guruplug-based system has 3 ipcams, and I have now a lot of experience on setting up ZM, so feel free to ask about it!.

Logged

PacoLM

  • Full Member
  • ***
  • Posts: 108
Re: GP+ booting from eSata - Phew!
« Reply #18 on: 17 August 2011, 06:55:05 am »

Paco, I forgot to ask, does your u-boot have the ide commands available to you? I didn't have to configure them myself as they were already present. It also looks like the latest 'guruplug.h' has the command available by default.

 Yes, it has the ide commands.
Logged

apemberton

  • Full Member
  • ***
  • Posts: 187
Re: GP+ booting from eSata - Phew!
« Reply #19 on: 17 August 2011, 08:30:59 am »

Paco,

No, it is not necessary to be able to boot from NAND or SDHC unless you want to. As you can see, I didn't bother with NAND booting - remains of loading an initrd from NAND. All that is needed is to load uImage from the first partition of your disk (I'm not using any initrd) and set the root to the partition you choose to have your root system on. You should edit '/etc/fstab' to prperly mount your disk partitions but I'm sure you knew that anyway. ESata is a real performance boost.

I have never tried bootstrapping debian with a new u-boot though I shouldn't think that would give problems.

Overnight I have remembered three things.

1) I am not sure if the unmodified guruplug u-boot has mmc capability? It was necessary to provide patches as available in 2) below for sheevaplugs.

2) To make sheevaplug u-boot-2011.06 work I had to apply patches available from http://people.debian.org/~tbm/u-boot/2011.03-6/u-boot_2011.03-6.debian.tar.gz which worked fine. BTW, there are interesting u-boot's there including dreamplug though I have no need for those.

3) Additional info which was helpful was at http://www.plugcomputer.org/plugforum/index.php?topic=5884.0 and http://www.cyrius.com/debian/kirkwood/sheevaplug/uboot-upgrade.html

Thanks for the offer on Zoneminder and I might like to get your help when i get round to trying it out again.

I'm quite looking forward to getting one of the TrimSlice boxes (now with added hard disk) and a large LED monitor. Shame Nvidia are in the closet so far as providing decent SoC datasheets.

Have fun, Tony
 
 
Logged
Tony Pemberton

PacoLM

  • Full Member
  • ***
  • Posts: 108
Re: GP+ booting from eSata - Phew!
« Reply #20 on: 17 August 2011, 09:59:51 pm »

Done, I have followed the instructions here -> http://www.cyrius.com/debian/kirkwood/sheevaplug/install.html

Everything run smooth now in the esata drive, I'm setting up the second guruplug to replace my previous ZM system. Now I wil have everything in the same disk, system + events!

Thanks!

PacoLM
Logged
Pages: 1 [2]
 
 

Powered by MySQL Powered by PHP SMF 2.0.10 | SMF © 2015, Simple Machines Valid XHTML 1.0! Valid CSS!