Flameman/sandpoint3

From eLinux.org
< Flameman
Revision as of 18:36, 15 December 2009 by Flameman (Talk | contribs)

Jump to: navigation, search

index [[1]]

good seller about embedded board http://www.brightstareng.com/products.htm good info http://penguinppc.org/embedded/howto/x97.html


Motorola Sandpoint X3, a bit about the ppc reference platform

The Sandpoint is a reference platform designed by Motorola to help people develop hardware and software around various PowerPC processors. The basic system is an ATX form-factor motherboard with standard PC devices (IDE, floppy, serial, parallel), 4 PCI slots, and a mezzanine slot to which several different processor modules may be attached.

The Sandpoint evaluation system demonstrates the capabilities of Freescale PowerPC™ processors and the Tundra Tsi107™ PowerPC Host Bridge. The Sandpoint Evaluation System is the ideal platform for software development and debug, as well as for hardware development.

The Sandpoint evaluation system provides an example that can be used in designing other systems based on implementations of the PowerPC instruction set architecture, and a platform for developing and debugging software for these processors and associated bridge chips.

The motherboard inside the Sandpoint evaluation system is an ATX form factor with PCI Mezzanine (PMC) connectors that accepts a processor module. The processor module options are listed below. Links to the processor module web pages can be found under Evaluation/Development Boards and Systems on this page.

Overview

  • MPC8245 integrated host processor
  • JTAG connector on PMC module
  • One PMC slot on motherboard to accept processor PMC modules
  • Switch-selectable modes
  • Four 5V 32-bit PCI slots at 33 MHz
  • Two standard 16650-compatible serial ports
  • IEEE 1284 parallel port
  • NVRAM and real-time clock (RTC)
  • Two IDE ports
  • LED monitors critical functions
  • Advanced Power Controller ("soft on/off")


Screen shot

I/O system initialized...
Environment is not valid...
Skipping system setup...
RealTime Clock: not running/set.
Memory Enabled: [ 64MB at CL=3 ]
Caches Enabled: [ L1I(32K), L1D(32K) ]
Register Inits: [ 32 GPRs, 32 FPRs, 255 SPRs, 32 VPRs ]
Assembler Init: [ 895 opcodes ]


                 ##  ##            ##
                 ##  ##            ##
                 ##                ##                                           
            #######  ##  #######   ##    ##                                     
           ##    ##  ##  ##    ##  ##   ##                                      
           ##    ##  ##  ##    ##  ######                                       
           ##    ##  ##  ##    ##  ##   ##                                      
            ######   ##  ##    ##  ##    ##                                     
                                                                                
      (        (    (  ( (AltiVec) )  )    )        )                           
                                                                                
   Version : 13.0, Metaware Build                                               
  Released : INTERIM( build 787 on Jan 31 2003 12:07:53 )                       
Written by : Motorola's RISC Applications Group, Austin, TX                     
    System : Sandpoint X3 with Valis (MPMC7400)                                 
 Processor : MPC7400 V2.8 @ 400 MHz, Memory @ 100 MHz                           
    Memory : Map B (CHRP) 64MB at 3/1/1/1                                       
                                                                                
Copyright Motorola Inc. 1993-2002                                               
Refer to `history.c' for release info, changes, errata and fixes. 


Features

  • One MPPMC slot for a processor board (PrPMC compatible with PCI arbitration extensions)
  • Four 32-bit/5V PCI slots
  • PMC and PCI slots auto-sense/auto-select 33 or 66 MHz operation
  • Two standard 16650-compatible ESD-protected serial ports
  • IEEE 1284 parallel port
  • Floppy disk port
  • Two ATA33 bus-master IDE ports
  • PS/2 mouse and keyboard connectors
  • 8K NVRAM/BBRAM
  • Real-Time Clock
  • Switch-selectable operating modes
  • Advanced Power Controller ("soft on/off")
  • LED monitors for critical functions

About the ppc7410 head sink

to replace unscrew the 2 parts, slide the head sink onto the part so the rails catch under the chip Tighten a little


firmware

DINK32

DINK32 was developed as an internal Motorola PowerPC tool to help debug silicon as well as code. It runs on a variety of boards including the Yellowknife, Sandpoint, Excimer and Maximer. DINK32 has the full complement of commands. DINK32 supports all of the currently available PowerPC microprocessors including the 603, 603e, 604 family, the integrated processor, 8200 the 8240, the 7xx family and the 7400. DINK32 is a great source for example code when initializing the MPC105, MPC106, MPC107 memory controllers/bridge chips. DINK32 source code also includes sample code for the MPC8240 subsystems, DMA, EPIC, I2C, and I2O.

memory map

0x000000400 =   1K
0x000000800 =   2K
0x000001000 =   4K    reserved
0x000002000 =   8K
0x000004000 =  16K
0x000008000 =  32K
0x000009000 =  36K --------------
      do not use, it crashes              
0x000010000 =  64K --------------
0x000020000 = 128K
0x000040000 = 256K
0x000080000 = 512K
0x000100000 =   1M
0x000200000 =   2M     user ram 
0x000400000 =   4M
0x000800000 =   8M
0x001000000 =  16M 
0x002000000 =  32M
0x004000000 =  64M --------------
0x008000000 = 128M
0x010000000 = 256M 
0x020000000 = 512M
0x040000000 =   1G
0x080000000 =   2G
0x100000000 =   4G
  • mt -b 90000 2000000 causes an issue
  • mt -b 100000 2000000 should work

cpu

DINK32[MPC7400] {2} >>cpuinfo
  Processor Name   : MPC7400 ("Max")
  Processor Class  : G4
  Exception handler: PPC7400
  L1I+D Cache Size :   32K
  L2 External Cache: 1024K
  TLBs             : 64
  BATs             : 4 IBAT + 4 DBAT  (extendable: No)
  Floating Point   : Yes
  AltiVec          : Yes (Classic)
  PCI Embedded     : No
  RapidIO Ports    : 0
  Ethernet Ports   : 0

downloading using the net

> > Hi,all, > Now I'm working on a Motorola Sandpoint X2 board with ppc8240. > I use DINK32 r13.1 to boot my linux kernel image. > From DINK32 r13.1 user manual,I know that DINK32 r13.1 supports > ethernet card Realtek 8139,but after these steps:

What I would suggest is that instead of using the ethernet card support, you use the serial support still. DINK32 r13.0.0 and newer support 115200 baud, so loading a kernel via serial is now much less painful than it used to be.

uboot/ppcboot

is it supported about sandpoint ?

This is an actively developed ROM monitor and Linux boot loader ideal for custom boards, derived from 8xxROM and FADSROM. It includes support for BOOTP, RARP and TFTP image downloading and booting.

[[2]]

PPCForth

PPCForth is a minimalist version of the FORTH language (for the PowerPC [tm]) which may be used as a test environment for boards, a bootloader, or even (shudder) a developement environment. I use it to boot my 403GCX board as well as loading C programs and other experiments. FORTH is particularly well suited for interactive testing as it is interpreted and as such may be extended on-the-fly. PPCForth is also rather small, weighing in at under 30K of code for everything, and under 10K for a bare-bones bootloader.

Currently PPCForth has only been ported to 403-based boards, but I am looking at supporting the 8xx series as well, as soon as I can get some actual hardware to try it on (donations anyone?).

[[3]]

linux

platform support ???

is there support for 2.6 kernels ? only 2.4 ???

what is supported and what is not ???

proof

> DINK32 12.2 does not correctly initalize the memory controller on-board. > DINK32 12.3 claims to do this correctly, but in some testing locally it > still did not get everything correct.

Could you be more specific as to what is missing?

> There's a chance that PPCBoot does get this right, however. But I'm no > PPCBoot expert.

I don't know about the 74xx support in PPCBoot, but PPCBoot sets up the 107 in a MCP8245 on a Sandpoint X3 well-enough to boot linux. PPCboot does not, however, configure more than one 'bank' on the SO-DIMM socket, and does not (currently) read the SPDs, if only for the lack of proper I2C support (at least for the 824x).

YMMV.

My question is how have_of got set:

arch/ppc/mm/init.c:

       if (!have_of)
               FREESEC(openfirmware);

Otherwise...

On the whole "'reset/reboot' the system" thread, I'm interested in similar solutions for the 824x, since I'm having highly similar problems on reboot. :-)

Interestingly, the 'gorom' solution works fine for me, as long as my root filesystem is not jffs2, then only if / is mounted 'rw'.

romfs, cramfs, nfs, or jffs2 (read-only) all reboot just fine.


> Tom Rini writes: > > > > On Thu, May 30, 2002 at 11:02:44PM -0700, Sergiy Kovtun wrote: > > > > > Hello All, > > > I try to connect all my 64 Meg memoty on > > > Sandpoint-X3B, > > > but received a crash( with 32M all OK). > > > Source: > > > SP-X3B + Altimus MPC7410 > > > HHL 2.0 > > > Any ideas?? > > > > DINK32 12.2 does not correctly initalize the memory controller on-board. > > DINK32 12.3 claims to do this correctly, but in some testing locally it > > still did not get everything correct. > > Could you be more specific as to what is missing?

On the DINK32 12.2 side it blindly sets some parts up for 64mb total regardless of the ammount of memory. I think there's other things as well, but Mark Greer would know better..

For DINK32 12.3 the first problem I've hit is that I can't seem to convince it to setup the SPD bits on the memory for the 64mb total that seems to be on the board, only 128mb. Using DINK32 12.2 and 12.3 to try and get all of that done 'correctly' still had things blowing up when I tried to use 64mb. But I've been busy tracking down other issues at the moment..

> My question is how have_of got set: > > arch/ppc/mm/init.c: > if (!have_of) > FREESEC(openfirmware);

On !CONFIG_ALL_PPC, we have:

  1. define have_of 0

In include/asm-ppc/processor.h, or so. And the compiler happily optimizes things in/out with this.


Tom Rini writes: > On Fri, May 31, 2002 at 10:01:39AM -0500, Jim Thompson wrote: > > > > Tom Rini writes: > > > > > > On Thu, May 30, 2002 at 11:02:44PM -0700, Sergiy Kovtun wrote:

> > My question is how have_of got set: > > > > arch/ppc/mm/init.c: > > if (!have_of) > > FREESEC(openfirmware); > > On !CONFIG_ALL_PPC, we have: > #define have_of 0 > In include/asm-ppc/processor.h, or so. And the compiler happily > optimizes things in/out with this.

I should have been more explicit.

in include/asm-ppc/processor.h, I'd found:

  1. define have_of (_machine == _MACH_chrp || _machine == _MACH_Pmac)

A sandpoint (esp with Dink) is neither CHRP or PMAC, so the call to FREESEC(openfirmware) shouldn't have occurred.


> Tom Rini writes: > > On Fri, May 31, 2002 at 10:01:39AM -0500, Jim Thompson wrote: > > > > > > Tom Rini writes: > > > > > > > > On Thu, May 30, 2002 at 11:02:44PM -0700, Sergiy Kovtun wrote: > > > > My question is how have_of got set: > > > > > > arch/ppc/mm/init.c: > > > if (!have_of) > > > FREESEC(openfirmware); > > > > On !CONFIG_ALL_PPC, we have: > > #define have_of 0 > > In include/asm-ppc/processor.h, or so. And the compiler happily > > optimizes things in/out with this. > > I should have been more explicit. > > in include/asm-ppc/processor.h, I'd found: > > #define have_of (_machine == _MACH_chrp || _machine == _MACH_Pmac)

Thanks for the memory jog :)

Up near the top, we have:

  1. ifdef CONFIG_ALL_PPC

... int _machine; ...

  1. else
  2. define _machine 0
  3. endif

So have_of becomes: (0 == 0x4 || 0 == 0x2)

> A sandpoint (esp with Dink) is neither CHRP or PMAC, so the call to > FREESEC(openfirmware) shouldn't have occurred.

It's !have_of, so we really did want to free the __openfirmware stuff.

> > Tom Rini writes: > > > On Fri, May 31, 2002 at 10:01:39AM -0500, Jim Thompson wrote: > > > > > > > > Tom Rini writes: > > > > > > > > > > On Thu, May 30, 2002 at 11:02:44PM -0700, Sergiy Kovtun wrote: > > > > > > My question is how have_of got set: > > > > > > > > arch/ppc/mm/init.c: > > > > if (!have_of) > > > > FREESEC(openfirmware); > > > > > > On !CONFIG_ALL_PPC, we have: > > > #define have_of 0 > > > In include/asm-ppc/processor.h, or so. And the compiler happily > > > optimizes things in/out with this. > > > > I should have been more explicit. > > > > in include/asm-ppc/processor.h, I'd found: > > > > #define have_of (_machine == _MACH_chrp || _machine == _MACH_Pmac) > > Thanks for the memory jog :) > > Up near the top, we have: > #ifdef CONFIG_ALL_PPC > ... > int _machine; > ... > #else > #define _machine 0 > #endif > > So have_of becomes: (0 == 0x4 || 0 == 0x2) > > > A sandpoint (esp with Dink) is neither CHRP or PMAC, so the call to > > FREESEC(openfirmware) shouldn't have occurred. > > It's !have_of, so we really did want to free the __openfirmware stuff.

I dunno guys, I think the compiler usually optimizes that all away and you should never see "openfirmware". I don't recall ever seeing it print out. I think something fishy is going on...

> > > > Hello All, > > > > I try to connect all my 64 Meg memoty on > > > > Sandpoint-X3B, > > > > but received a crash( with 32M all OK). > > > > Source: > > > > SP-X3B + Altimus MPC7410 > > > > HHL 2.0 > > > > Any ideas?? > > > > > > DINK32 12.2 does not correctly initalize the memory controller on-board. > > > DINK32 12.3 claims to do this correctly, but in some testing locally it > > > still did not get everything correct. > > > > Could you be more specific as to what is missing? > > On the DINK32 12.2 side it blindly sets some parts up for 64mb total > regardless of the ammount of memory. I think there's other things as > well, but Mark Greer would know better..

I only have 12.2 here and it initializes the wrong amount which will cause a panic if you rely on the getting the amount of memory from how the memory ctlr regs are set up.

The last time I really looked at what DINK was doing to the mem ctlr was back on 12.0 so my info is stale now. Sounds like Tom has the most current, detailed info on what DINK does. Chances are, Sergiy, is that you'll have to roll up your sleeves and dig into it.

 In the interim, you could write 'correct' values using the 'dm i2c -a

50 0-7f'


 0x80,0x08,0x04,0x0c,0x09,0x02,0x40,0x00,
 0x01,0x75,0x54,0x00,0x80,0x10,0x00,0x01,
 0x8f,0x04,0x06,0x01,0x01,0x00,0x0e,0xa0,
 0x60,0x00,0x00,0x14,0x0f,0x14,0x2d,0x10,
 0x15,0x08,0x15,0x08,0x00,0x00,0x00,0x00,
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x97,
 0x7f,0x98,0x00,0x00,0x00,0x00,0x00,0x00,
 0x46,0x4d,0x34,0x20,0x36,0x34,0x53,0x30,
 0x36,0x34,0x43,0x33,0x2f,0x31,0x32,0x38,
 0x00,0x00,0x00,0x00,0x00,0x01,0x1e,0x1f

NetBSD

Currently, NetBSD/sandpoint requires the use of Motorola's DINK32 ROM to load over a serial port. This means that there is no way to boot from a local disk or PCI device.


Supported processor cards

  • mobo sandpoint/X4 with MPC8240
  • CPUmodule Altimus X3 with either MPC755 or MPC7410

Other PMCs should work, but may need minor adjustments or more substantial work to support additional functionality.


Supported devices

  • Ethernet
         - Asante Mac 10/100 PCI Rev A, part number 09-00169-01 (de) 
         - Farallon Fast EtherTX 10/100, part number PN996L-TX (de) 
         - SMC Etherpower II (9432TX) (epic) 
         - SMC 83c170 (epic) 
         - 3Com 3c905 (ex) 
         - Intel EtherExpress PRO/10+ PCI LAN Adapter (fxp) 
         - Realtek 8029 Ethernet (ne) 
         - VIA Technologies VT86C926 (ne) 
         - D-Link DFE-530TX+ (rtk) 
         - Realtek 8139 (rtk) 
         - Netgear FA-311 (sip) 
         - Lite-On PNIC (tlp) 
         - D-Link DFE-530TX (vr) 
         - Many other PCI Ethernet interfaces, such as Tulip-compatible (de and tlp), 3Com (ep), SMC (epic), Intel (fxp), NE2000-compatible (ne), and Realtek (rtk) 
  • SCSI
         - Adaptec PCI controllers 291x, 2920, 2930C, 294x, 295x, 39xx, 19160, 29160 and AIC-78xx (ahc) 
         - AdvanSys ABP-940UW[68], ABP-970UW[68], ASB3940UW-00 SCSI host adapters (adw) 
         - AdvanSys 1200[A,B], 9xx[U,UA] SCSI controller (adv) 
         - AMD 53c974 (pcscp) 
         - DPT SmartCache/SmartRAID (dpt) 
         - NCR/Symbios 53C8xx (siop or esiop) 
         - Many other PCI SCSI controllers should work, but no one has tried them 
         - Most SCSI disk/tape/CD-ROM devices should work 
  • IDE
         - Promise Ultra66 (pciide) 
         - Some other PCI IDE controllers should work, although no one has had much success 
         - Most IDE disk/CD-ROM/ATAPI devices should work 
  • Audio
         - PCI audio cards, although none have been tested. 
  • Serial ports
         - On-board serial ports (the modem and printer ports) (com0 and com1) 
         - Some PCI serial ports should work, but no one has tried them 
  • PCI cards
         - Most MI PCI cards should work, although very few have been tested with NetBSD/sandpoint http://www.NetBSD.org/support/hardware/pci.html 


Unsupported devices

  • Built-in PS/2 keyboard & mouse
  • Built-in parallel
  • Built-in floppy
  • Built-in IDE

Supported boot devices

Currently, the only way to boot the system is with the DINK32 ROM monitor's serial download or a JTAG device.


Installing

  • Booting the installer
  • Once the kernel is downloaded (s-rec ascii or binary), type "go 90000" to start the kernel.


Example of a normal boot

DINK32 currently only supports loading images through the S-record download command ("dl"). To speed up the process, the baud rate should generally be set to 38.400 baud

   DINK32>> sb -k 38400
   DINK32>> dl -k 38400 -o 90000

In addition, DINK32 supports a binary download feature which is about 150% faster again. To use this facility, srectobin could translate s-record to binary.

   DINK32>> dl -k -b -o 90000


Of course, a lot of the information in this example depends on your model and what your boot method is, but we'll include this anyways just so you get an idea of what to expect (user-typed commands are in bold).

   DINK32>> go 90000
   [ XXX - insert boot w/ installer on ramdisk instead of this example ]

Common Problems and Error Messages Insufficient data.


  1. stty erase '^h'
  2. stty erase '^?'