天天看點

Fedora22上的DM8168視訊處理開發流程第一步:安裝Fedora系統(略)第二步:在Linux中安裝必要的環境 第三步:編譯程式第四步、準備程式運作檔案第五步 運作程式

第一步:安裝Fedora系統(略)

第二步:在Linux中安裝必要的環境

(與項目無直接關系,但是必要的基礎元件)

1.更新dnf源

# dnf install --nogpgcheck http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-22.noarch.rpm

# dnf localinstall –nogpgcheck http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-stable.noarch.rpm http://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-stable.noarch.rpm

# dnf clean all

# dnf makecache

# dnf update

2.建立程式存儲路徑和程式挂載目錄

由于此使用者名設為timely(可以自定義),是以使用者根目錄(~)為/home/timely/

(1)建立程式存儲目錄,以後用于存儲程式檔案:

$ mkdir  /home/timely/DM8168        或      $ mkdir  ~/DM8168

(2)建立程式nfs挂載目錄,以後用于運作程式:

$ mkdir  /home/timely/DM8168/nfs    或    $ mkdir  ~/DM8168/nfs

3.安裝nfs服務

(1)# dnf  install  nfs-utils  rpcbind(也許系統自帶,不必安裝)

(2)# vi  /etc/exports

按i鍵,輸入:

/home/timely/nfs  *(rw,sync,no_root_squash)

按:wq,儲存并退出vi編輯器。

(3)開啟rpcbind服務

# systemctl start rpcbind

(4)開啟nfs服務

# systemctl start nfs

(5)關閉防火牆

# systemctl stop firewalld

*說明:

如需重新開機nfs:# systemctl  restart  nfs

測試挂載本機目錄:# mount  -t  nfs  localhost:/home/timely/nfs/     /media/

測試挂載對方目錄:# mount  -t  nfs  [對方IP位址]:/[目标檔案位址]    [本機目标位址]

4.安裝git工具

(1)# dnf  install  git(也許系統自帶,不必安裝)

5.安裝源程式目錄

(1)解壓縮DVR主程式壓縮包

$ tar  -zxvf  DVRRDK_03.00.00.00.tar.gz  -C  ~/DM8168/

(2)下載下傳其他四個目錄

$ git  clone  https://github.com/willisyi/LiveServer  ~/DM8168/LiveServer/

$ git  clone  https://github.com/willisyi/sys_server   ~/DM8168/sys_server/

$ git  clone  https://github.com/willisyi/mycode  ~/DM8168/mycode/

并将mycode檔案夾中的8168_Boa和interface檔案夾複制到DM8168目錄。

$ cp -Rf ~/DM8168/mycode/8168_Boa/ ~/DM8168/

$ cp -Rf ~/DM8168/mycode/interface/ ~/DM8168/

$ rm -rf ~/DM8168/mycode/

最終,DM8168目錄共有10個檔案夾和4個pdf檔案:

Fedora22上的DM8168視訊處理開發流程第一步:安裝Fedora系統(略)第二步:在Linux中安裝必要的環境 第三步:編譯程式第四步、準備程式運作檔案第五步 運作程式

第三步:編譯程式

    總程式共有5個檔案夾需要編譯:dvr_rdk,LiveServer,sys_server,interface,8168_Boa。下面依次說明編譯方法,可執行檔案目錄和可能遇到的問題。

1.dvr_rdk編譯

(1)必須在dvr_rdk目錄下進行,使用./run_make.sh編譯。

$ cd  ~/DM8168/dvr_rdk/

$ ./run_make.sh   ti816x-etv

Fedora22上的DM8168視訊處理開發流程第一步:安裝Fedora系統(略)第二步:在Linux中安裝必要的環境 第三步:編譯程式第四步、準備程式運作檔案第五步 運作程式

(2)當出現 #### [DM816X_ETV] platform build [] Done !!! 字樣時,代表dvr_rdk編譯完成。

Fedora22上的DM8168視訊處理開發流程第一步:安裝Fedora系統(略)第二步:在Linux中安裝必要的環境 第三步:編譯程式第四步、準備程式運作檔案第五步 運作程式

(3)程式最終的輸出可執行檔案:

~/DM8168/dvr_rdk/bin/ti816x_etv/bin/dvr_rdk_demo_link_api.out

firmware輸出的3個檔案(可選):

~/DM8168/dvr_rdk/bin/ti816x_etv/firmware/dvr_rdk_fw_c6xdsp.xe674

~/DM8168/dvr_rdk/bin/ti816x_etv/firmware/dvr_rdk_fw_m3video.xem3

~/DM8168/dvr_rdk/bin/ti816x_etv/firmware/dvr_rdk_fw_m3vpss.xem3

(4)如果編譯出錯,可能是軟體版本問題,使用指令清除緩存,并重新編譯:

$ ./run_make.sh   ti816x-etv  clean

$ ./run_make.sh   ti816x-etv

*具體編譯完全方法可以參考<ETV-HDV8168軟體使用指南.pdf>

2.配置交叉編譯環境

(1)進入使用者根目錄打開環境變量檔案:.bashrc

$ cd  ~

$ vi  ./.bashrc

在最後一行注釋

# User specific aliases and functions

下面添加以下内容:

PATH="/home/timely/DM8168/ti_tools/cgt_a8/arm-2009q1/bin:$PATH"

export PATH

如下圖所示:

Fedora22上的DM8168視訊處理開發流程第一步:安裝Fedora系統(略)第二步:在Linux中安裝必要的環境 第三步:編譯程式第四步、準備程式運作檔案第五步 運作程式

按:wq退出vi編輯器。

(2)$ source  ~/.bashrc

(3)可通過如下方式測試 arm2009q1編譯器是否可以使用,在Linux伺服器控制台輸入如下指令:

$ arm-none-linux-gnueabi-gcc

顯示如下即可:

Fedora22上的DM8168視訊處理開發流程第一步:安裝Fedora系統(略)第二步:在Linux中安裝必要的環境 第三步:編譯程式第四步、準備程式運作檔案第五步 運作程式

3.LiveServer編譯

(1)進入/LiveServer目錄,使用Makefile編譯

$ cd  ~/DM8168/LiveServer/

$ make

Fedora22上的DM8168視訊處理開發流程第一步:安裝Fedora系統(略)第二步:在Linux中安裝必要的環境 第三步:編譯程式第四步、準備程式運作檔案第五步 運作程式

(2)當出現 make[1]: Leaving directory `/home/timely/DM8168/LiveServer/mediaServer' 字樣時,編譯完成。

Fedora22上的DM8168視訊處理開發流程第一步:安裝Fedora系統(略)第二步:在Linux中安裝必要的環境 第三步:編譯程式第四步、準備程式運作檔案第五步 運作程式

(3)程式最終可執行檔案為:

~/DM8168/LiveServer/wis-streamer/wis-streamer

4.sys_server編譯

(1)進入/sys_server/src/目錄,使用Makefile編譯。

$ cd  ~/DM8168/sys_server/src/

$ make

Fedora22上的DM8168視訊處理開發流程第一步:安裝Fedora系統(略)第二步:在Linux中安裝必要的環境 第三步:編譯程式第四步、準備程式運作檔案第五步 運作程式

(2)當出現make[1]: Leaving directory `/home/timely/DM8168/sys_server/src' 字樣時,編譯完成。

Fedora22上的DM8168視訊處理開發流程第一步:安裝Fedora系統(略)第二步:在Linux中安裝必要的環境 第三步:編譯程式第四步、準備程式運作檔案第五步 運作程式

(3)程式最終可執行輸出檔案為:

~/DM8168/sys_server/src/release/system_server

(4)可能會存在編譯出錯[1]:

/home/timely/DM8168/ti_tools/cgt_a8/arm-2009q1/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/../../../

../arm-none-linux-gnueabi/bin/ld: cannot find - lfreetype

錯誤原因:這是缺少libfreetype庫造成的。

解決方案:在~/DM8168/8168_Boa/中有freetype-2.4.0.tar.gz壓縮包,安裝libfreetype。

$ cd  ~/DM8168/8168_Boa/

$ tar  -zxvf  freetype-2.4.0.tar.gz

$ cd  freetype-2.4.0

$ ./configure  CC=arm-none-linux-gnueabi-gcc  --host=arm-linux  --prefix=$PWD/install

$ make  &&  make  install

生成的檔案在~DM8168/8168_Boa/freetype-2.4.0/install中。

将生成的庫拷貝的交叉編譯工具的庫目錄下:

i:将生成的install/lib 下的libfreetype.so libfreetype.so.6 libfreetype.so.6.5.0 拷貝至

~/DM8168/ti_tools/cgt_a8/arm-2009q1/arm-none-linux-gnueabi/libc/lib/

ii:将生成的install/lib下的libfreetype.a libfreetype.la libfreetype.so libfreetype.so.6 libfreetype.so.6.5.0 拷貝至

~/DM8168/ti_tools/cgt_a8/arm-2009q1/arm-none-linux-gnueabi/libc/usr/lib

iii:将生成的目錄/install/include目錄下的所有檔案 拷貝至

~/DM8168/ti_tools/cgt_a8/arm-2009q1/arm-none-linux-gnueabi/libc/usr/include

然後重新編譯。

(5)可能在./configure會存在出錯[2]:

configure: error: cannot find native C compiler

錯誤原因:找不到本地C編譯器,缺少gcc

解決方案:在root下安裝gcc

# yum  install  gcc

(6)可能會存在編譯出錯[3]:

ln: creating symbolic link `../../target/rfs_816x/usr/share/zoneinfo/localtime': No such file or directory

Fedora22上的DM8168視訊處理開發流程第一步:安裝Fedora系統(略)第二步:在Linux中安裝必要的環境 第三步:編譯程式第四步、準備程式運作檔案第五步 運作程式

錯誤原因:缺少路徑目錄

解決方案:添加缺失路徑

$ cd  ~/DM8168/target/rfs_816x/usr/share/

$ mkdir  zoneinfo

$ cd  zoneinfo

$ mkdir  localtime

然後重新編譯。

5.interface編譯

(1)進入/interface/src 目錄,使用Makefile進行編譯。

$ cd  ~/DM8168/interface/src

$ make

如下圖:

Fedora22上的DM8168視訊處理開發流程第一步:安裝Fedora系統(略)第二步:在Linux中安裝必要的環境 第三步:編譯程式第四步、準備程式運作檔案第五步 運作程式

(2)當出現以下make[1]: Leaving directory '/home/timely/DM8168/interface/src'字樣時,編譯完成。

Fedora22上的DM8168視訊處理開發流程第一步:安裝Fedora系統(略)第二步:在Linux中安裝必要的環境 第三步:編譯程式第四步、準備程式運作檔案第五步 運作程式

(3)程式沒有最終可執行輸出檔案。

(4)可能會存在的編譯錯誤[1]:

make: *** No rule to make target `/opt/interface/include/semaphore.h', needed by `semaphore.o'.  Stop.

錯誤原因:Makefile檔案内的路徑有問題

解決方案:修改Makefile檔案内容:

$ vi  Makefile

可以見到Makefile前三行:

INTERFACE_DIR=../

PUBLIC_INCLUDE_DIR=/opt/interface/include

APP_LIB_DIR=/opt/interface/lib

将它改為:

INTERFACE_DIR=../

PUBLIC_INCLUDE_DIR=./include

APP_LIB_DIR=./lib

如圖:

Fedora22上的DM8168視訊處理開發流程第一步:安裝Fedora系統(略)第二步:在Linux中安裝必要的環境 第三步:編譯程式第四步、準備程式運作檔案第五步 運作程式

重新編譯程式即可。

(5)可能會存在的編譯錯誤[2]:

error: asm/bitsperlong.h: No such file or directory

Fedora22上的DM8168視訊處理開發流程第一步:安裝Fedora系統(略)第二步:在Linux中安裝必要的環境 第三步:編譯程式第四步、準備程式運作檔案第五步 運作程式

進入int-ll64.h檔案

$ cd ~/DM8168/ti_tools/linux_lsp/linux-psp-dvr-04.04.00.01/src/linux-04.04.00.01/include/asm-generic/

$ vim int-ll64.h

Fedora22上的DM8168視訊處理開發流程第一步:安裝Fedora系統(略)第二步:在Linux中安裝必要的環境 第三步:編譯程式第四步、準備程式運作檔案第五步 運作程式

頭檔案改為#inlcude <asm-generic/bitsperlong.h>,重新編譯。

6.8168_Boa編譯

(1)進入/8168_Boa/boa-0.94.13/src/ 目錄,使用Makefile進行編譯。

$ cd  ~/DM8168/8168_Boa/boa-0.94.13/src/

$ make

Fedora22上的DM8168視訊處理開發流程第一步:安裝Fedora系統(略)第二步:在Linux中安裝必要的環境 第三步:編譯程式第四步、準備程式運作檔案第五步 運作程式

(2)當出現make[1]: Leaving directory `/home/timely/DM8168/8168_Boa/boa-0.94.13/src'字樣時,編譯完成。

Fedora22上的DM8168視訊處理開發流程第一步:安裝Fedora系統(略)第二步:在Linux中安裝必要的環境 第三步:編譯程式第四步、準備程式運作檔案第五步 運作程式

(3)程式最終可執行輸出檔案為:

~/DM8168/8168_Boa/boa-0.94.13/src/boa

(4)可能遇到的問題[1]:(Fedora下不會出現此問題)

make[1]: bison: Command not found

錯誤原因:缺少bison指令

解決方案:安裝bison

# yum install bison

并重新編譯。

(5)可能遇到的問題[2]:(Fedora下不會出現此問題)

make[1]: flex: Command not found

錯誤原因:缺少flex指令

解決方案:安裝flex

# yum install flex

并重新編譯。

第四步、準備程式運作檔案

程式有兩種運作方案,一種是基本運作方案,一種是基于ipc核間通信的運作方案。

1.基本運作方案

(1)在使用者根目錄下建立nfs檔案夾(如果已經有了,不需要再建立)

$ mkdir  ~/nfs

(2)建構以下7個檔案。

Fedora22上的DM8168視訊處理開發流程第一步:安裝Fedora系統(略)第二步:在Linux中安裝必要的環境 第三步:編譯程式第四步、準備程式運作檔案第五步 運作程式

[1]四個可執行檔案:

dvr_rdk_demo_link_api.out :  

~/DM8168/dvr_rdk/bin/ti816x_etv/bin/dvr_rdk_demo_link_api.out

wis-streamer :      

~/DM8168/LiveServer/wis-streamer/wis-streamer

system_server :

~/DM8168/sys_server/src/release/system_server

boa :

~/DM8168/8168_Boa/boa-0.94.13/src/boa

[2]兩個輔助檔案:

logo.yuyv : logo圖案,yuyv格式  

HZK16 : 字元庫

[3]一個腳本檔案

chain.sh : 程式入口

2.基于ipc核間通信的運作方案

(1)在使用者根目錄下建立nfs檔案夾(如果已經有了,不需要再建立)

$ mkdir  ~/nfs

(2)建構以下個檔案。

 可以解壓縮prebuild_ipc.tar.gz檔案到此目錄。

Fedora22上的DM8168視訊處理開發流程第一步:安裝Fedora系統(略)第二步:在Linux中安裝必要的環境 第三步:編譯程式第四步、準備程式運作檔案第五步 運作程式

其中唯一不同的是,目錄下面的firmware檔案夾存儲的是DM8168的2個Cortex-M3核和DSP核代碼執行檔案:

dvr_rdk_fw_c6xdsp.xe674  

dvr_rdk_fw_m3video.xem3  

dvr_rdk_fw_m3vpss.xem3

這三個檔案均在~/DM8168/dvr_rdk/bin/ti816x_etv/firmware/目錄下,複制過來即可。

Fedora22上的DM8168視訊處理開發流程第一步:安裝Fedora系統(略)第二步:在Linux中安裝必要的環境 第三步:編譯程式第四步、準備程式運作檔案第五步 運作程式

第五步 運作程式

無論是基本運作方案還是基于ipc核間通信的方案,在運作程式步驟(方法和指令)都是一樣的。

1.硬體部分:

(1)開啟視訊源電源;

(2)開啟DM8168-ETV闆電源

(3)将電腦與DM8168-ETV闆子連結到一個路由器上

2.軟體部分:

(4)檢視自己連接配接在路由器上的IP位址

$ ifconfig

Fedora22上的DM8168視訊處理開發流程第一步:安裝Fedora系統(略)第二步:在Linux中安裝必要的環境 第三步:編譯程式第四步、準備程式運作檔案第五步 運作程式

這次連接配接上面顯示IP 位址為192.168.1.100

(5)連接配接到開發闆:

$ telnet  192.168.1.8

(開發闆預設IP位址為192.168.1.8)

在login:中填寫root<回車>

進而進入dm816x開發闆中的linux系統:

Fedora22上的DM8168視訊處理開發流程第一步:安裝Fedora系統(略)第二步:在Linux中安裝必要的環境 第三步:編譯程式第四步、準備程式運作檔案第五步 運作程式

(6)挂載可執行檔案目錄到開發闆

在[email protected]:~#後面輸入指令:

[email protected]:~# busybox mount -t nfs 192.168.1.100:/home/timely/DM8168/nfs  /mnt  -o nolock

(7)執行腳本檔案,運作程式

[email protected]:~# cd /mnt

[email protected]:/mnt# ./chain.sh

Fedora22上的DM8168視訊處理開發流程第一步:安裝Fedora系統(略)第二步:在Linux中安裝必要的環境 第三步:編譯程式第四步、準備程式運作檔案第五步 運作程式

Enjoy!    Written by Timely Wang ~

繼續閱讀