15
1 This For 1.1 The proc the refle Wri Figu 1 Yes maki Scope s purpose o 1) A first o 2) An exam r FYS9220 1 MIDAS e M5000 is a cessor. The professiona ected by the ight 1 . See a re 1 The MID s, the name Wri ing the first con MIDA of the e f RT-lab 3 t order introd mple of com students an S M5000 a Single Bo MIDAS M al signal pro e price. VM also http://ww DAS M5000 – V ight is related to ntrolled, powere FYS RT-la AS M50 exercise twofold: duction to a mmunicatio n additiona oard Compu M5000 family ocessing ma METRO was ww.cwcemb VME version. o the brothers w ed and sustaineS4220 / 9 ab no 3 - 000 SB e Single Boa on with a VM al task is ad uter (SBC) i y is a produ arket, in par s bought in 2 edded.com Two PMCs ca who invented an d heavier-than- 9220 2011 BC and ard Compute ME module dded, see en n VME form uct from the ticular milit 2009 by the an be mounted nd build the wo air human fligh 6 No d VME er, the MID from the M nd of docum mat with th e company V tary, which e US Compa on the 2x4 PC orld's first succe ht, on Decembeov 2011 /TBS DAS M5000 M5000. ment. he PPC440 VMETRO f is also any Curtiss CI connectors. essful airplane er 17, 1903 1 S 0; for and

RTlab no3 M5000 VME - UiO

  • Upload
    others

  • View
    16

  • Download
    0

Embed Size (px)

Citation preview

Page 1: RTlab no3 M5000 VME - UiO

1 This

For

1.1Theprocthe refleWri

Figu

1 Yesmaki

Scope

s purpose o

1) A first o2) An exam

r FYS9220

1 MIDASe M5000 is acessor. The professionaected by theight1 . See a

re 1 The MID

s, the name Wriing the first con

MIDA

of the e

f RT-lab 3 t

order introdmple of com

students an

SM5000a Single BoMIDAS M

al signal proe price. VMalso http://ww

DAS M5000 – V

ight is related to

ntrolled, powere

FYS

RT-la

AS M50

exercise

twofold:

duction to a mmunicatio

n additiona

oard CompuM5000 familyocessing ma

METRO wasww.cwcemb

VME version.

o the brothers wed and sustained

S4220 / 9

ab no 3 -

000 SB

e

Single Boaon with a VM

al task is ad

uter (SBC) iy is a produ

arket, in pars bought in 2edded.com

Two PMCs ca

who invented and heavier-than-

9220

2011

BC and

ard ComputeME module

dded, see en

n VME formuct from theticular milit2009 by the

an be mounted

nd build the woair human fligh

6 No

d VME

er, the MIDfrom the M

nd of docum

mat with the company Vtary, which e US Compa

on the 2x4 PC

orld's first succeht, on December

ov 2011 /TBS

DAS M5000M5000.

ment.

he PPC440 VMETRO fis also

any Curtiss

CI connectors.

essful airplane aer 17, 1903

1

S

0;

for

and

Page 2: RTlab no3 M5000 VME - UiO

Figu

Thebrid

re 2 MIDAS M

e on-board idges one PC

M5000 main fe

nterconnectCI bus to VM

eatures

tion bussesMEbus.

are via fourr PCI segmeents. The UUniverse chip

2

p

Page 3: RTlab no3 M5000 VME - UiO

Figu

1.1

The

Figu

re 3 MIDAS M

.1 TheUn

e block diag

re 4 Block dia

M5000 PMC sy

niversePC

gram is show

agram of Unive

ystem

CI‐to‐VMEb

wn in Figure

erse PCI-VME

busBridge

e 4 and the

Ebus bridge

e

data flow diagram in F

Figure 5.

3

Page 4: RTlab no3 M5000 VME - UiO

Figu

AltoSlavattriCor For

2 Theaddr At b Theis coBSP

re 5 Data Flow

ogether 8 Vve image opibutes, allowrresponding

more inform

The Vx

e M5000 BSressing. The

boot time so

e BSP contaommented hP functions

w diagram

VME Slave ipens a windws the user ly, a PCI Sl

mation on t

xWorks

SP uses the e address m

ome default

ains a large nhere. For a it is referre

images and dow to the re

to control thlave image

the Universe

BSP fo

PPC440 MMmap is shown

t mapping is

number of sdeep pleasud to the doc

8 PCI slaveesources of he type of aopens a win

e registers i

or MIDA

MU (Memon in Figure

s set up; see

system callsure of undercumentation

e images canf the PCI busaccess to thondow for VM

it is referred

S M500

ory Manage6 .

e Figure 7 (

s, only thoserstanding thn.

n be defineds and, throuose resourceMEbus Mas

d to the docu

00

ement Unit)

(from RTlab

e relevant foe complete

d. Each VMugh its species. ster operatio

umentation.

for virtual

b-1).

for VME accspectrum o

4

ME ific

ons.

.

cess of

Page 5: RTlab no3 M5000 VME - UiO

Figu

Figu

re 6 M5xxx A

re 7 Universe

Address Map

bridge VME AA32/A23/A16 cconfiguring at boot time

5

Page 6: RTlab no3 M5000 VME - UiO

An

Figu

To a

In o Instusin

overview o

re 8 VME Acc

access a VM

1. Set up a2. Map to 3. By now

is acces

other words,

tead of acceng the linked

f the access

cess Configura

MEbus locat

a PCI Slavethe VME a

w one shall hssed by a po

, a piece of

essing individ list featur

s of VME ad

ation

tion there ar

e image withaddress spachave a pointointer opera

cake!

idual VME re of Univer

ddress spac

are three acti

h uniPciSlace with sysBter to the V

ation.

addresses orse a sequen

e is shown

ions to be ta

aveImageSeBusToLocaME base ad

one can set nce of DMA

in Figure 8.

aken:

et , Figure 9alAdrs , Figddress, and

up a DMA A transfers c

.

9. gure 10. a VME add

transfer. Bycan be defin

6

dress

y ned.

Page 7: RTlab no3 M5000 VME - UiO

Figu

Figu

Howque

re 9 Setting up

re 10 Mappin

w does one stion, becau

p a PCI slave i

ng to a VME bu

specify the use it is not

image for VME

us address

actual PCI described i

E access

Slave Imagin the docum

ge for sysBumentation as

usToLocalAs far as I can

Adrs ? Gooan see.

7

od

Page 8: RTlab no3 M5000 VME - UiO

8

The answer is that the routine selects the first Slave Image, starting from no. 0, which matches the VMEbus AM code! Therefore one must configure a PCI Slave Image if none of the default settings do not match. From the printout in RTlab-3 one observes that PCI Slave Images 0, 1 and 2 are set up at boot time with data width D32 and AM (Address Modifier) code 2d, 3d and 0d, respectively.

3 RTlab-3.c The source code is written for a module (TSVME) which is an interface for the HP-IB instrumentation bus. However, what is relevant for this exercise is that the module contains two memory blocks, a ROM and a RAM. The base address bits 23-16 is set up by switches to 0xF00000. The code should be self-explanatory. The module is accessed by A24 and D8. Disclaimer: do not use this source; download it from the FYS4220 web. /* RTlab-3.c - FYS4220 2011 */ /* B. Skaali copyright */ #define VXWORKS #define M5000 #include <vxworks.h> #include <taskLib.h> #include <pci.h> #include <sysLib.h> #include <MidasPciLib.h> #include <pciConfigLib.h> #include <uniLib.h> #include <sysVme.h> #include <vme.h> #include <uniDmaLib.h> #include "stdio.h" void uniImageShow(); /* Pci slave image 1 default mapping */ UINT32 pciBase1d = 0xD1000000, vmeBase1d = 0x00000000, size1d = 0x01000000, pciAddrSpace1d = UNI_PCI_MEMORY_SPACE, vmeAmCode1d = VME_AM_STD_SUP_DATA, vmeDataWidth1d = UNI_VMEBUS_DATAWIDTH_32; BOOL postedWrites1d = TRUE; typedef struct VME_PCISLAVE_INFO { UINT pci_base_adr; UINT vme_base_adr; UINT vme_size; UINT pci_addr_space; UINT vme_am_code; UINT vme_data_width; BOOL posted_writes; } VME_PCISLAVE_INFO; /* some handy routines */ UINT32 swapendian (UINT32 val) { return (((0xff000000 & val)>>24) + ((0x00ff0000 & val)>>8) + ((0x0000ff00 & val)<<8)

Page 9: RTlab no3 M5000 VME - UiO

9

+ ((0x000000ff & val)<<24)); } UINT32 bitfield (UINT32 val, UINT32 mask, int shift) { return ((swapendian(val) & mask) >> shift); } /* PciSlave stuff */ STATUS PciSlaveImage1Set( VME_PCISLAVE_INFO *info) { int image = 1; if (uniPciSlaveImageSet (image,

info->pci_base_adr, info->vme_base_adr,

info->vme_size, info->pci_addr_space, info->vme_am_code, info->vme_data_width, info->posted_writes) == ERROR) return ERROR; return OK; } STATUS PciSlaveImage1Default() { int image = 1; if (uniPciSlaveImageSet (image, pciBase1d, vmeBase1d, size1d, pciAddrSpace1d, vmeAmCode1d, vmeDataWidth1d, postedWrites1d) == ERROR) return ERROR; return OK; } /* TSVME module base addresses for RAM, ROM and jumper setting */ #define TSVME_RAM 0x8000; #define TSVME_ROM 0xC000; #define TSVME_BADR 0x00F00000; UINT32 TSVMEadroffRAM = TSVME_RAM; UINT32 TSVMEadroffROM = TSVME_ROM; STATUS tsvme() { uint32_t vmePtr; uint32_t vmeAdr; int off; /* set up PCI Slave image for the TSVME module */ VME_PCISLAVE_INFO pci_slave_image; VME_PCISLAVE_INFO *pinfo = &pci_slave_image; pci_slave_image.pci_base_adr = 0xD1000000; pci_slave_image.vme_base_adr = 0x00000000; pci_slave_image.vme_size = 0x01000000; pci_slave_image.pci_addr_space = UNI_PCI_MEMORY_SPACE; pci_slave_image.vme_am_code = VME_AM_STD_SUP_DATA; /* 0x3d */ pci_slave_image.vme_data_width = UNI_VMEBUS_DATAWIDTH_8; pci_slave_image.posted_writes = TRUE; /* show PciSlave mapping before and after setup */ printf("===>uniImageShow before remapping\n"), uniImageShow(); printf("\n"); if (PciSlaveImage1Set(pinfo) == ERROR) return ERROR; printf("===> uniImageShow after re-mapping of PciSlave 1\n"); uniImageShow(); printf("\n"); /* map from TSVME A24 jumper base address with pointer arithmetic for RAM/ROM acccess */ vmeAdr = TSVME_BADR; if (sysBusToLocalAdrs(VME_AM_STD_SUP_DATA, (char*)vmeAdr, (void**)&vmePtr) == ERROR) { printf("TSVME: could not translate the VME address, check AM value\n"); PciSlaveImage1Default();

Page 10: RTlab no3 M5000 VME - UiO

10

return ERROR; } printf("TSVME base address 0x%x is mapped to local BSP address 0x%x\n", vmeAdr, vmePtr); printf("\nDumping start of TSVME ROM\n"); for(off=0; off<0x40; ++off) { if (off%16 == 0) printf("0x%6x", vmeAdr + TSVMEadroffROM + off); printf(" %02x", *((unsigned char*)vmePtr + TSVMEadroffROM + off)); if (off%16==15) printf("\n"); } printf("\nWriting to TSVME RAM with readback\n"); ---- your job to fill in this code ---- /* set PciSlaveImage 1 back to default setting */ if (PciSlaveImage1Default() == ERROR) return ERROR; printf("\n"); return OK; }

4 M5000 target for Workbench

A VxWorks target “tgt_192.168.0.12” is defined on both lab PCs. However, the M5000 must be booted via COM1 terminal on PC-2, see RTlab-1. Note, only one Workbench user can be connected at a time. If your neighbor insists on using the target then disconnect and wish her good luck. A project must be built for PPC440sfgnu.

4.1 AdditionalheaderfilesforM5000These files are not contained in the default header directory. This is signaled as shown in Figure 11. Use the Add Folder command to include the directories shown in Figure 12, and move the three additional paths up to the top, see Figure 13.

Page 11: RTlab no3 M5000 VME - UiO

Figure 11 Include Search Paths for MIDAS MM5000 BSP

11

Page 12: RTlab no3 M5000 VME - UiO

Figu

re 12 Add Incclude folders

12

Page 13: RTlab no3 M5000 VME - UiO

Figu

re 13 Include Search Paths after re-organ

nization

13

Page 14: RTlab no3 M5000 VME - UiO

4.2A w

Figu

4.3Themod

2 Succesworking RTl

re 14 Output

3 Logicse activity onde, see instr

s!lab-3 progra

from RTlab-3

stateanaln the VMEbructions on

am should p

.c with RAM w

lyzerbus can be dthe LSA. B

present outp

write and read

displayed byBus analyzer

put somethin

d back impleme

y means of ars are very u

ng like Figu

ented

a connecteduseful for de

ure 14.

d LSA in timebugging.

14

ming

Page 15: RTlab no3 M5000 VME - UiO

15

5 Add-on for FYS9220 students – DMA transfers Using RTlab-3.c as basis, allocate a PCI address area with cacheDmaMalloc(size), fill it with some intelligent information, DMA transfer it to the TSVME RAM, read it back and compare. STATUS uniDmaLibInit() seems that it shall be called without parameters STATUS uniDmaDirect(….) execute a DMA transfer according to the parameters.

PCI and VME start addresses are mapped with sysBusToLocalAdrs(). The PCI address area is allocated with cacheDmaMalloc(size), which defines a cache safe

safe buffer, see BSP User Guide p. 29. One can also set up a chained DMA list between the same memories using the BSP functions uniDmaChainCmdPktCreate() and uniDmaChain().

Note! DMA functions use the library uniDmaLib.o. Download the library to the target from

C:/WindRiver/vxworks-6.2/target/config/m5000-bsp2.0-r2.0/mdrv/lib