久久ER99热精品一区二区-久久精品99国产精品日本-久久精品免费一区二区三区-久久综合九色综合欧美狠狠

新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 米爾RK3506 DSMC實(shí)戰(zhàn),Local Bus高速互聯(lián)

米爾RK3506 DSMC實(shí)戰(zhàn),Local Bus高速互聯(lián)

作者: 時(shí)間:2026-04-16 來源: 收藏

在工業(yè)控制場景中,芯片間的高速數(shù)據(jù)交互是一個(gè)核心需求。傳統(tǒng)方案要么依賴串口/網(wǎng)絡(luò)等低速通道,要么需要昂貴的共享內(nèi)存架構(gòu)。的DSMC接口提供了一種新選擇——通過 Local Bus 協(xié)議,用少量引腳實(shí)現(xiàn)跨芯片的高速地址空間訪問。

 

本文基于 MYD-YR3506 Host + MYD-YR3506 Slave的實(shí)板聯(lián)調(diào)驗(yàn)證,確認(rèn)DSMC Local Bus鏈路能夠穩(wěn)定建立,并在 512B、8-bit模式持續(xù)壓測中達(dá)到了 16.77 GB 累計(jì)校驗(yàn)數(shù)據(jù)量、誤碼率為0的結(jié)果。DSMC 在 RK3506核心板(MYC-YR3506 Local Bus應(yīng)用場景下已具備明確的工程應(yīng)用價(jià)值——既能承擔(dān)寄存器通知與控制交互,也能提供可重復(fù)驗(yàn)證、可量化性能的數(shù)據(jù)訪問通道。

 

圖:基于RK3506核心板開發(fā)板

第一章:DSMC是什么?

名詞預(yù)先了解

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

Local Bus:DSMC的一種應(yīng)用模式,用于與另一顆 Rockchip 芯片的 Slave DSMC 組成主從訪問鏈路

PSRAM:DSMC的另一種模式,作為存儲器控制器為系統(tǒng)提供外部存儲空間

CS / region:CS為片選(最多4個(gè)),region為CS下的訪問窗口(每個(gè)CS可分1/2/4個(gè)region)

DSMC 全稱 Double Data Rate Serial Memory Controller,用于實(shí)現(xiàn)Host側(cè)對外部從設(shè)備地址空間的訪問。它采用命令、地址、數(shù)據(jù)線分時(shí)復(fù)用的方式,并支持DDR(雙沿)數(shù)據(jù)傳輸,核心優(yōu)勢:引腳數(shù)量少、帶寬較高

米爾RK3506核心板(MYC-YR3506平臺上,DSMC有兩種典型用法:

應(yīng)用模式

從設(shè)備類型

說明

PSRAM 模式

外部 PSRAM 器件

作為存儲器控制器,提供可直接尋址的外部存儲空間

Local Bus 模式

RK3506 Slave DSMC

與另一顆 RK3506 組成主從鏈路,實(shí)現(xiàn)跨芯片地址空間訪問

本文重點(diǎn)介紹 Local Bus 模式DSMC接口支持x8 和x16 兩種位寬,同一CS下的位寬必須統(tǒng)一,屬于接口設(shè)計(jì)階段需要首先確定的基礎(chǔ)參數(shù)。

1.1 DSMC 的系統(tǒng)定位

DSMC 既不是普通內(nèi)存,也不是上層通信協(xié)議,而是一條面向?qū)Χ说刂房臻g的硬件訪問通道:

視角

DSMC 的作用

Host 軟件

提供一片可訪問的對端地址空間,允許 Host 進(jìn)行讀寫操作

Slave 軟件

提供被 Host 訪問的寄存器窗口和數(shù)據(jù)落地區(qū),通過更新本地內(nèi)存及控制寄存器向 Host 提供數(shù)據(jù)和狀態(tài)

硬件層

組織地址、數(shù)據(jù)、時(shí)鐘、片選及中斷關(guān)系,建立主從訪問鏈路

1.2 DSMC vs 常見訪問方式

 

核心區(qū)別:Host 與 Slave 運(yùn)行在獨(dú)立地址空間和獨(dú)立內(nèi)存系統(tǒng)中,數(shù)據(jù)通過硬件鏈路、FIFO 和寄存器機(jī)制完成傳遞,而非通過共享地址空間直接訪問。

第二章:Local Bus 空間模型

2.1 兩個(gè)基本維度

DSMC 的地址空間組織圍繞兩個(gè)維度展開:

CS(片選):CS0~CS3 共4個(gè)片選入口,每個(gè)CS可連接一個(gè)從設(shè)備

region(訪問窗口):當(dāng)外設(shè)類型為 Local Bus 時(shí),一個(gè)CS 的訪問空間可以繼續(xù)劃分為多個(gè) region,由設(shè)備樹(DTS)決定哪些 region 生效

2.2 四類 region 類型

rk3506.dtsi 中預(yù)定義了4個(gè)region的屬性模板:

egion

屬性

用途

region0

Merged FIFO

FIFO 數(shù)據(jù)窗口(雙向數(shù)據(jù)通路)

region1

No-Merge FIFO

FIFO 數(shù)據(jù)窗口(不合并訪問)

region2

DPRA

從設(shè)備 DPRAM 訪問模型

region3

Register

寄存器控制窗口(從設(shè)備寄存器)

典型實(shí)踐:采用 "region0 傳輸數(shù)據(jù) + region3 控制握手" 的劃分。region0 為雙向數(shù)據(jù)通路,雙方的數(shù)據(jù)同步通過 region3 中的控制寄存器完成通知與應(yīng)答。

2.3 硬件地址體系

項(xiàng)目

地址/容量

DSMC_MEM 基址

0xC0000000

DSMC_MEM 容量

1008 MB

Master DSMC 控制器

0xFF8B0000

Slave DSMC 控制器

0xFF880000

項(xiàng)目

地址/容量

該地址空間為硬件固定映射,Host側(cè)DSMC 窗口起始地址固定為 0xC0000000,軟件僅能在既定地址范圍內(nèi)進(jìn)行配置與訪問。

FIFO 路徑回壓機(jī)制:RDYN 信號用于表征FIFO滿/空狀態(tài),Master需根據(jù)該信號進(jìn)行傳輸?shù)却蚧謴?fù)。FIFO路徑受硬件流控約束,并非簡單內(nèi)存復(fù)制。

第三章:FIFO與Register 的協(xié)作機(jī)制

3.1 兩類訪問通路

Local Bus 主從交互可劃分為兩類:

? FIFO 訪問:當(dāng) region屬性為Merged FIFO或 No-MergeFIFO 時(shí),Host 訪問的是數(shù)據(jù)通路,數(shù)據(jù)經(jīng)Slave側(cè)FIFO后最終寫入 Slave 內(nèi)存

? Register 訪問:當(dāng) region 屬性為Register 時(shí),Host訪問的是Slave CSR寄存器窗口,用于主從控制信息交互

3.2 雙向寄存器通知

Local Bus 提供兩組寄存器,實(shí)現(xiàn)主從雙向中斷通知:

寄存器組

偏移范圍

寫入方

讀取方

觸發(fā)中斷

APP_CONx

0x0000 ~ 0x003C

Slave

Host

Slave→Host

LBC_CONx

0x0100 ~ 0x013C

Host

Slave

Host→Slave

region3 中,Host 側(cè)地址映射:

寄存器

Host 窗口地址

說明

寄存器

Host 窗口地址

APP_CON0

0xC2000000

Slave 寫入 → Host 讀取

APP_CON0

0xC2000000

LBC_CON0

0xC2000100

Host 寫入 → Slave 讀取

LBC_CON0

0xC2000100

第四章:板級配置與 DTS 適配

4.1 硬件連接

米爾RK3506開發(fā)板上,DSMC信號通過特定排針引出,Host與 Slave之間需要連接以下信號:

? 數(shù)據(jù)線:DSMC_DATA[7:0](8-bit 模式)或 DSMC_DATA[15:0](16-bit 模式)

? 控制線:CLK、CS、RDYN、DSMC_CMD等

? 中斷線:用于主從中斷通知

注意:兩塊板的GND 必須可靠連接。8-bit模式下,數(shù)據(jù)線只需連接DSMC_DATA[7:0];16-bit 模式需連接全部 16 根數(shù)據(jù)線。同一CS下的位寬必須統(tǒng)一。

4.2 Host 側(cè) DTS 配置

/* Host 側(cè) DSMC 節(jié)點(diǎn) */

&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 側(cè) DTS 配置

/* Slave 側(cè) DSMC 節(jié)點(diǎn) */

&dsmc {

status = "okay";

/* 配置 memory-region 和中斷 */

memory-region = <&dsmc_region>;

interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>;

};

4.4 啟動(dòng)日志確認(rèn)

正確配置后,啟動(dòng)時(shí)會(huì)在內(nèi)核日志中看到以下關(guān)鍵信息:

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

第五章:用戶態(tài)訪問方式

5.1 設(shè)備節(jié)點(diǎn)

驅(qū)動(dòng)加載后,會(huì)在 /dev/dsmc/ 下創(chuàng)建用戶態(tài)訪問節(jié)點(diǎn):

/dev/dsmc/cs0/region0 # FIFO 數(shù)據(jù)窗口

/dev/dsmc/cs0/region3 # Register 控制窗口

5.2 FIFO 數(shù)據(jù)讀寫

通過 region0 進(jìn)行數(shù)據(jù)讀寫的核心流程:

int fd = open("/dev/dsmc/cs0/region0", O_RDWR); /* 寫入數(shù)據(jù)到 Slave 內(nèi)存 */ write(fd, write_buf, write_size); /* 從 Slave 內(nèi)存讀取數(shù)據(jù) */

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,下發(fā)控制請求 */ reg[LBC_CON(0) / 4] = request_value; /* Host 讀 APP_CON0,獲取 Slave 應(yīng)答 */

 ack = reg[APP_CON(0) / 4];

munmap((void*)reg, 0x1000);

close(reg_fd);

關(guān)鍵細(xì)節(jié):APP_CON0 偏移為 0x0000,LBC_CON0 偏移為 0x0100。由于 reg 按 uint32_t 訪問,因此使用"寄存器偏移 / 4"作為數(shù)組下標(biāo)。

第六章:性能實(shí)測

6.1 測試條件

參數(shù)

測試平臺

MYD-YR3506 Host + MYD-YR3506 Slave

傳輸位寬

8-bit

數(shù)據(jù)塊大小

512 Bytes

單次請求數(shù)據(jù)量

16.777 MB

累計(jì)校驗(yàn)數(shù)據(jù)量

16,774.656 MB

6.2 測試結(jié)果

 

結(jié)論: 512B + 8-bit 參數(shù)組合下,鏈路能夠支持長時(shí)間、大規(guī)模重復(fù)訪問而不出現(xiàn)誤碼,平均寫速率約 340 MB/s,平均讀速率約 344 MB/s

6.3 驅(qū)動(dòng)核心文件

文件

作用

dsmc-host.c

Host 側(cè)驅(qū)動(dòng)入口,DTS 解析、地址映射、訪問接口

dsmc-controller.c

控制器層面配置,底層寄存器配置

dsmc-lb-device.c

創(chuàng)建 /dev/dsmc/csX/regionY 用戶態(tài)節(jié)點(diǎn)

dsmc-lb-slave.c

Slave 側(cè)驅(qū)動(dòng),memory-region、中斷、寄存器聯(lián)動(dòng)


總結(jié)與展望

本文圍繞米爾RK3506核心板DSMC的Local Bus 應(yīng)用進(jìn)行了完整說明與驗(yàn)證,涵蓋接口定義、空間模型、板級連接、驅(qū)動(dòng)配置、用戶態(tài)訪問以及性能測試。

從測試結(jié)果來看,DSMC已能夠同時(shí)支撐FIFO 數(shù)據(jù)面?zhèn)鬏敽蚏egister 控制面交互Host 可通過 /dev/dsmc/cs0/region0直接訪問Slave側(cè)落地內(nèi)存,也可通過 region3 完成寄存器通知與控制握手,形成一條兼具數(shù)據(jù)訪問與控制交互能力的跨芯片通信通道

總體來看,DSMC 在米爾RK3506核心板 Local Bus場景下已具備明確的工程應(yīng)用價(jià)值,可為工業(yè)控制等場景中的低延遲控制交互和中高頻數(shù)據(jù)交換提供可靠支撐



關(guān)鍵詞: 米爾 RK3506核心板

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉