目錄
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目錄:
從上面的目錄檔案可以看出,兩個靜态庫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)開始
開始這一部分是ipcm和sharefs以及virt-tty的實作,實作的功能主要是異構系統的互相之間的通行,如:sharefs,virt-tty等。在liteos中的menuconfig中配置。
接下來是序列槽的初始化:
SDK_init();函數是liteos mpp這一層的vi vo vdec等子產品的初始化。
sample_command();函數注冊在liteos系統啟動後需要執行的指令,pq_stream和pq_control。
CatLogShell();
pq_sample.c
以下是app_stream和app_control的函數實作,最主要的思路就是建立了兩個任務
3.2pq_stream的注冊過程:
pq_stream.c
上面所示的pq_stream_main(argc, argv);函數在libstream.a中實作。
3.3pq_control的實作過程:
pq_control.c
上面所示的pq_control_main(argc,argv);在libcontrol.a中實作。