Fedora22上的DM8168視頻處理開發流程

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

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

(與項目無直接關係,可是必要的基礎組件)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文件:git



第三步:編譯程序

    總程序共有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-etvgithub


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


(3)程序最終的輸出可執行文件:vim

~/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

以下圖所示:api


:wq退出vi編輯器。
(2)$ source  ~/.bashrc
(3)可經過以下方式測試 arm2009q1編譯器是否能夠使用,在Linux服務器控制檯輸入以下命令:
$ arm-none-linux-gnueabi-gcc

顯示以下便可:緩存



3.LiveServer編譯

(1)進入/LiveServer目錄,使用Makefile編譯
$ cd  ~/DM8168/LiveServer/
$ make


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


(3)程序最終可執行文件爲:服務器

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


4.sys_server編譯

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

$ make編輯器


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


(3)程序最終可執行輸出文件爲:ide

~/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


錯誤緣由:缺乏路徑目錄

解決方案:添加缺失路徑
$ cd  ~/DM8168/target/rfs_816x/usr/share/
$ mkdir  zoneinfo
$ cd  zoneinfo
$ mkdir  localtime

而後從新編譯。


5.interface編譯

(1)進入/interface/src 目錄,使用Makefile進行編譯。
$ cd  ~/DM8168/interface/src
$ make

以下圖:


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


(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

如圖:


從新編譯程序便可。
(5)可能會存在的編譯錯誤[2]:
error: asm/bitsperlong.h: No such file or directory


進入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


頭文件改成#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


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


(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個文件。


[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文件到此目錄。


其中惟一不一樣的是,目錄下面的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/目錄下,複製過來便可。



第五步 運行程序

不管是基本運行方案仍是基於ipc核間通訊的方案,在運行程序步驟(方法和命令)都是同樣的。

1.硬件部分:

(1)開啓視頻源電源;
(2)開啓DM8168-ETV板電源
(3)將電腦與DM8168-ETV板子連接到一個路由器上

2.軟件部分:

(4)查看本身鏈接在路由器上的IP地址

$ ifconfig


此次鏈接上面顯示IP 地址爲192.168.1.100
(5)鏈接到開發板:
$ telnet  192.168.1.8
(開發板默認IP地址爲192.168.1.8)
在login:中填寫root<回車>

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


(6)掛載可執行文件目錄到開發板
在root@dm816x:~#後面輸入命令:
root@dm816x:~# busybox mount -t nfs 192.168.1.100:/home/timely/DM8168/nfs  /mnt  -o nolock
(7)執行腳本文件,運行程序
root@dm816x:~# cd /mnt
root@dm816x:/mnt# ./chain.sh



Enjoy!    Written by Timely Wang ~

相關文章
相關標籤/搜索