SDK部分(BSP的創(chuàng)建) 由于我們存在一個(gè)自定義IP,,這導(dǎo)致在建立BSP時(shí),會(huì)增加一點(diǎn)操作,。如果我們什么都不做,,直接建立BSP,那么該BSP將不會(huì)包括自定義IP的驅(qū)動(dòng),。其實(shí),,不用該驅(qū)動(dòng)也行,我們直接通過讀寫相應(yīng)寄存器的地址即可,,如下:
可以看到這樣的缺點(diǎn)是閱讀起來不夠清晰,,所以最好還是要利用API函數(shù)來進(jìn)行操作,而要利用API函數(shù),,我們就必須要將自定義IP(即ov2643_ports)的驅(qū)動(dòng)包含進(jìn)BSP中(其實(shí)BSP中所包含的就是各個(gè)外設(shè)的驅(qū)動(dòng)),。 選擇xilinx Tools->Repositories 點(diǎn)擊new,選擇工程所在路徑,,點(diǎn)擊OK,。如果是改變了路徑,還需要再點(diǎn)擊一下Rescan Repositories. 完成上面這部后,,之后就是建立bsp了,,到了如下頁面時(shí),點(diǎn)擊drivers,。開始時(shí),,ov2643_ports_0那一欄的driver是generic,這時(shí)是沒有相應(yīng)驅(qū)動(dòng)的,。點(diǎn)擊下拉,,如果找到了我們自定義IP,就會(huì)有一個(gè)相應(yīng)的ov2643_ports驅(qū)動(dòng),,選擇它,,即可使用相應(yīng)的API函數(shù)。 其他步驟和普通的工程建立一樣,,不再贅述,。 下面進(jìn)入程序編寫部分 程序編寫 首先,ov2643_ports_0中pwdn以及rstn為輸出,,我們要為這兩個(gè)輸出賦值,,既然我們添加了驅(qū)動(dòng),就直接使用相應(yīng)的API函數(shù),,其用法可以查看bsp中的.mss文件,。 接著就是使用AXI_IIC傳輸數(shù)據(jù)。其用法也通過查看.mss即可,,需要提示一下的就是一定要充分理解各個(gè)API函數(shù),,之前就是用錯(cuò)了API函數(shù),導(dǎo)致總是不能正確傳輸數(shù)據(jù),。 總結(jié) 我們需要經(jīng)常使用到自定義IP,因?yàn)椴皇撬薪涌趚ilinx都會(huì)有自帶IP的,。在自定義IP時(shí)需要注意兩點(diǎn): 1就是修改verilog文件中的邏輯,,使得我們可以通過操作寄存器來得到輸入輸出 2就是記得把驅(qū)動(dòng)添加上,這樣可以極大的方便我們的操作,。 |
|