[U-Boot] U-Boot on the POGO-E02

Karl O. Pinc kop at meme.com
Fri Jul 27 06:57:05 CEST 2012


Hi,

I'm trying to get the latest U-Boot on a
Pogoplug (Pink) POGO-E02.  I've gotten
so far as to get something to compile and
thought I'd check here to see if I'm on the
right track.

The pink Pogoplug is a sheevaplug but
with 256M of RAM instead of 1G.
All it needs is a different kwbimage.cfg
file, it's not really a whole new board,
so I've taken pains not to just duplicate
the sheevaplug board but instead to
create a new target with a different
kwbimage.  (Is the trick with
CONFIG_SYS_KWD_CONFIG the right
approach?)

The appended patch is to the latest U-Boot
release, 2012-04.  I'll see about sending
a patch with git as described in the
FAQ if I get something working.

This patch is not to apply, but I'm
having a problem because the patch
wraps.  boards.cfg contains long
lines, and some of the original
source has long lines as well.
What to do?

Thanks for the help.

Karl <kop at meme.com>
Free Software:  "You don't pay back, you pay forward."
                 -- Robert A. Heinlein


-----------<snip>------------------
diff '--exclude=*~' -ruN u-boot-2012.04.orig/board/Marvell/sheevaplug/
kwbimage-pogoplug_e02.cfg u-boot-2012.04-pogo//board/Marvell/
sheevaplug/kwbimage-pogoplug_e02.cfg
--- u-boot-2012.04.orig/board/Marvell/sheevaplug/kwbimage-
pogoplug_e02.cfg	1969-12-31 18:00:00.000000000 -0600
+++ u-boot-2012.04-pogo//board/Marvell/sheevaplug/kwbimage-
pogoplug_e02.cfg	2012-07-26 21:18:10.000000000 -0500
@@ -0,0 +1,166 @@
+#
+# (C) Copyright 2009
+# Marvell Semiconductor <www.marvell.com>
+# Written-by: Prafulla Wadaskar <prafulla at marvell.com>
+# Modified for the POGO-E02 by: Karl O. Pinc <kop at meme.com>
+#
+# 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
+#
+# This is the kwbimage.cfg file for the Pogoplug (Pink) POGO-E02.
+# It is the same as the sheevaplug image (Sheevaplug Development kit
+# board) except that the sheevaplug has 1G of ram and this has only
+# 256M.
+#
+# Refer doc/README.kwbimage for more details about how-to configure
+# and create kirkwood boot image
+#
+
+# Boot Media configurations
+BOOT_FROM	nand
+NAND_ECC_MODE	default
+NAND_PAGE_SIZE	0x0800
+
+# SOC registers configuration using bootrom header extension
+# Maximum KWBIMAGE_MAX_CONFIG configurations allowed
+
+# Configure RGMII-0 interface pad voltage to 1.8V
+DATA 0xFFD100e0 0x1b1b1b9b
+
+#Dram initalization for SINGLE x16 CL=5 @ 400MHz
+DATA 0xFFD01400 0x43000c30	# DDR Configuration register
+# bit13-0:  0xc30 (3120 DDR2 clks refresh rate)
+# bit23-14: zero
+# bit24: 1= enable exit self refresh mode on DDR access
+# bit25: 1 required
+# bit29-26: zero
+# bit31-30: 01
+
+DATA 0xFFD01404 0x37543000	# DDR Controller Control Low
+# bit 4:    0=addr/cmd in smame cycle
+# bit 5:    0=clk is driven during self refresh, we don't care for APX
+# bit 6:    0=use recommended falling edge of clk for addr/cmd
+# bit14:    0=input buffer always powered up
+# bit18:    1=cpu lock transaction enabled
+# bit23-20: 5=recommended value for CL=5 and STARTBURST_DEL disabled 
bit31=0
+# bit27-24: 7= CL+2, STARTBURST sample stages, for freqs 400MHz, 
unbuffered DIMM
+# bit30-28: 3 required
+# bit31:    0=no additional STARTBURST delay
+
+DATA 0xFFD01408 0x22125451	# DDR Timing (Low) (active cycles
value 
+1)
+# bit3-0:   TRAS lsbs
+# bit7-4:   TRCD
+# bit11- 8: TRP
+# bit15-12: TWR
+# bit19-16: TWTR
+# bit20:    TRAS msb
+# bit23-21: 0x0
+# bit27-24: TRRD
+# bit31-28: TRTP
+
+DATA 0xFFD0140C 0x00000a33	#  DDR Timing (High)
+# bit6-0:   TRFC
+# bit8-7:   TR2R
+# bit10-9:  TR2W
+# bit12-11: TW2W
+# bit31-13: zero required
+
+DATA 0xFFD01410 0x0000000d     #  DDR Address Control
+# bit1-0:   10, Cs0width=x2
+# bit3-2:   11, Cs0size=1Gb
+# bit5-4:   00, Cs1width=nonexistant
+# bit7-6:   00, Cs1size =nonexistant
+# bit9-8:   00, Cs2width=nonexistent
+# bit11-10: 00, Cs2size =nonexistent
+# bit13-12: 00, Cs3width=nonexistent
+# bit15-14: 00, Cs3size =nonexistent
+# bit16:    0,  Cs0AddrSel
+# bit17:    0,  Cs1AddrSel
+# bit18:    0,  Cs2AddrSel
+# bit19:    0,  Cs3AddrSel
+# bit31-20: 0 required
+
+DATA 0xFFD01414 0x00000000	#  DDR Open Pages Control
+# bit0:    0,  OpenPage enabled
+# bit31-1: 0 required
+
+DATA 0xFFD01418 0x00000000	#  DDR Operation
+# bit3-0:   0x0, DDR cmd
+# bit31-4:  0 required
+
+DATA 0xFFD0141C 0x00000C52	#  DDR Mode
+# bit2-0:   2, BurstLen=2 required
+# bit3:     0, BurstType=0 required
+# bit6-4:   4, CL=5
+# bit7:     0, TestMode=0 normal
+# bit8:     0, DLL reset=0 normal
+# bit11-9:  6, auto-precharge write recovery ????????????
+# bit12:    0, PD must be zero
+# bit31-13: 0 required
+
+DATA 0xFFD01420 0x00000040	#  DDR Extended Mode
+# bit0:    0,  DDR DLL enabled
+# bit1:    0,  DDR drive strenght normal
+# bit2:    0,  DDR ODT control lsd (disabled)
+# bit5-3:  000, required
+# bit6:    1,  DDR ODT control msb, (disabled)
+# bit9-7:  000, required
+# bit10:   0,  differential DQS enabled
+# bit11:   0, required
+# bit12:   0, DDR output buffer enabled
+# bit31-13: 0 required
+
+DATA 0xFFD01424 0x0000F17F	#  DDR Controller Control High
+# bit2-0:  111, required
+# bit3  :  1  , MBUS Burst Chop disabled
+# bit6-4:  111, required
+# bit7  :  0
+# bit8  :  1  , add writepath sample stage, must be 1 for DDR freq >= 
300MHz
+# bit9  :  0  , no half clock cycle addition to dataout
+# bit10 :  0  , 1/4 clock cycle skew enabled for addr/ctl signals
+# bit11 :  0  , 1/4 clock cycle skew disabled for write mesh
+# bit15-12: 1111 required
+# bit31-16: 0    required
+
+DATA 0xFFD01428 0x00085520	# DDR2 ODT Read Timing (default
values)
+DATA 0xFFD0147C 0x00008552	# DDR2 ODT Write Timing (default 
values)
+
+DATA 0xFFD01500 0x00000000	# CS[0]n Base address to 0x0
+DATA 0xFFD01504 0x07FFFFF1      # CS[0]n Size
+# bit0:    1,  Window enabled
+# bit1:    0,  Write Protect disabled
+# bit3-2:  00, CS0 hit selected
+# bit23-4: ones, required
+# bit31-24: 0x07, Size (i.e. 2^3x16MB=128MB)
+
+DATA 0xFFD0150C 0x00000000      # CS[1]n Size, window disabled
+DATA 0xFFD01514 0x00000000	# CS[2]n Size, window disabled
+DATA 0xFFD0151C 0x00000000	# CS[3]n Size, window disabled
+
+DATA 0xFFD01494 0x00030000	#  DDR ODT Control (Low)
+DATA 0xFFD01498 0x00000000	#  DDR ODT Control (High)
+# bit1-0:  00, ODT0 controlled by ODT Control (low) register above
+# bit3-2:  01, ODT1 active NEVER!
+# bit31-4: zero, required
+
+DATA 0xFFD0149C 0x0000E803	# CPU ODT Control
+DATA 0xFFD01480 0x00000001	# DDR Initialization Control
+#bit0=1, enable DDR init upon this register write
+
+# End of Header extension
+DATA 0x0 0x0
diff '--exclude=*~' -ruN u-boot-2012.04.orig/boards.cfg u-boot-2012.04-
pogo//boards.cfg
--- u-boot-2012.04.orig/boards.cfg	2012-04-21 11:55:26.000000000 
-0500
+++ u-boot-2012.04-pogo//boards.cfg	2012-07-26 21:23:47.000000000

-0500
@@ -151,6 +151,7 @@
 openrd_base                  arm         arm926ejs   openrd            
Marvell        kirkwood        openrd:BOARD_IS_OPENRD_BASE
 openrd_client                arm         arm926ejs   openrd            
Marvell        kirkwood        openrd:BOARD_IS_OPENRD_CLIENT
 openrd_ultimate              arm         arm926ejs   openrd            
Marvell        kirkwood        openrd:BOARD_IS_OPENRD_ULTIMATE
+pogoplug_e02                 arm         arm926ejs   sheevaplug        
Marvell        kirkwood        sheevaplug:BOARD_IS_POGOPLUG_E02
 rd6281a                      arm         arm926ejs   -                 
Marvell        kirkwood
 sheevaplug                   arm         arm926ejs   -                 
Marvell        kirkwood
 dockstar                     arm         arm926ejs   -                 
Seagate        kirkwood
diff '--exclude=*~' -ruN u-boot-2012.04.orig/doc/README.pogoplug_e02 u-
boot-2012.04-pogo//doc/README.pogoplug_e02
--- u-boot-2012.04.orig/doc/README.pogoplug_e02	1969-12-31 
18:00:00.000000000 -0600
+++ u-boot-2012.04-pogo//doc/README.pogoplug_e02	2012-07-26 
21:50:41.000000000 -0500
@@ -0,0 +1,47 @@
+The Pogoplug (Pink) Model POGO-E02 is a consumer product based on the
+Marvell Sheevaplug Developers kit, the sheevaplug board.  It differs
+from the Sheevaplug in that where the Sheevaplug has 1G of RAM, the
+Pogoplug POGO-E02 has only 256M of RAM.  The Sheevaplug is also a nice
+small white brick, whereas the POGO-E02 is a pink and white plastic
+monstrosity.  The POGO-E02 has no external serial connector and must
+be opened by popping the case to get to the 3.3v serial connector.
+
+Note that there are other Pogoplug models.  This will work only
+with the POGO-E02.
+
+Description of the 3.3v serial connector:
+
+When 'gap' in the keyed connector is "up".  Pins, left to right are:
+
+3.3v
+TXD
+RXD
+GND
+
+The neighboring connector is a standard 10 pin JTAG.
+
+The serial port may be used to talk to the existing U-Boot command
+interface to obtain the configuration environment and load a new
+U-Boot.  (A 3.3v RS232 to USB serial converter is useful here, and
+quite cheap.  $2.37, if you're willing to wait for shipping from
+Singapore.)  Of course this means you're trusting the factory U-Boot
+code.  If you're paranoid use the JTAG interface.
+
+Code for the factory installed U-Boot is at:
+
+http://download.pogoplug.com/opensource/pogoplug-u-
boot-1.1.4.pp2.0.tar.bz2
+
+The interesting bits are:
+
+dramregs_pp128_A.txt A file which has the 512 byte U-Boot header
+                     describing how to setup the board.  This was
+                     prepened to the u-boot.img file with
+                     tools/doimage program.
+
+The change to Das U-Boot is to add a pogoplug_e02 the sheevaplug
+target to support this alternate header.  The header is in
+"board/Marvell/sheevaplug/kwbimage-pogoplug_e02.cfg".
+
+See also: doc/README.kwbimage
+
+26 July, 2012  Karl O. Pinc <kop at meme.com>
diff '--exclude=*~' -ruN u-boot-2012.04.orig/include/configs/
sheevaplug.h u-boot-2012.04-pogo//include/configs/sheevaplug.h
--- u-boot-2012.04.orig/include/configs/sheevaplug.h	2012-04-21 
11:55:26.000000000 -0500
+++ u-boot-2012.04-pogo//include/configs/sheevaplug.h	2012-07-26 
23:34:14.000000000 -0500
@@ -28,7 +28,11 @@
 /*
  * Version number information
  */
+#ifdef CONFIG_BOARD_IS_POGOPLUG_E02     /* Pogoplug (Pink) POGO-E02 */
+#define CONFIG_IDENT_STRING	"\nPogoplug-POGO-E02"
+#else                                   /* Default: Marvell Sheevaplug 
*/
 #define CONFIG_IDENT_STRING	"\nMarvell-Sheevaplug"
+#endif /* CONFIG_BOARD_IS_POGOPLUG_E02 */
 
 /*
  * High Level Configuration Options (easy to change)
@@ -50,6 +54,17 @@
 #define CONFIG_CMD_NAND
 #define CONFIG_CMD_PING
 #define CONFIG_CMD_USB
+
+/*
+ * Kirkwood Data file used to initialize board.
+ * (Default, the Sheevaplug Development Kit board, is kwbimage.cfg.)
+ * Must be defined before mv-common.h.
+ */
+#ifdef CONFIG_BOARD_IS_POGOPLUG_E02     /* Pogoplug (Pink) POGO-E02 */
+/* Different RAM configuration for the POGO-E02. */
+#define CONFIG_SYS_KWD_CONFIG $(SRCTREE)/$(CONFIG_BOARDDIR)/kwbimage-
pogoplug_e02.cfg
+#endif /* CONFIG_BOARD_IS_POGOPLUG_E02 */
+
 /*
  * mv-common.h should be defined after CMD configs since it used them
  * to enable certain macros
diff '--exclude=*~' -ruN u-boot-2012.04.orig/MAINTAINERS u-
boot-2012.04-pogo//MAINTAINERS
--- u-boot-2012.04.orig/MAINTAINERS	2012-04-21 11:55:26.000000000

-0500
+++ u-boot-2012.04-pogo//MAINTAINERS	2012-07-26
01:16:09.000000000 
-0500
@@ -769,6 +769,10 @@
 	davinci_dm365evm	ARM926EJS
 	davinci_dm6467evm	ARM926EJS
 
+Karl O. Pinc <kop at meme.com>
+
+     	pogoplug_e02		ARM926EJS (Kirkwood SoC)
+
 Helmut Raiger <helmut.raiger at hale.at>
 
 	tt01		i.MX31




More information about the U-Boot mailing list