文章目录
- 1.1 JEDEC 与 JEP106
- 1.2 PIDR0-PIDR7(peripheral identification registers)
- 1.2 CIDR0-CIDR3(Component Identification Registers)
1.1 JEDEC 与 JEP106
JEDEC和JEP106都是来自美国电子工业联合会(JEDEC,Joint Electron Device Engineering Council)的标准。
JEDEC是该联合会的简称,也指代该联合会制定的所有标准。
而JEP106则是其中的一项特定标准,名为 “Standard Manufacturer’s Identification Code”,即“标准制造商识别代码”。这个标准提供了一种机制,可以让不同的半导体制造商有自己独一无二的识别代码,这样就可以在设备和系统中准确地识别使用了哪些制造商的产品。
所以,JEP106实际上就是JEDEC的一个子集,是在JEDEC架构下的一个具体标准。
1.2 PIDR0-PIDR7(peripheral identification registers)
外设识别寄存器
CMOD
用于表示该组件是否被Customer 修改过,如果为0表示没有被修改过,其他值则表示被修改过;PIDR2.REVISION
和PIDR3.REVAND
一起构成组件的版本号;JEDEC:
固定为1;PIDR1.DES_0
bits[7:4] 表示的是JEP106 识别码的bits[3:0];PIDR2.DES_1
bits[2:0] 表示的是JEP106 识别码的bits[6:4];PIDR4.DES_2
bits[3:0] 表示的是 JEP106 的 连续码 continuation code。
制造商的识别码由一个或多个 8 位字段定义,由 7个数据位加 1 个奇校验位组成。例如 ARM 的 JEDEC code 是 0x7F 0x7F 0x7F 0x7F 0x3B。而 连续码 continuation code 表示的是 0x7F 出现的次数,例如ARM的连续码是0x4。而识别码是最后的 bits[6:0], ARM 公司的识别码是0x3B。
SoC 中有多个coresight的组件,为了较好方便的管理这些组件,designer 给每个组件分配了唯一的编号。这个编号就保存在part number中:
PART_0
, PIDR0 bits[7:0] Part number bits[7:0]PART_1
, PIDR1 bits[3:0] Part number bits[11:8]
- SIZE:表示这个组件占用
4k
空间的块数。如果只占用一个块,那么值是0,如果占用两个块,值是1。占用的块数为2^SIZE
。这种做法已经被废弃,ARM 推荐使用 Unique Component Identifier 域来表示组件占用空间的大小,或者使用一些没有使用过的寄存器来表示。
外设寄存器地址偏移:
1.2 CIDR0-CIDR3(Component Identification Registers)
这四个寄存器,每个寄存器只有最低8位有效。这四个寄存器的组合,用来标识组件的类型。
对于ARM的组件,CIDR寄存器的有些位的值是固定的:
- CIDR3 bits[7:0] 的值是
0xB1
; - CIDR2 bits[7:0] 的值是
0x05;
- CIDR1 bits[3:0] 的值是
0x0
; - CIDR0 bits[7:0] 的值是
0x0D
;
CIDR1寄存器中有一个CLASS位域 CIDR1 bits[7:4],用来表示组件属于哪一个类。ARM对自己的组件,也划分了若个的类。
- 0x1: ROM Table;
- 0x9: CoreSight组件;
- 0xF: CoreLink组件。
读取组件的 CIDR 寄存器,即可知道这个组件是属于哪一类。
对于Rom Table, 固定为 0xB105_100D
;
对于Coresight组件,固定为 0xB105_900D
;
对于CoreLink 组件, 固定为 0xB105_F00D
。