【精品博文】EDK之路(4)——自定义IP(SDK部分)
SDK部分(BSP的创建)
由于我们存在一个自定义IP,这导致在建立BSP时,会增加一点操作。如果我们什么都不做,直接建立BSP,那么该BSP将不会包括自定义IP的驱动。其实,不用该驱动也行,我们直接通过读写相应寄存器的地址即可,如下:
可以看到这样的缺点是阅读起来不够清晰,所以最好还是要利用API函数来进行操作,而要利用API函数,我们就必须要将自定义IP(即ov2643_ports)的驱动包含进BSP中(其实BSP中所包含的就是各个外设的驱动)。
选择xilinx Tools->Repositories
点击new,选择工程所在路径,点击OK。如果是改变了路径,还需要再点击一下Rescan Repositories.
完成上面这部后,之后就是建立bsp了,到了如下页面时,点击drivers。开始时,ov2643_ports_0那一栏的driver是generic,这时是没有相应驱动的。点击下拉,如果找到了我们自定义IP,就会有一个相应的ov2643_ports驱动,选择它,即可使用相应的API函数。
其他步骤和普通的工程建立一样,不再赘述。
下面进入程序编写部分
程序编写
首先,ov2643_ports_0中pwdn以及rstn为输出,我们要为这两个输出赋值,既然我们添加了驱动,就直接使用相应的API函数,其用法可以查看bsp中的.mss文件。
接着就是使用AXI_IIC传输数据。其用法也通过查看.mss即可,需要提示一下的就是一定要充分理解各个API函数,之前就是用错了API函数,导致总是不能正确传输数据。
总结
我们需要经常使用到自定义IP,因为不是所有接口xilinx都会有自带IP的。在自定义IP时需要注意两点:
1就是修改verilog文件中的逻辑,使得我们可以通过操作寄存器来得到输入输出
2就是记得把驱动添加上,这样可以极大的方便我们的操作。