ZYNQ7020_Linux_HLS_IP的驱动
一、目标
驱动HLS 生成的角点检测IP。
二、准备工作
1、生成.bit文件
将编译好的HLS IP添加到vivado工程中。
三、裸机程序
1、HLS IP初始化
HLS IP的初始化主要是完成控制寄存器和行列、阈值寄存器数值的初始化。
void FastCornerDecInit(XHls_fast_corner *fc, int column,int row)
{
XHls_fast_corner_Initialize(fc, 0);
XHls_fast_corner_SetRows(fc, row);
XHls_fast_corner_SetCols(fc, column);
XHls_fast_corner_SetThrehold(fc, 20);
XHls_fast_corner_EnableAutoRestart(fc);
XHls_fast_corner_Start(fc);
}
四、驱动介绍
1、驱动结构
只需在原有的驱动程序中添加hls的初始化(hls_init())、启动(hls_start())和退出(hls_exit())程序。
static int hls_start(struct hls_handle *hls_fc)
{
struct chvdma_dev *devp;
volatile unsigned int *reg;
if((hls_fc->virt_addr == NULL) || (hls_fc->phys_addr == NULL))
{
printk("hls_start failed;\n");
return -1;
}
devp = container_of(hls_fc,struct chvdma_dev,hls_fc);
if(devp == NULL)
{
printk("hls_start fialed.\n");
return -1;
}
reg = (volatile unsigned int *)(hls_fc->virt_addr + XHLS_FAST_CORNER_CONTROL_BUS_ADDR_COLS_DATA