第一步:安裝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檔案:
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIyVGduV2QvwVe0lmdhJ3ZvwFM38CXlZHbvN3cpR2Lc1TPB10QGtWUCpEMJ9CXsxWam9CXwADNvwVZ6l2c052bm9CXUJDT1wkNhVzLcRnbvZ2LcZXUYpVd1kmYr50MZV3YyI2cKJDT29GRjBjUIF2LcRHelR3LcJzLctmch1mclRXY39TM2AjM0AjM0EjNxkDM1EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
第三步:編譯程式
總程式共有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
(2)當出現 #### [DM816X_ETV] platform build [] Done !!! 字樣時,代表dvr_rdk編譯完成。
(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
如下圖所示:
按: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' 字樣時,編譯完成。
(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)程式最終可執行輸出檔案為:
~/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)挂載可執行檔案目錄到開發闆
在[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
Enjoy! Written by Timely Wang ~