HXDSP2441-SRIO(Serial RapidIO)

RapidIO

RapidIO架构是一种高性能分组交换电连接技术。 它支持消息传递、读/写和缓存一致性语义。 基于以太网等行业标准电气规范,RapidIO 可用作芯片到芯片、板到板和机箱到机箱互连。
在这里插入图片描述

HXDSP2441 SRIO 自回环测试

SRIO自回环测试需要使能SC_Loopback0SC_Loopback1SC_Loopback2SC_Loopback3寄存器,可以手动写入,也可取消BSP中rio_phy.c文件32857-32860行的注释。

#define CONFIGURE_INIT

#include "sys_cfg.h"
#include "xconfig.h"

static int dma_opt_test(void) {
	int status, i, len = 16 * 1024;
	for (i = 0; i < len; i++) {
		*(uint32_t *)(0x70000000 + i) = 0;
		*(uint32_t *)(0x1280000 + i) = 0;
		*(uint32_t *)(0x12a0000 + i) = 0;
		*(uint32_t *)(0x1260000 + i) = i;
	}

	/*
	 * 映射表配置: #define SRIO0_RPIO_LUT_UPADDR      0
	 */
	status = srio_driver_opt_write(SRIO3_DEVICE_ID, 0x4980000, 0x4A00000, 0x0, 0x0,
								   0x0, len * 4, SRIO1_NODEID);
	if (status != 0)
		return -1;
	status = srio_driver_opt_read(SRIO3_DEVICE_ID, 0x4A00000, 0x4a80000, 0x0, 0x0,
								  0x0, len * 4, SRIO1_NODEID);
	if (status != 0)
		return -1;
	int check_ok = 1;
	for (i = 0; i < len; i++) {
		if (*(uint32_t *)(0x1260000 + i) != i) {
			printf("read error at 0x%x, expect 0x%x but get 0x%x\n", (uint32_t *)(0x4a80000 + i), i, *(uint32_t *)(0x4a80000 + i));
			check_ok = 0;
		}
	}
	printf("dma_opt_test %s\n", check_ok ? "ok" : "fail");

	return status;
}

int main(int argc, char *argv[]) {
	pll_init();
	int status = 0;
	status = srio_driver_initialize(SRIO3_DEVICE_ID, NULL);
	if (status != 0)
		return -1;
	status = srio_driver_open(SRIO3_DEVICE_ID, NULL);
	if (status != 0)
		return -1;

	status = dma_opt_test();

	status = srio_driver_close(SRIO1_DEVICE_ID, NULL);
	if (status != 0)
		return -1;

	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值