zynq自定義PL IP核linux驅動開發流程

2021-09-29 03:39:53 字數 1867 閱讀 1783

zynq的開發主要分為兩個階段:

1)硬體邏輯開發階段:該過程與傳統的fpga 軟核cpu(microblaze)開發類似,在vivado中進行。需要在blockdesign中例化zynq硬核cpu。該階段綜合編譯完成後,可以export hardware,生成.hdf檔案,交付給第二階段,軟體開發。

2)軟體開發。軟體開發又分為裸板應用程式開發,以及帶作業系統(通常是linux系統)的驅動程式開發和應用程式開發。軟體開發在linux主機環境下完成。其中驅動程式、linux映象編譯在xilinx的petalinux環境下完成。(由於zynq的cpu是arm a系列處理器,嵌入式開發人員也可使用通用的yocto開發工具鏈進行驅動和應用程式的開發,petalinux實際上是將yocto工具鏈打包,簡化了開發步驟)

該部分與microblaze開發類似,在vivado內開發。blockdesign內zynq cpu的配置可先設定一種開發板的預設定(preset),在預設定的基礎上適當修改,以符合設計的需求。綜合編譯後,可file->export->export hardware輸出.hdf檔案,供petalinux開發使用。

首先確保linux主機(安裝redhat或者ubuntu)正確安裝好petalinux開發環境。並將.hdf檔案準備好。

1.source安裝目錄下的petalinux指令碼

source /home/petalinux/settings.sh

看是否成功進入petalinux環境:echo $petalinux 會回應peta的安裝路徑

2.建立peta工程

petalinux-create --type project --template zynq --name test

環境會為該工程建立乙個test資料夾,進入test資料夾,繼續第三步

3.petalinux-config --get-hw-description=/***/hdf

/***/hdf是hdf檔案所在的資料夾,這一步獲取了hdf所包含的硬體資訊

第三步過程中,會彈出介面,選擇啟動方式,多執行緒編譯等

4.(可選)建立自定義邏輯ip的驅動,並編譯進linux系統中

petalinux-create -t modules --name blink --enable

這一步也可跳過,linux可以後續動態載入驅動模組

驅動模組路徑位於test/project-spec/meta-user/recipes-module/blink

5.修改test/project-spec/meta-user/recipes-module/blink下的.bb檔案,新增blink.h的檔案路徑,修改./files下的blink.c

6.test/project-spec/meta-user/recipes-module/blink路徑下編譯petelinux工程

petalinux-build

編譯完成以後,在test/build/tmp/sysroots/plnx_arm/lib/modules/4.9.0-xilinx-v2017.2/extra下有blink.ko驅動目標檔案

在test/images/linux下有image.ub u-boot.bin等系統檔案,若要用sd卡啟動,需要將u-boot打包一下

7.打包

test/images/linux路徑下,petalinux-package --boot --format bin --fsbl zynq_fsbl.elf --u-boot u-boot.elf --fpga ***.bit,得到boot.bin,將該檔案以及image.ub拷貝到sd卡,即可啟動linux

啟動linux後,進入extra路徑下,modprobe blink.ko 載入驅動模組

mknod  /dev/blink_dev c 244 0 

mount /dev/***/mnt

opencv自定義卷積核

include opencv2 imgproc imgproc.hpp include opencv2 highgui highgui.hpp using namespace cv mat get blur kernel int kernel size 獲得歸一化濾波的卷積核 int main in...

自定義徑向基核函式

根據公式 在自定義svm的徑向基核函式時,需要描述其核矩陣,如下所示 function kernel matrix rbf kernel x1,x2,gamma 在訓練時,x1,x2均為訓練集,x1為測試樣本,即在 時,x1為測試集,x2為支援向量訓練集 len1 size x1,1 測試集樣本數 ...

LIBSVM使用與自定義核函式

libsvm訓練函式使用如下 model svmtrain trainlabel,traindata,s 0 t 2 c 1.2 g 2.8 trainlabel 訓練樣本標籤 traindata 訓練樣本資料集,行向量為樣本值 svm型別,用引數 s 設定,預設值為0,可選型別有 0 c svc ...