Keystone Family PCIE Eric Ding. TI Information – Selective Disclosure Agenda PCIE Overview Address Translation Configuration PCIE boot demo.

Slides:



Advertisements
Similar presentations
Chapter 9 Bootloader.
Advertisements

Ethernet Over PCI Express Presented by Kallol Biswas
Nios Multi Processor Ethernet Embedded Platform Final Presentation
1 Peripheral Component Interconnect (PCI). 2 PCI based System.
KeyStone C66x CorePac Overview
Memory Management Unit
Extended Memory Controller and the MPAX registers And Cache
KeyStone Advance Debug
Multicore Applications
U-Boot and Linux Kernel Debug using CCSv5
KeyStone Training Multicore Navigator Overview. Overview Agenda What is Navigator? – Definition – Architecture – Queue Manager Sub-System (QMSS) – Packet.
Keystone PCIe Usage Eric Ding.
Chapter 9 Bootloader. Dr. Naim Dahnoun, Bristol University, (c) Texas Instruments 2002 Chapter 9, Slide 2 Learning Objectives  Need for a bootloader.
IO Controller Module Arbitrates IO from the CCP Physically separable from CCP –Can be used as independent data logger or used in future projects. Implemented.
Technion Digital Lab Project Xilinx ML310 board based on VirtexII-PRO programmable device Students: Tsimerman Igor Firdman Leonid Firdman Leonid.
Lecture 7 Lecture 7: Hardware/Software Systems on the XUP Board ECE 412: Microcomputer Laboratory.
NS Training Hardware. System Controller Module.
Final presentation- Part A Avi Urman, Kobi Maltinsky Supervisor: Inna Rivkin Linux on SOPC – Embedded System Implementation.
Getting Started With DSP A. What is DSP? B. Which TI DSP do I use? Highest performance C6000 Most power efficient C5000 Control optimized C2000 TMS320C6000™
Keystone PCIe Usage Eric Ding.
Multicore Navigator: Queue Manager Subsystem (QMSS)
NET+OS 6.1 Training. BSP NET+OS 6.1 BSP Initialization Memory map New features Debugging Porting Issues.
The 6713 DSP Starter Kit (DSK) is a low-cost platform which lets customers evaluate and develop applications for the Texas Instruments C67X DSP family.
U-Boot Debug using CCSv5 In this session we will cover fundamentals necessary to use CCSv5 and a JTAG to debug a TI SDK-based U-Boot on an EVM platform.
Technion - Israel institute of technology department of Electrical Engineering High speed digital systems laboratory Super Computer System Midterm presentation.
Lecture 2. General-Purpose (GP) Computer Systems Prof. Taeweon Suh Computer Science Education Korea University ECM586 Special Topics in Embedded Systems.
VxWorks & Memory Management
KeyStone Training Network Coprocessor (NETCP) Overview.
LPC2148 Programming Using BLUEBOARD
The University of New Hampshire InterOperability Laboratory Introduction To PCIe Express © 2011 University of New Hampshire.
Extended Memory Controller and the MPAX registers
NAND boot over I2C example
1 Introduction to ARM A15 Linux DSP Platform Software Apps Team 04/19/2013 1TI Confidential - NDA Restrictions.
KeyStone MPM Basics KeyStone Training Multicore Applications Literature Number: SPRPxxx 1.
C66x KeyStone Training HyperLink. Agenda 1.HyperLink Overview 2.Address Translation 3.Configuration 4.Example and Demo.
GBT Interface Card for a Linux Computer Carson Teale 1.
Laface Operating System Design Booting a PC to run a kernel from Low memory VGA display.
1 uClinux course Day 4 of 5. 2 Author: D L Johnson CPU Architectures.
Extended Memory Controller and the MPAX registers And Cache Multicore programming and Applications February 19, 2013.
Keystone PCIe Usage Eric Ding.
SAPC Hardware Pentium CPU (or 486) 4M usable memory no hard disk; boot from floppy no keyboard or monitor or mouse COM2 serial port: used for console i/o.
January 10, Kits Workshop 1 Washington WASHINGTON UNIVERSITY IN ST LOUIS A Smart Port Card Tutorial --- Software John DeHart Washington University.
ATtiny23131 A SEMINAR ON AVR MICROCONTROLLER ATtiny2313.
KeyStone SoC Training SRIO Demo: Board-to-Board Multicore Application Team.
Keystone Advanced Debug. Agenda Debug Architecture Overview Advanced Event Triggering DSP Core Trace System Trace Application Embedded Debug Support Multicore.
Lecture 25 PC System Architecture PCIe Interconnect
Intro to Linux-c6x SDK. 1.Linux-c6x Introduction 2.SDK Features 3.Supported Devices 4.Boot Loader 5.Toolchains Agenda.
Network Coprocessor (NETCP) Overview
Input/Output Problems Wide variety of peripherals —Delivering different amounts of data —At different speeds —In different formats All slower than CPU.
DSP C5000 Chapter 10 Understanding and Programming the Host Port Interface (EHPI) Copyright © 2003 Texas Instruments. All rights reserved.
© 2008, Renesas Technology America, Inc., All Rights Reserved 1 Course Introduction Purpose  This course provides an introduction to the peripheral functions.
KeyStone SoC Training SRIO Demo: Board-to-Board Multicore Application Team.
Lecture 2. General-Purpose Computer Systems Prof. Taeweon Suh Computer Science Education Korea University ECM586 Special Topics in Embedded Systems.
Compute Node Tutorial(2) Agenda Introduce to RocketIO How to build a optical link connection Backplane and cross link communications How to.
1394 H/W and OHCI Gi-Hoon Jung. 2002/01/162 Agenda Overview of the VITANA board OHCILynx PCI-based Host Controller Overview of the OHCI Spec.
Chap. 4 ARM Boot Loader Internals. 2 S3C2500 ARM940T Core module ARM9TDMI CoreIC.
FIGURE 4.1 SOC System Overview.. FIGURE 4.2 Memory Map Representation for an Intel Platform.
10- Lock Bits, Fuse Bits and Boot Loader. Boot Loader Support – Read-While-Write Self- Programming: The Boot Loader Support provides a real Read-While-Write.
Testing PCI Express Generation 1 & 2 with the RTO Oscilloscope
I/O Systems.
The PCI bus (Peripheral Component Interconnect ) is the most commonly used peripheral bus on desktops and bigger computers. higher-level bus architectures.
ECE 3551 Microcomputer Systems 1
Avalon Switch Fabric.
Network Processors for a 1 MHz Trigger-DAQ System
Chapter 9 Bootloader.
KeyStone Training Multicore Applications Literature Number: SPRPXXX
Presentation transcript:

Keystone Family PCIE Eric Ding

TI Information – Selective Disclosure Agenda PCIE Overview Address Translation Configuration PCIE boot demo

TI Information – Selective Disclosure Agenda PCIE Overview Address Translation Configuration PCIE boot demo

TI Information – Selective Disclosure PCIE Topology Example PCIE: a tree structure with nodes connected to each other via point-to-point links. The root node is called the root complex (RC). The leaf nodes are called end points (EP) and the nodes that connect multiple devices to each other are called switches (SW).

TI Information – Selective Disclosure 5 Shannon Functional Diagram TCI6678 (Shannon) C66x core L2 Memory L1 D L1 P... 8 C66x Cores Peripherals and I/O sRIO Flash PCIe TSIP UART SPI, I2C System Elements Power Mgt Debug EDMA SysMon Memory System DDR-3 64b Shared Memory Multicore Memory Controller HyperLink TeraNet Multicore Navigator Enet Switch Enet Switch SGMII Packet CoProcessor Crypto/IPSec CoProcessor

TI Information – Selective Disclosure PCIE Features PCI-SIG: PCI Express Base Specification (Rev. 2.0) Root Complex (RC) and End Point (EP) operation modes. –In EP mode, supports both legacy EP mode and native PCIE EP mode. –Set from bootstrap pins PCIESSMODE[1:0] at power-up (00->EP, 01->Legacy EP, 10->RC). –Software overwrites the setting by changing the PCIESSMODE bits in the DEVSTAT register. Gen1 (2.5 Gbps) and Gen2 (5.0 Gbps) x2 lanes Outbound/Inbound max payload size of 128/256 bytes

TI Information – Selective Disclosure Agenda PCIE Overview Address Translation Configuration PCIE boot demo

TI Information – Selective Disclosure Address Translation PCIE device uses PCIE address to Tx/Rx packets over a PCIE link Outbound transfer means the local device initiates the transactions to write to or read from the external device. The CPU or the device- level EDMA is used for outbound data transfer. The PCIE module does not have built-in EDMA. Inbound transfer means the external device initiates the transactions to write to or read from the local device. The PCIE module has a master port to transfer the data to or from the device memory; no CPU or EDMA is needed for inbound transfer in the local device. BAR: used to accept/reject TLP.

TI Information – Selective Disclosure Outbound Translation - 1 PCIE data space 256 MB (0x6000_0000~0x6FFF_FFFF) Enable/disable through CMD_STATUS register –When enabled, the outbound PCIE address (0x6000_0000~0x6FFF_FFFF) can be modified to a new address based on the outbound translation rules Equally divided into 32 regions Registers for OB –OB_SIZE: identify the size of 32 equally-sized translation regions to be 1MB/2MB/4MB/8MB –OB_OFFSET_INDEXn: represent bits[31:20] of the PCIE address for 32-bit or 64-bit addressing; not all bits will be used (depend on OB_SIZE); bit[0] enables the outbound region –OB_OFFSETn_HI: represent bits[63:32] of the PCIe address for 64-bit addressing; must be zero for 32-bit addressing

TI Information – Selective Disclosure Outbound Translation - 2 OB_SIZEOB_OFFSET_INDEXn Region indexingTranslation 0 (1 MB)[24:20][31:20] 1 (2 MB)[25:21][31:21] 2 (4 MB)[26:22][31:22] 3 (8 MB)[27:23][31:23] Example: –OB_SIZE: 1 MB; OB_OFFSET_INDEX0 = 0x9000_0001; OB_OFFSET0_HI = 0x0; PCIE data space address: 0x6001_5678; What is the translated PCIE address? –Calculation: OB_SIZE = 1 MB ==  using bit [24:20] for region indexing Bits [24:20] of 0x6001_5678 = 00000b = 0 ==  so Region 0 Using OB_OFFSET_INDEX0 and OB_OFFSET0_HI Then the translated PCIE address = bits[31:20] of 0x9000_ bits[19:0] of 0x6001_5678 = 0x9001_5678

TI Information – Selective Disclosure Inbound Translation - 1 Enable/disable through CMD_STATUS register Registers for IB –BARn: two BARs (BAR0~1) in RC mode and six BARs (BAR0~5) in EP mode; overlay with BAR mask –Four IB regions IB_BARn: which BAR for inbound transaction IB_STARTn_LO: the starting address bits [31:0] in PCIE address IB_STARTn_HI: the starting address bits [63:32] in PCIE address IB_OFFSETn: the internal bus address that will be the starting point of the mapped or translated PCIE address region –BAR0 cannot be remapped to any other location than to PCIE application registers (starting from 0x2180_0000 in KeyStone device). It allows the RC device to control EP in the absence of dedicated software running on EP.

TI Information – Selective Disclosure Inbound Translation - 2 Example: –For a 32-bit BAR, BAR1 = 0xF740_0000; IB_BAR0 = 1; IB_START0_LO = 0xF740_0000; IB_START0_HI = 0x0; IB_OFFSET0 = 0x1080_0000 –For PCIE address 0xF740_1234, what is the DSP device’s internal address? –Calculation: The incoming address of 0xF740_1234 matches the range (determined by BAR mask) of BAR1, it is accepted IB_BAR0 = 1 ==  the first IB region is used DSP internal address: 0xF740_1234 – 0xF740_ x1080_0000 = 0x1080_1234 (local L2)

TI Information – Selective Disclosure Agenda PCIE Overview Address Translation Configuration PCIE boot demo

TI Information – Selective Disclosure PCIE Initialization Boot mode: PCIE boot by selecting pins on 6678/6670 EVM boards IBL code –PLL workaround (6678 Errata, advisory 8) –Power-up PCIE –Configure PLL –Configure PCIE registers –Waiting for PCIE link-up –Stay inside IBL, monitor the magic address (6678: 0x87FFFC; 6670: 0x8FFFFC) for secondary boot

TI Information – Selective Disclosure PCIE Boot

TI Information – Selective Disclosure Agenda PCIE Overview Address Translation Configuration PCIE boot demo

TI Information – Selective Disclosure Demo Setup An AMC to PCIE adaptor card A TMS320C66xxL EVM card A Linux PC (Tested on Ubuntu 10.04, 32/64-bit) A UART cable

TI Information – Selective Disclosure PCIE Enumeration –From Linux »local-ubuntu:~$ lspci –n »…. »00:1f.3 0c05: 8086:27da (rev 01) »01: : 104c:b005 (rev 01) »03: : 14e4:1677 (rev 01) Or »local-ubuntu:~$ lspci »…. »00:1f.3 SMBus: Intel Corporation N10/ICH 7 Family SMBus Controller (rev 01) »01:00.0 Multimedia controller: Texas Instruments Device b005 (rev 01) –From DSP (JTAG if available)

TI Information – Selective Disclosure PCIE Linux Host Loader Code Mapping between PC memory and DSP memory Configure the PCIE inbound/outbound address translation Provide DSP memory read/write API: –Uint32 ReadDSPMemory(Uint32 coreNum, Uint32 DSPMemAddr, Uint32 *buffer, Uint32 length) –Uint32 WriteDSPMemory(Uint32 coreNum, Uint32 DSPMemAddr, Uint32 *buffer, Uint32 length) Parse the boot example header array to load data into DSP Write the boot entry address into the magic address on core 0 to jump start Need to be compiled and inserted as kernel module

TI Information – Selective Disclosure PCIE Boot Examples “Hello world” and POST examples under MCSDK ( dl.ti.com/sdoemb/sdoemb_public_sw/bios_mcsdk/latest/index_FDS.html) dl.ti.com/sdoemb/sdoemb_public_sw/bios_mcsdk/latest/index_FDS.html Convert the ELF out file into header file (data array) to be loaded by Linux host into DSP View the results via UART (minicom on Linux)

TI Information – Selective Disclosure Demo - UART

TI Information – Selective Disclosure Demo - Linux View results from “dmesg” Hello World: [ ] Finding the device.... [ ] Found TI device [ ] TI device: vendor=0x104c, dev=0xb005, irq=0x b [ ] Reading the BAR areas.... [ ] Enabling the device.... [ ] pci 0000:04:00.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ ] pci 0000:04:00.0: setting latency timer to 64 [ ] Access PCIE application register.... [ ] Registering the irq [ ] Boot entry address is 0x1082cc00 [ ] Total 4 sections, 0xd748 bytes of data written to core 0 [ ] Boot entry address is 0x8000cd60 [ ] Total 4 sections, 0xda04 bytes of data written to core 9 POST: [ ] Finding the device.... [ ] Found TI device [ ] TI device: vendor=0x104c, dev=0xb005, irq=0x b [ ] Reading the BAR areas.... [ ] Enabling the device.... [ ] pci 0000:04:00.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ ] pci 0000:04:00.0: setting latency timer to 64 [ ] Access PCIE application register.... [ ] Registering the irq [ ] Boot entry address is 0x 83a560 [ ] Total 3 sections, 0xb190 bytes of data written to core 0