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

描述

米尔电子

在工业控制场景中,芯片间的高速数据交互是一个核心需求。传统方案要么依赖串口/网络等低速通道,要么需要昂贵的共享内存架构。米尔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是什么?

 

名词预先了解:

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

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

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

CS/regionCS为片选(最多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 = ; rockchip,bus-width = <8>; }; };


 

4.3 Slave 侧 DTS 配置

  •  

/* Slave 侧 DSMC 节点 */ &dsmc { status = "okay"; /* 配置 memory-region 和中断 */ memory-region = <&dsmc_region>; interrupts = ; };


 

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场景下已具备明确的工程应用价值,可为工业控制等场景中的低延迟控制交互和中高频数据交换提供可靠支撑。

 

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分