ikun之家

  • 欢迎来到ikun之家
  • 项目分类
  • 站点简介
「RTFM, then Build.」
第一个『Hello World』在屏幕上闪烁,最后一个『Hello World』向火星问好
  1. 首页
  2. 项目分类
  3. 软件项目
  4. 正文

Linux XDMA开发

2025年10月30日 212点热度 2人点赞

源码下载

xdma_driver下载

配置官方FPGA_XDMA驱动到FPGA设备,使用vscode加载代码,测试代码位于

xdma_driver\tools\xdma_stram_src\pcie_stream_rev2.c
//目前使用到的设备
user_reg = "/dev/xdma0_user" ;
irq_et0 = "/dev/xdma0_events_0" ;
irq_et1 = "/dev/xdma0_events_1" ;
wdevice = "/dev/xdma0_h2c_0" ;
rdevice = "/dev/xdma0_c2h_0" ;

对XDMA寄存器读写,查看在/dev/下是否有xdma0_user这个设备,如果没有,则FPGA端配置未成功

int user_write_reg(char *device, uint32_t reg_addr,uint32_t reg_data)//写寄存器
{
	void *map_base,*virt_addr;
	int reg_fd;
	if ((reg_fd = open(device, O_RDWR | O_SYNC)) == -1)
	return -1;
	//printf("character device %s opened.\n",device);
	fflush(stdout);

	map_base = mmap(0, MAP_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, reg_fd, 0);
	if (map_base == (void *)-1)
	return -1;
	//printf("Memory mapped at address %p.\n", map_base);
	fflush(stdout);

	virt_addr = map_base + reg_addr;
	reg_data = htoll(reg_data);
	*((uint32_t *) virt_addr) = reg_data;
	close(reg_fd);
	return 1;
}

int user_read_reg(char *device, uint32_t reg_addr,uint32_t *reg_data)//读寄存器
{
	void *map_base,*virt_addr;
	int reg_fd;

	if ((reg_fd = open(device, O_RDWR | O_SYNC)) == -1)
	return -1;
	//printf("character device %s opened.\n",device);
	fflush(stdout);

	map_base = mmap(0, MAP_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, reg_fd, 0);
	if (map_base == (void *)-1)
	return -1;
	//printf("Memory mapped at address %p.\n", map_base);
	fflush(stdout);

	virt_addr = map_base + reg_addr;
	*reg_data = *((uint32_t *) virt_addr);
	*reg_data = ltohl(*reg_data);
	close(reg_fd);
	return 1;
}

寄存器可配置为读或者写,同步到FPGA侧,用于传输一些参数和指令,实现一些同步操作,但读写寄存器需要时间,实测一次在8us左右

标签: 暂无
最后更新:2025年11月4日

cuit-tt

这个人很懒,什么都没留下

点赞
下一篇 >

归档

  • 2026 年 4 月
  • 2026 年 3 月
  • 2026 年 1 月
  • 2025 年 12 月
  • 2025 年 11 月
  • 2025 年 10 月
  • 2024 年 3 月

分类

  • 学习记录
  • 未分类
  • 硬件项目
  • 软件项目

COPYRIGHT © 2025 爱坤之家. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

蜀ICP备2025169596号