Flameman/sandpoint3

index []

SandpointX3/Altimus with MPC7400 (G4) and MPC107

= 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.

Sandpoint II Evaluation System
The Sandpoint II Evaluation System demonstrates the capabilities of the PowerPC® processors and the MPC107 PCI Bridge/Integrated Memory Controller, and is the ideal platform for software development and debug, as well as for hardware development.

The Sandpoint Evaluation System allows system designers to take months off their system design cycle by providing a complete PowerPC system that hardware and software development teams can both begin working on immediately. This eliminates the need to wait until the hardware team gets a board running to start application software development.

Sandpoint can be used as the starting point or a baseline design to help determine the best system design for a new product. It allows performance testing and evaluation of a number of PowerPC processors running at various speeds and configurations.

Sandpoint is housed in an ATX mini-tower case. The Sandpoint motherboard is an ATX form factor with a PCI Mezzanine Card (PMC) connector for the PowerPC processor. The Sandpoint PPCEVAL-SP2-750 processor is a MPC750/107 PMC module with 1 MB L2 cache. The PMC includes 32-MB of SDRAM already installed. Debug monitor software, DINK32, is also provided with the system.

Up to four PCI slot-based devices are supported. Two of these PCI slots are 5 volts and 32-bit. The other two PCI slots are 3.3 volts and 64-bit. The super I/O chip provides two standard 16650 compatible serial ports, an IEEE 1284 parallel port, a floppy disk port, two IDE ports, and PS/2 mouse and keyboard connectors.

Emerson Sandpoint III Flexible processor development platform
Emerson Sandpoint III Boards for
 * LynxOS embedded RTOS 	v. 4.0
 * BlueCat Embedded Linux 	v. 4.0


 * Architecture: 	PowerPC / Power Architecture
 * Processor group: 	PowerPC 750 (Freescale and IBM)

Many of our target-support guides for BlueCat Linux are available for download. Please consult the board-support guide or contact us for specific platform features supported.

Sandpoint is Emerson's flexible processor development platform. Using Sandpoint, you can evaluate current Emerson host processors and integrated processors based on the PowerPC® architecture using MPMC (Emerson Processor PCI Mezzanine Cards). These cards are interchangable and one Sandpoint platform can support numerous processor-specific PPMC cards (but just one at a time).

The Sandpoint III motherboard is an evaluation baseboard which accepts one Emerson Processor PMC (MPMC) or PrPMC card, as well as up to four PCI cards, and supplies typical PC-I/O peripherals. Sandpoint provides a flexible base for the evaluation of new Emerson processor devices, and for early software design for customer project using Emerson processors.

[]

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

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 0x000010000 = 64K 0x000020000 = 128K 0x000040000 = 256K 0x000080000 = 512K 0x000090000 = 576K -- do not use, it crashes 0x000100000 =  1M -- 0x000200000 =  2M     user ram 0x000400000 =  4M 0x000800000 =  8M 0x001000000 = 16M -- 0x002000000 = 32M     user ram 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.

[]

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?).

[]

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: In include/asm-ppc/processor.h, or so. And the compiler happily optimizes things in/out with this.
 * 1) define have_of 0

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: ... int _machine; ...
 * 1) ifdef CONFIG_ALL_PPC
 * 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

experience a boot
Magic:  7f 45 4c 46 01 02 01 00 00 00 00 00 00 00 00 00 Class:                            ELF32 Data:                             2's complement, big endian Version:                          1 (current) OS/ABI:                           UNIX - System V  ABI Version:                       0 Type:                             EXEC (Executable file) Machine:                          PowerPC Version:                          0x1 Entry point address:              0x800000 Start of program headers:         52 (bytes into file) Start of section headers:         1511468 (bytes into file) Flags:                            0x0 Size of this header:              52 (bytes) Size of program headers:          32 (bytes) Number of program headers:        3 Size of section headers:          40 (bytes) Number of section headers:        7 Section header string table index: 4

Elf file type is EXEC (Executable file) Entry point 0x800000 There are 3 program headers, starting at offset 52

Program Headers: Type          Offset   VirtAddr   PhysAddr   FileSiz MemSiz  Flg Align LOAD          0x010000 0x00800000 0x00800000 0x161000 0x163130 RWE 0x10000 GNU_STACK     0x000000 0x00000000 0x00000000 0x00000 0x00000 RWE 0x4 PAX_FLAGS     0x000000 0x00000000 0x00000000 0x00000 0x00000     0x4

Section to Segment mapping: Segment Sections... 00    .text .data .bss 01       02

CONFIG_BOOT_LOAD=CONFIG_BOOT_LOAD=0x00800000

kernel has 10000 byte of header, so if it is located at 0x800000, then it can be started by jumping to 0x810000, the first executable instruction following the header

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
- 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)
 * Ethernet


 * 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 '^?'

= interesting links =


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