-
56540 PCIe DMA
学习总结
本文是基于
56540-PR100-RDS
Programmer
’
s Register
Reference Guide
的前六章总结提取
的,并部分
加注了个人的理解。
一、
端口
1
、物理端口
56440
系列芯片共
86
个
port
,其中
80
个
physical serdes
ports
,一个
CMICm interface
以
及
5
个
AXP logic port
。
2
、逻辑端口
虽然有
86
个物理端口,但是最多只有
63
个逻辑端口。
< br>CPU
必须被映射到逻辑端口
0
,
AXP ports 81/82/83/84/85
必须被
映射到逻辑端口的
61
、
59
、
58
、
60
、
62
,剩余的
1-5
7
个逻
辑端口号可以被
80
个物理端口随便映射。
The device uses the logical port number
for all switching decisions within the ingress and
egress pipeline,and does not use the
physical port number.
3
、
MMU
端口
虽然有<
/p>
86
个物理端口,
但是最多只有
63
个
MMU
端口
p>
,CPU
必须被映射到
MMU
端口
59
,
,
AXP
ports
81/82/83/84/8
5
必须被映射到
MMU
端口的
58
、
62
、
56
、
61
、
57
。剩余的
MMU
端
口
0-55
以及
60
< br>可以被
80
个物理端口随便映射。
二、
PCI
配置寄存器
从结构上看,
PCI
e
是在
CPU
和原来的系统总线之间插
入一级总线,具体由一个桥接电
路实现对这一层的管理,并实现上下之间的接口以协调数
据的发送。
PCI
总线与
CPU
无关,
与时钟频率也无关,因此它可以独立应用于各种平台,支持多处
理器和并发工作。
三、
S-Channel Messaging
S-Channel
用来访问所有的间接映射的寄存器、表以及
packet
p>
需要映射一
块内存映射的寄存器并且需要遵
循
S-Channel messaging
协议
CP
U
通过
PCIE
总线发送消息,同时,
消息会带有一个执行读或者写的操作命令,操作
命令后是地址或者数据信息。对应没有消
息的发送,
PCI
控制器会将其从
PC
I
内存空间转移
到设备上。操作结束后,
PCIE
控制器会跟踪消息发送或者接受的状态信息,每一个被
CPU
发送的消息都会从
PCI
控
制器得到对应的响应。
1
、
messaging
registers
CPU
发送
S-
channel
消息时,需要按照一定的格式构造数据,然后复制到
S-Channel data
register
中,然
后使能
CMIC_SCHAN_CTRL
的
MSG_START bit
。
如
figure
1
所示,
S-Channel
message
的
buffer regigon
最大是
22
个
32bits
的字。且要求
消息要连续的写入到
bu
ffer regigon
中。
通过
S-
Channel
访问的寄存器和表有:
Ingress pipeline registers
Egress pipeline registers
XTPORT Port register
CLPORT
Port register
MMU register
MAC registers
Statistic
counters
Switching memories
可配置现实
S-Channel
消息
操作完成后产生
MSG_DONE
中断,
Interrupt-driven
I/O
is
performed
by
initiating
a
tran
saction
。对于中断驱动
I/O
,需要使能
SCH_DONE
bit
in
CMIC_IRQ_MASK.
2
、大小端选择
说的是
CPU
与交换芯片传递数据时的大小端问题。
BCM56540<
/p>
中的寄存器是小端,在
BCM56540
与
CPU
之间传输的
Dwords
p>
的大小端格式
是通过
CMIC_ENDIA
NESS_SEL register.
CMIC_ENDIANESS_SEL
register
的
Bits[3:0]
所代表的意义如下图所示:
3
、
S-BUS message
format
Command
的格式:
Address
的格式
这里,
r
egsel
表示寄存器的地址偏移。
4
、寄存器的读写过程
以写寄存器为例,接受写寄存器的步骤
另外,
m
emery
的读写过程详见
56540-PR100-RDS
Programmer
’
s Register
Reference Guide
,
除此之外,
bcm56540
芯片还提供了
hash
方式的读写命令。
5
、
S-BUS
message
的响应
对
于
寄
存
器
的
读
操
作
,
响
应
为
2-3
个
dwords
,
且
CMIC
将
响
应
写
入
CMIC_SCHAN_MESSAGE(0/1/2)
中
,
CMIC_SCHAN_MESSAGE0
中
是
command
dwords
,
CMIC_SCHAN_MESSAGE
(
1/2
)是读到的数据。
对于
memroy
< br>的读操作,响应为
2-21
个
d
words
。
对于寄存器或者是
memory
的写操作,响应都是一个<
/p>
dwords
。
四、
DMA
、
Interrupts
,and Endianess
主要介绍
< br>CPU
与设备之间如何通过
PCI
总线传输数据。
1
、
PCIe
中断
当
接
收
到
中
断
信
息
时
p>
,
CPU
会
读
p>
CMIC_CMC0_IRQ_STAT[4:0]
,
且
与
CMIC_CMC0_PCIE_IR_MAS
K[4:0]
做与运算。
与
PCIE
相关的中断源以及中断处理描述如下图所示:
< br>