返回所有文章
指南 / TSENGCHEN BLOG

DSMC开发指南

05_Guid · DSMC开发指南

05_Guid · 第 1 / 1 篇

保留原笔记正文与技术内容,仅脱敏敏感信息。配图按作者要求保留原样。

What is DSMC

什么是DSMC? DSMC是基于DDR的并行告诉接口,DSMC一共有两个模式

  • PSRAM
  • LocalBus

How to use DSMC

通过设备树来控制DLL训练初值,Slave的模式选择,传输速率,传输协议,等等。

DLL训练初值

&dsmc{
	...
	slave {
		rockchip,dqs-dll = <0x20 0x20
							0x20 0x20
							0x20 0x20
							0x20 0x20>;
		rockchip,ranges = <0x0 0xc0000000 0x0 0x2000000>;
	};
};

传输速率

&dsmc{
	...
	clock-frequency = <100000000>;
	...
};
	

Slave模式选择

选择slave设备设置为PSRAM或者Localbus

&dsmc_slave {
	...
	psram {
		dsmc_psram0:psaram0 {
			...
			status = "okay"/"disable";
			...
		}
		...
	};
	
	lb-slave {
		...
		dsmc_lb_slave0:lb-slave0 {
			status = "okay"/"disbale";
		};
		....
	};
};

LocalBus传输协议

&dsmc_slave{
	lb-slave{
		dsmc_lb0_slave0{
			...
			dsmc_p0_region:region0{
				...
				rockchip,attribute = "Merged FIFO";
				stuatus = "okay/disable";
				...
			};
			dsmc_p1_region:region1{
				...
				rockchip,attribute = "No-Merged FIFO";
				stuatus = "okay/disable";
				...
			};
			dsmc_p0_region:region0{
				...
				rockchip,attribute = "DPRA";
				stuatus = "okay/disable";
				...
			};
			dsmc_p0_region:region0{
				...
				rockchip,attribute = "Register";
				stuatus = "okay/disable";
				...
			};
		};
	};
};
	

中断线

&dsmc_slave {
	...
	lb-slave {
			dsmc_lb_slave2: lb-slave2 {
					rockchip,int-en = <0x2>;
					...
			};
	};
};

example

&dsmc {
	clock-frequency = <50000000>;
	status = "okay";
	slave {
			rockchip,dqs-dll = <0x40 0x40
								0x40 0x40
								0x40 0x40
								0x40 0x40>;
			rockchip,ranges = <0x0 0xc0000000 0x0 0x2000000>;
	};
};

&dsmc_slave {
	status = "okay";
	lb-slave {
		dsmc_lb_slave2: lb-slave2 {
			rockchip,int-en = <0x2>;
				status = "okay";
				dsmc_p2_region: region {
					dsmc_p2_region0: region0 {
							status = "okay";
					};
					dsmc_p2_region3: region3 {
							status = "okay";
					};
				};
			};
	};
};

DSMC数据链路

CPU-IO

Pasted image 20260929170029

DMA

Pasted image 20260929170056

Debug

LocalBus最常用,作为例子 RK3506_EVB1

DSMC驱动加载成功

ls -l /sys/bus/platform/devices/ff8b0000.dsmc/driver

Pasted image 20260929164341

DSMC PLC_TEST DMA测试

cat /sys/kernel/rk_dsmc_test/plc_test

Pasted image 20260929164438

DSMC CPU-IO 压力测试

cat /sys/kernel/rk_dsmc_test/memtester

Pasted image 20260929164506

DSMC传输速率

cat /sys/kernel/rk_dsmc_test/dsmc_speed_t
05_Guid · 文档目录