天天看點

海思平台(hi3559av100)的pq_sample代碼編譯過程和執行過程1.檔案目錄結構2.Makefile3.源代碼分析

目錄

1.檔案目錄結構

2.Makefile

3.源代碼分析

3.1pq_sample.c檔案

3.2pq_stream的注冊過程:

3.3pq_control的實作過程:

pq_sample的代碼是用于海思的ISP線上調試的代碼,本系統是采用的海思的異構方案(linux+liteos)的系統形式,pq_sample的代碼是運作于a53上面的liteos系統中,實作了pq_stream和pq_control的指令功能,實時視訊流和上位機的傳輸。

通過分析這份代碼有助于研究liteos的使用方法,以及可以作為在liteos上實作添加指令和實時視訊傳輸功能的參考。

1.檔案目錄結構

首先解壓Hi3559AV100_PQ_V2.0.3.0_AMP.tgz壓縮包裡面的内容。進入裡面的pq_sample目錄:

海思平台(hi3559av100)的pq_sample代碼編譯過程和執行過程1.檔案目錄結構2.Makefile3.源代碼分析

從上面的目錄檔案可以看出,兩個靜态庫libcontrol.a和libstream.a,這個應該是實作了視訊流的主要的功能,本來想參考一下海思的實時圖傳,估計很難。我們能夠看得就是Makefile、pq_stream.c、pq_sample.c和pq_control.c。

2.Makefile

首先通過Makefile了解一下,這些檔案的編譯過程。根據《圖像品質調試工具使用指南》上的介紹首先要制定SDK的路勁,就是這個SDK:Hi3559AV100_SDK_V2.0.3.0。可能是這個路勁下面包含了很多的依賴,比如說/mpp/out/liteos/single/lib、/osdrv/platform/liteos_a53/liteos。我的是按下面所示:

SDK_DIR=/home/work/xuyw/src/hi3559av100/new-sdk/double-os/sdk/Hi3559AV100_SDK_V2.0.3.0

具體的Makefile詳細分析,已上傳至:https://download.csdn.net/download/u010299133/11882911

這個Makefile對我們自己設計自己的a53端liteos 的鏡像檔案還是有一定的幫助和參考的。

3.源代碼分析

3.1pq_sample.c檔案

從函數void app_init(void)開始

海思平台(hi3559av100)的pq_sample代碼編譯過程和執行過程1.檔案目錄結構2.Makefile3.源代碼分析

開始這一部分是ipcm和sharefs以及virt-tty的實作,實作的功能主要是異構系統的互相之間的通行,如:sharefs,virt-tty等。在liteos中的menuconfig中配置。

接下來是序列槽的初始化:

海思平台(hi3559av100)的pq_sample代碼編譯過程和執行過程1.檔案目錄結構2.Makefile3.源代碼分析
海思平台(hi3559av100)的pq_sample代碼編譯過程和執行過程1.檔案目錄結構2.Makefile3.源代碼分析
海思平台(hi3559av100)的pq_sample代碼編譯過程和執行過程1.檔案目錄結構2.Makefile3.源代碼分析

SDK_init();函數是liteos mpp這一層的vi vo vdec等子產品的初始化。

sample_command();函數注冊在liteos系統啟動後需要執行的指令,pq_stream和pq_control。

CatLogShell();

pq_sample.c

海思平台(hi3559av100)的pq_sample代碼編譯過程和執行過程1.檔案目錄結構2.Makefile3.源代碼分析
海思平台(hi3559av100)的pq_sample代碼編譯過程和執行過程1.檔案目錄結構2.Makefile3.源代碼分析

以下是app_stream和app_control的函數實作,最主要的思路就是建立了兩個任務

3.2pq_stream的注冊過程:

pq_stream.c

海思平台(hi3559av100)的pq_sample代碼編譯過程和執行過程1.檔案目錄結構2.Makefile3.源代碼分析
海思平台(hi3559av100)的pq_sample代碼編譯過程和執行過程1.檔案目錄結構2.Makefile3.源代碼分析

上面所示的pq_stream_main(argc, argv);函數在libstream.a中實作。

3.3pq_control的實作過程:

pq_control.c

海思平台(hi3559av100)的pq_sample代碼編譯過程和執行過程1.檔案目錄結構2.Makefile3.源代碼分析
海思平台(hi3559av100)的pq_sample代碼編譯過程和執行過程1.檔案目錄結構2.Makefile3.源代碼分析

上面所示的pq_control_main(argc,argv);在libcontrol.a中實作。

繼續閱讀