【ATU Book-S32V系列】 APEX 進階建置方式

一.   概述

前文回顧,從上一篇 ACF 進階配置 ,介紹了一些撰寫 ACF 所需的函式。接下來,就是要整合這一系列所介紹的所有建置流程 (APU Kernel、ACF Graph),最後將生成 APEX Kernel 並於 Application 應用端使用。如同下圖 “APEX 技術指南-文章架構示意圖” 所示,此次介紹章節為 “ APEX 進階建置方式“

APEX  技術指南 - 文章架構示意圖
 

若是對於 APEX 相關技術與知識尚未理解者,該篇文章難度略深,請從另一個系列的文章 “ APEX 基礎架構 ” 閱覽起。 

 

二.   APEX 進階建置方式

回到最初介紹的 APEX 軟體架構流程示意圖,該系列是由 APU Kernel (負責實際演算法運算) 、ACF Graph (負責銜接 APU Kernel) 的建置介紹起
接下來的建置介紹,將描述如何撰寫 APEX Kernel,並搭配已建置完成的 APU Kernel 與 ACF Graph。而 APEX Kernel 也是在描述這一個 Kernel 所設計的動作與行為,比如說初始化、重置、動作、顯示 APU 資訊等等。最後會以一個範例來向各位展示如何建置的 APEX Kernel。


APEX 軟體架構流程示意圖

 
1.   APEX Kernel 建置方法

建置 APEX Kernel 的第一步就是定義整個 kernel 內的功能與函式
須要撰寫相對應的 source 與 include 檔案,如下列程式碼所示,首先引用 APU Kernel 後,開始定義 初始化(Initialize) 、重新連接 輸入與輸出端(ReconnectIO) 、設定規範(SetPolicy) 等等功能。但代碼細節過於攏長,請至參考路徑內之 資料夾src 內的檔案查看。
參考路徑 : /s32v234_sdk/libs/apexcv_base/***/src/

撰寫 source 檔 :

 apexcv_simple.cpp


 

撰寫 include 檔 :
接下來,還須撰寫相關的 include 檔案,並搭配 資料夾src 中所撰寫的 source 檔案 作使用。
路徑 /s32v234_sdk/libs/apexcv_base/***/include/ 底下進行撰寫以下檔案
下列以 apexcv_simple.h 與 apexcv_simple_int.h 兩隻檔案作介紹。

apexcv_simple.h



apexcv_simple_int.h

 

 2.  APEX Kernel 編譯方法

須依照原廠路徑 /s32v234_sdk/libs/apexcv_base/apu_simple/apu-nxp/ build-v234ce-gnu-linux-d 下開啟終端機進行編譯 (指令 : make -j4 allsub ) 。如下圖所示 :

 

三.   APEX Kernel 應用於 Applicatoin


APEX Kernel 使用方式就與 APEX-CV 使用方式一致,其實這裡所建置的 APEX Kernel 就是 APEX-CV Kernel。這也代表有能力刻化出專屬的 APEX Kernel,接下來只要將想要的算法設計進去即可。透過這系列的文章介紹,可以設計成一個專屬的 APEX Kernel ,使用方式如下…

使用限制與說明 :

將兩個矩陣矩陣相加後取絕對值,如 矩陣C = | 矩陣A + 矩陣A |。

 

輸入與輸出矩陣 :  Src1 、 Src2 、 Dst 皆支援型態為 VSDK_CV_8UC1。
                            矩陣寬度為 128 至 2048個像素,矩陣長或寬度需為 16 的倍數。
輸入變數 ApexKernel 為選擇使用哪一顆 APEX 進行運算 (ApexKernel = 0 or ApexKernel=1) 。

 

函式代碼說明 :

使用剛剛所建置的 APEX Kernel 內之功能與函式,比如說初始化、重新連接輸入端等等 (觀察代碼註解) …

 

程式應用範例 ( C / C++ ) :

輸入一張灰階影像作為輸入矩陣A 與 B ,即等同於加法的結果。

 

程式結果

 

 

沿著此篇的思路,就可以達成這系列最主要的目的 建置專屬的 APEX Kernel !! 由於建置過程繁瑣,請一步一腳印從 APU Kernel 、 ACF Graph 、 APEX Kernel  建立起。並注意各個步驟所在的資料夾,也建議選一個原廠的 APEX Kernel (比如說 : arithmetic 或 histogram kernel) 與該系列文章相互參考,並著手嘗試建立 APEX Kernel !!! 若有建置相關問題歡迎討論,後續將介紹利用 APEX-CV 去建置車道偏移偵測系統,敬請期待!!

 

四.  參考文件

[1] NXP Official website : https://www.nxp.com/
[2] VisionSDK_ProgrammingExamples.pdf
[3] VisionSDK_UserGuide.pdf
[4] VisionSDK_SUMat_UMat.pdf
[5] UG-10328-01-09_APEX-CV_Base_Library .pdf
[6] UG-10328-02-11_APEX-CV_Pro_Library.pdf
[7] UG-10267-03-14-ACF_User_Guide.pdf
[8] UG-10301-00-06_APU-2_C_Programmer_Guide pdf

如有任何相關 APEX 技術問題,歡迎至博文底下留言提問 !!
接下來還會分享更多 APEX 的技術文章 !!敬請期待 【 ATU Book-S32V系列 】 !!

 

 


 

★博文內容均由個人提供,與平台無關,如有違法或侵權,請與網站管理員聯繫。

★文明上網,請理性發言。內容一周內被舉報5次,發文人進小黑屋喔~

評論