• 正文
  • 相关推荐
申请入驻 产业图谱

米尔RK3506 DSMC实战,Local Bus高速互联

04/16 15:08
256
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

工业控制场景中,芯片间的高速数据交互是一个核心需求。传统方案要么依赖串口/网络等低速通道,要么需要昂贵的共享内存架构。米尔RK3506核心板的DSMC接口提供了一种新选择——通过 Local Bus 协议,用少量引脚实现跨芯片的高速地址空间访问。

本文基于 MYD-YR3506 Host + MYD-YR3506 Slave的实板联调验证,确认DSMC Local Bus链路能够稳定建立,并在 512B、8-bit模式持续压测中达到了 16.77 GB 累计校验数据量、误码率为0的结果。DSMC 在 米尔RK3506核心板(MYC-YR3506) 的Local Bus应用场景下已具备明确的工程应用价值——既能承担寄存器通知与控制交互,也能提供可重复验证、可量化性能的数据访问通道。

图:米尔基于RK3506核心板开发板

第一章:DSMC是什么?

名词预先了解

DSMC:Double Data Rate Serial Memory Controller,双倍速率串行存储器控制器

Local Bus:DSMC的一种应用模式,用于与另一颗 Rockchip 芯片的 Slave DSMC 组成主从访问链路

PSRAM:DSMC的另一种模式,作为存储器控制器为系统提供外部存储空间

CS / region:CS为片选(最多4个),region为CS下的访问窗口(每个CS可分1/2/4个region)

DSMC 全称 Double Data Rate Serial Memory Controller,用于实现Host侧对外部从设备地址空间的访问。它采用命令、地址、数据线分时复用的方式,并支持DDR(双沿)数据传输,核心优势:引脚数量少、带宽较高。

在 米尔RK3506核心板(MYC-YR3506)平台上,DSMC有两种典型用法:

本文重点介绍 Local Bus 模式。DSMC接口支持x8 和x16 两种位宽,同一CS下的位宽必须统一,属于接口设计阶段需要首先确定的基础参数。

1.1 DSMC 的系统定位

DSMC 既不是普通内存,也不是上层通信协议,而是一条面向对端地址空间的硬件访问通道:

1.2 DSMC vs 常见访问方式

核心区别:Host 与 Slave 运行在独立地址空间和独立内存系统中,数据通过硬件链路、FIFO 和寄存器机制完成传递,而非通过共享地址空间直接访问。

第二章:Local Bus 空间模型

2.1 两个基本维度

DSMC 的地址空间组织围绕两个维度展开:

CS(片选):CS0~CS3 共4个片选入口,每个CS可连接一个从设备

region(访问窗口):当外设类型为 Local Bus 时,一个CS 的访问空间可以继续划分为多个 region,由设备树(DTS)决定哪些 region 生效

2.2 四类 region 类型

在 rk3506.dtsi 中预定义了4个region的属性模板:

典型实践:采用 "region0 传输数据 + region3 控制握手" 的划分。region0 为双向数据通路,双方的数据同步通过 region3 中的控制寄存器完成通知与应答。

2.3 硬件地址体系

该地址空间为硬件固定映射,Host侧DSMC 窗口起始地址固定为 0xC0000000,软件仅能在既定地址范围内进行配置与访问。

FIFO 路径回压机制:RDYN 信号用于表征FIFO满/空状态,Master需根据该信号进行传输等待或恢复。FIFO路径受硬件流控约束,并非简单内存复制。

第三章:FIFO与Register 的协作机制

3.1 两类访问通路

Local Bus 主从交互可划分为两类:

  • FIFO 访问:当 region属性为Merged FIFO或 No-MergeFIFO 时,Host 访问的是数据通路,数据经Slave侧FIFO后最终写入 Slave 内存
  • Register 访问:当 region 属性为Register 时,Host访问的是Slave CSR寄存器窗口,用于主从控制信息交互

3.2 双向寄存器通知

Local Bus 提供两组寄存器,实现主从双向中断通知:

在 region3 中,Host 侧地址映射:

第四章:板级配置与 DTS 适配

4.1 硬件连接

米尔RK3506开发板上,DSMC信号通过特定排针引出,Host与 Slave之间需要连接以下信号:

  • 数据线:DSMC_DATA[7:0](8-bit 模式)或 DSMC_DATA[15:0](16-bit 模式)
  • 控制线:CLK、CS、RDYN、DSMC_CMD等
  • 中断线:用于主从中断通知

注意:两块板的GND 必须可靠连接。8-bit模式下,数据线只需连接DSMC_DATA[7:0];16-bit 模式需连接全部 16 根数据线。同一CS下的位宽必须统一。

4.2 Host 侧 DTS 配置

/* Host 侧 DSMC 节点 */
&dsmc {
status = "okay";
rockchip,ranges = <0x0 0xc0000000 0x0 0x2000000>;
/* CS0 配置为 Local Bus, 8-bit 模式 */
cs0 {
status = "okay";
rockchip,cs-type = <LB>;
rockchip,bus-width = <8>;
};
};
4.3 Slave 侧 DTS 配置
/* Slave 侧 DSMC 节点 */
&dsmc {
status = "okay";
/* 配置 memory-region 和中断 */
memory-region = <&dsmc_region>;
interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>;
};

4.4 启动日志确认

正确配置后,启动时会在内核日志中看到以下关键信息:

DSMC: init cs0 LB device DSMC: cs0 byte dll delay line result 0x2d DSMC: clk_sys: Enabled, frequency: 196608000 Hz DSMC: CS0: LB device DSMC: CS0 virt: (ptrval), phys: 0xc0000000, size:0x2000000

第五章:用户态访问方式

5.1 设备节点

驱动加载后,会在 /dev/dsmc/ 下创建用户态访问节点:

/dev/dsmc/cs0/region0 # FIFO 数据窗口
/dev/dsmc/cs0/region3 # Register 控制窗口

5.2 FIFO 数据读写

通过 region0 进行数据读写的核心流程:

int fd = open("/dev/dsmc/cs0/region0", O_RDWR); /* 写入数据到 Slave 内存 */ write(fd, write_buf, write_size); /* 从 Slave 内存读取数据 */
read(fd, read_buf, read_size);
close(fd);

5.3 Register 控制交互

通过 mmap 映射 region3 后,以寄存器方式完成主从握手:

int reg_fd = open("/dev/dsmc/cs0/region3", O_RDWR);
volatile uint32_t *reg = mmap(NULL, 0x1000, PROT_READ | PROT_WRITE, MAP_SHARED | MAP_LOCKED, reg_fd, 0); /* Host 写 LBC_CON0,下发控制请求 */ reg[LBC_CON(0) / 4] = request_value; /* Host 读 APP_CON0,获取 Slave 应答 */
ack = reg[APP_CON(0) / 4];
munmap((void*)reg, 0x1000);
close(reg_fd);

关键细节:APP_CON0 偏移为 0x0000,LBC_CON0 偏移为 0x0100。由于 reg 按 uint32_t 访问,因此使用"寄存器偏移 / 4"作为数组下标。

第六章:性能实测

6.1 测试条件

6.2 测试结果

结论:在 512B + 8-bit 参数组合下,链路能够支持长时间、大规模重复访问而不出现误码,平均写速率约 340 MB/s,平均读速率约 344 MB/s。

6.3 驱动核心文件

总结与展望

本文围绕米尔RK3506核心板DSMC的Local Bus 应用进行了完整说明与验证,涵盖接口定义、空间模型、板级连接、驱动配置、用户态访问以及性能测试。

从测试结果来看,DSMC已能够同时支撑FIFO 数据面传输和Register 控制面交互。Host 可通过 /dev/dsmc/cs0/region0直接访问Slave侧落地内存,也可通过 region3 完成寄存器通知与控制握手,形成一条兼具数据访问与控制交互能力的跨芯片通信通道。

总体来看,DSMC 在米尔RK3506核心板 Local Bus场景下已具备明确的工程应用价值,可为工业控制等场景中的低延迟控制交互和中高频数据交换提供可靠支撑。

  • 参考资料:《Rockchip_Developer_Guide_DSMC_CN》
米尔科技

米尔科技

米尔电子,是一家专注于嵌入式处理器模组设计、研发、生产和销售于一体的国家级高新技术企业,也被评为专精特新企业。米尔电子深耕嵌入式领域10多年,致力于为企业级客户提供基于ARM、FPGA、RISC-V和AI等各种架构,稳定可靠的处理器模组,满足客户大批量产品应用部署的需求,同时为客户提供产品定制设计、行业应用解决方案和OEM的一站式服务。

米尔电子,是一家专注于嵌入式处理器模组设计、研发、生产和销售于一体的国家级高新技术企业,也被评为专精特新企业。米尔电子深耕嵌入式领域10多年,致力于为企业级客户提供基于ARM、FPGA、RISC-V和AI等各种架构,稳定可靠的处理器模组,满足客户大批量产品应用部署的需求,同时为客户提供产品定制设计、行业应用解决方案和OEM的一站式服务。收起

查看更多

相关推荐

登录即可解锁
  • 海量技术文章
  • 设计资源下载
  • 产业链客户资源
  • 写文章/发需求
立即登录

米尔电子,是一家专注于嵌入式处理器模组设计、研发、生产和销售于一体的国家级高新技术企业,也被评为专精特新企业。米尔电子深耕嵌入式领域10多年,致力于为企业级客户提供基于ARM、FPGA、RISC-V和AI等各种架构,稳定可靠的处理器模组,满足客户大批量产品应用部署的需求,同时为客户提供产品定制设计、行业应用解决方案和OEM的一站式服务。 米尔英文简称“MYIR”,是“Make Your Idea Real”第一个大写字母的缩写。我们的理念是“专业服务助力客户成功”,目前米尔已通过专业高效的服务,帮助全球数万家企业的产品成功上市。