一、是什么?
JEDEC-106 是 JEDEC 定义的一种设备标识编码标准,用于为半导体器件分配唯一的标识符。该编码通过特定的字节序列标识制造商、设备型号、版本等信息。其核心目的是:
-
标识制造商:通过编码中的字段区分芯片设计或制造厂商(例如 ARM、Intel、TI 等)。
-
设备类型和版本:标识具体器件型号及其修订版本。
-
兼容性管理:帮助工具链(如调试器、烧录器)或软件识别硬件特性。
二、具体实现
Cortex-M3 中的 JEDEC-106 ID
在 ARM Cortex-M3 中,JEDEC-106 ID 位于 PPB(Private Peripheral Bus)地址范围 0xE00FF000~0xE00FFFFF 的 4KB ROM 表中。该 ROM 表是 ARM 定义的设备识别与调试信息存储区,包含以下关键信息:
-
芯片厂商 ID(如 ARM 的厂商编码)。
-
设备类型(如 Cortex-M3 的型号标识)。
-
修订版本号(芯片的版本信息)。
-
其他调试/跟踪功能支持信息。
开发者或调试工具可通过读取这些寄存器获取芯片的详细规格,以适配正确的驱动、调试协议或工具链配置。
三、存在意义
-
统一标识:避免不同厂商使用私有编码导致混乱。
-
工具兼容性:确保调试器(如 J-Link、ST-Link)能自动识别芯片并加载对应配置。
-
供应链管理:在生产、测试环节快速验证器件来源和型号。
四、具体位置
ARMv7-M 基础设施 ID
ARMv7-M 架构的实现需支持 SCS(系统控制空间)、FPB(闪存地址重定向断点单元)、DWT(数据观察点与追踪单元)、ITM(指令追踪宏单元) 模块,以及一个 ROM 表(详见表 C1-3,第 C1-4 页)。其 CoreSight 架构编程模型 定义于文献 [3],每个 4KB 寄存器空间划分为以下四个部分:
-
组件 ID(偏移地址 0xFF0 至 0xFFF)
-
外设 ID(偏移地址 0xFD0 至 0xFEF)
-
CoreSight 管理寄存器(偏移地址 0xF00 至 0xFCF)
-
设备专用寄存器(偏移地址 0x000 至 0xEFF)
对于 ARMv7-M 架构:
-
ROM 表 必须包含组件 ID 寄存器;
-
DWT、ITM、FPB 和 TPIU 模块需实现 CoreSight 管理寄存器的锁定访问机制;
-
其余所有 ID 寄存器 和 管理寄存器 均为保留区域,建议遵循 CoreSight 规范或设计为 RAZ(读取为零),以确保调试工具链的通用支持。
表 B-1 组件与外设 ID 寄存器格式
地址偏移 | 值 | AT | GD | ST | 符号 | 名称 | 说明 |
---|---|---|---|---|---|---|---|
0xFFC | 0x000000B1 | 0XB1 | 0xB1 | 0xB1 | CID3 | 组件 ID3 | 前导码(固定值) |
0xFF8 | 0x00000005 | 0X05 | 0x05 | 0x05 | CID2 | 组件 ID2 | 前导码(固定值) |
0xFF4 | 0x000000X0 | 0X10 | 0x10 | 0x10 | CID1 | 组件 ID1 | [7:4] 位:组件类别 [3:0] 位:前导码 |
0xFF0 | 0x0000000D | 0XD | 0XD | 0xD | CID0 | 组件 ID0 | 前导码(固定值) |
0xFEC | 0x000000YY | 0 | 0 | 0 | PID3 | 外设 ID3 | [7:4] 位:RevAnd(次版本号) [3:0] 位:非零表示客户修改模块 |
0xFE8 | 0x000000YX | 0XB | 0XD | 0XA | PID2 | 外设 ID2 | [7:4] 位:主版本号 [3] 位:1 表示 JEDEC 分配 ID [2:0] 位:JEP106 ID 编码 [6:4] |
0xFE4 | 0x000000XY | 0XB4 | 0X18 | 0X4 | PID1 | 外设 ID1 | [7:4] 位:JEP106 ID 编码 [3:0] [3:0] 位:部件号 [11:8] |
0xFE0 | 0x000000YY | 0xC4 | 0X21 | 0X40 | PID0 | 外设 ID0 | 部件号 [7:0] |
0xFDC | 0x00000000 | 0 | 0 | 0 | PID7 | 外设 ID7 | 保留 |
0xFD8 | 0x00000000 | 0 | 0 | 0 | PID6 | 外设 ID6 | 保留 |
0xFD4 | 0x00000000 | 0 | 0 | 0 | PID5 | 外设 ID5 | 保留 |
0xFD0 | 0x000000YX | 0x4 | 0X7 | 0 | PID4 | 外设 ID4 | [7:4] 位:4KB 计数 [3:0] 位:JEP106 延续码 |
厂商 | JEP106 ID | Continuation Code | 寄存器字段示例 |
---|---|---|---|
ARM | 0x23B | 0 → 1 → 2 | PID2[2:0]=011, PID1[7:4]=1011 |
NXP | 0x00 | 0 | PID2[2:0]=000, PID1[7:4]=0000 |
STMicroelectronics | 0x20 | 0 | PID2[2:0]=000, PID1[7:4]=0010 |
Texas Instruments | 0x49 | 0 | PID2[2:0]=100, PID1[7:4]=1001 |
兆易创新 | 0x51 | 7 | PID2[2:0]=101, PID1[7:4]=0001 |
雅特力 | 0x3B | 4 | PID2[2:0]=011, PID1[7:4]=1011 |
关键术语解析
英文缩写/术语 | 中文翻译 | 技术说明 |
---|---|---|
SCS | 系统控制空间 | System Control Space,包含 NVIC、SysTick 等关键寄存器 |
FPB | 闪存地址重定向断点单元 | Flash Patch and Breakpoint Unit,用于代码修补和硬件断点 |
DWT | 数据观察点与追踪单元 | Data Watchpoint and Trace,支持变量监控和程序流追踪 |
ITM | 指令追踪宏单元 | Instrumentation Trace Macrocell,用于 printf 式调试和事件记录 |
ROM table | ROM 表 | 存储调试组件地址映射的只读表 |
CoreSight compliant | 符合 CoreSight 规范 | 寄存器布局需与 ARM 调试架构兼容 |
RAZ | 读取为零 | Read-As-Zero,未实现寄存器应返回 0 |
TPIU | 追踪端口接口单元 | Trace Port Interface Unit,负责将追踪数据导出到外部探头 |
参考:
- ARM® v7-M Architecture Reference Manual
- ARM CoreSight Architecture Specification