RapidIO
RapidIO giá cấu là một loại cao tính năng phân tổ trao đổi điện liên tiếp kỹ thuật. Nó duy trì tin tức truyền lại, đọc / viết hòa hoãn tồn nhất trí tính ngữ nghĩa. Căn cứ vào lấy quá võng chờ ngành sản xuất tiêu chuẩn điện khí quy phạm, RapidIO nhưng dùng làm chip đến chip, bản đến bản cùng cơ rương đến cơ rương quan hệ nối liền.
HXDSP2441 SRIO tự quanh co thí nghiệm
SRIO tự quanh co thí nghiệm yêu cầu sử có thểSC_Loopback0
,SC_Loopback1
,SC_Loopback2
CùngSC_Loopback3
Gởi lại khí, có thể tay động viết nhập, cũng có thể hủy bỏ BSP trung rio_phy.c văn kiện 32857-32860 hành chú thích.
#defineCONFIGURE_INIT
#include"sys_cfg.h"
#include"xconfig.h"
staticintdma_opt_test(void){
intstatus,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;
}
/*
* chiếu rọi biểu phối trí: #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;
intcheck_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");
returnstatus;
}
intmain(intargc,char*argv[]){
pll_init();
intstatus=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;
return0;
}