davinci DM6467——linux開發環境搭建
阿新 • • 發佈:2019-02-17
TI DAVINCI DM6446的開發環境搭建不像三星S3C2410,S3C2440,ATMEL的AT91SAM9260之類的單核ARM那麼簡單,因為DM6446還有DSP端的開發環境,以及雙核之間的通訊和程式編譯等問題,所以開發攻略第一步就是要搭好開發環境。其實TI的EVM(TI 的開發板)也提供相關的EVM start guide(sprue66f.pdf),適合參考。
DAVINCI開發環境搭建基本上可分以下幾步: 1) 準備好各種相關的windows,linux,DAVINCI 軟體開發包安裝軟體; 2) linux環境搭建; 3) ARM編譯環境搭建; 4) DSP編譯環境搭建; 5) 編譯DSP演算法LIB,生成x64P,由host $ tar zxf DaVinciLSP_#_#_#_#.tar.gz 以上兩個開發包是最基本的,至於下面要安裝的TI 自己的dvsdk,沒有它也可以照樣開發DM6446,因為DSP演算法開發也可以使用常用的方法生成*.bin檔案,放到根檔案系統,當做一個應用檔案boot起來也是可以的,那是後話。 補充提示:由於mvl_5_0_0801921_demo_sys_setuplinux.bin和mvl_5_0_0_demo_lsp_setuplinux_02_00_00_140.bin等檔案比較佔用虛擬機器的空間,建議安裝完後,把它們刪除。如果有些*.bin執行不了,請使用chmod +x *.bin改變檔案屬性。 2)安裝TI DVSDK工具鏈 dvsdk存放路徑/home/<useracct>/下,<useracct>就是你的linux系統普通使用者賬號,不是root賬號。TI 建議使用者使用su <user>命令切換到使用者賬號的許可權下安裝dvsdk,其在root下安裝也沒問題。使用以下命令開始安裝dvsdk; host $ ./dvsdk_setuplinux_2_00_00_22.bin 安裝完dvsdk後,使用以下命令,按照提示安裝xdctools和bios工具包到/home/<useracct>/dvsdk_2_00_00_22/目錄下, host $ ./xdctools_setuplinux_3_10_03.bin host $ ./bios_setuplinux_5_33_06.bin 然後在/home/<useracct>/dvsdk_2_00_00_22/下先使用 host $ mkdir cg6x_6_0_23 產生cg6x_6_0_23/目錄,執行以下命令安裝ti_cgt_c6000_6.0.23到/home/<useracct>/dvsdk_2_00_00_22/cg6x_6_0_23/: host $ ./ti_cgt_c6000_6.0.23_setup_linux_x86.bin 設定環境變數 csh: host $ setenv C6X_C_DIR /home/<useracct>/dvsdk_2_00_00_22/cg6x_6_0_23/include:
/home/<useracct>/dvsdk_2_00_00_22/cg6x_6_0_23/lib 或ksh or bash: host $ export C6X_C_DIR=/home/<useracct>/dvsdk_2_00_00_22/cg6x_6_0_23/include:
/home/<useracct>/dvsdk_2_00_00_22/cg6x_6_0_23/lib 其實以上的環境變數的設計也可以在dvsdk_2_00_00_22/Rules.make裡設定。對應XDC_INSTALL_DIR巨集及BIOS_INSTALL_DIR巨集,需要改成如下值: XDC_INSTALL_DIR=$(DVSDK_INSTALL_DIR)/xdctools_3_10_03 BIOS_INSTALL_DIR=$(DVSDK_INSTALL_DIR)/bios_5_33_06 在需要使用到DSP程式編譯處,需要改動相應的CODEGEN_INSTALL_DIR巨集如下: CODEGEN_INSTALL_DIR = $(DVSDK_INSTALL_DIR)/cg6x_6_0_23 3)安裝Codec Servers Codec Servers就是提供ARM端呼叫DSP端演算法的一個服務機制,使用以下命令安裝DM6446的Codec Servers到/home/<useracct>/dvsdk_2_00_00_22下, host $ ./dm6446_codecs_setuplinux_#_#_#_#.bin 4) 最後,把臨時的*.bin都刪除掉,畢竟檔案很大,保留在VM裡佔空間。到這裡,ARM端的開發環境已經搭建完。 第四步:設定TFTP SERVER 有兩種方法可以實現,一個在Redhat Linux 5裡設定 TFTP SERVER,在根目錄/下產生tftpboot目錄,使用chmod -R 777 /tftpboot/改變許可權屬性,然後配置linux 裡的TFTP server。另一個是直接使用windows下的TFTP SERVER軟體,把在LINUX下生成的檔案,比如U-BOOT,KERNEL,ROOTFS 通過samba機制COPY到windows下的TFTP SERVER的目錄。我們這裡只介紹第1中方法。 使用tftp server 之前,首先確保你的linux 主機安裝有xinetd,然後使用以下命令,檢視你linux主機是否安裝TFTP SERVER: host $ rpm -q tftp-server 如果出現: tftp-server-0.xx-x.x字樣,表明安裝成功。沒有的話,你需要從REDHAT LINUX5的映象光碟CD裡SERVER目錄下,使用命令(rpm -ivh tftp-server-0.42-3.1.i386.rpm)安裝,或者直接把tftp-server-0.42-3.1.i386.rpm解壓出來放到臨時資料夾裡同樣使用rpm -ivh tftp-server-0.42-3.1.i386.rpm安裝。 進入根目錄/下,使用命令 host $ mkdir /tftpboot host $ chmod -R777 /tftpboot host $ /sbin/chkconfig tftp on host $ /sbin/chkconfig --list 這時linux主機會顯示 .............. xinetd based services:
chargen-dgram: off
chargen-stream: off
cvs: off
daytime-dgram: off
daytime-stream: off
discard-dgram: off
discard-stream: off
echo-dgram: off
echo-stream: off
eklogin: off
ekrb5-telnet: off
gssftp: off
klogin: off
krb5-telnet: off
kshell: off
rsync: off
tcpmux-server: off
tftp: on
time-dgram: off
time-stream: off on表示TFTP SERVER已經執行。這時你可以把ubl.bin uboot.bin kernel.bin之類的bin檔案COPY到/tftpboot目錄下,在板子上跑的UBOOT可以做很多update的工作了。 第五步:設定NFS 開發嵌入式LINUX一定少不了NFS,目的是提高應用軟體的開發效率。笨辦法就是頻繁燒寫rootfs到板子上,那是不可取的。 1) 以普通使用者<useracct>進入linux host,如果你在ROOT下,使用exit,然後換成普通使用者進入。 2)使用命令進入 /home/<useracct>下, host $ cd /home/<useracct> host $ mkdir -p dm6446/nfs_rootfs host $ cd dm6446/nfs_rootfs 3)切換到root host $ su root host $ cp -a /opt/mv_pro_5.0.0/montavista/pro/devkit/arm/v5t_le/target/* .
host $ chown -R <useracct> opt cp -a 命令很耗時間,因為東西很多,就是把之前安裝的mvl_5_0_0801921_demo_sys_setuplinux.bin裡的根檔案系統target目錄下的東西全部COPY到當前目錄下(注意那個"."),其實這個target就是TI EVM的根檔案系統,超級大!不過使用nfs不用管它的大小,等製作rootfs燒到板子上的時候,再裁減不遲。 4)編輯linux host /etc/exports檔案, host $ vi /etc/exports 內容:/home/<useracct>/dm6446/nfs_rootfs *(rw,no_root_squash,no_all_squash,sync)輸入,注意"*"和"("之間不能有空格,它們是連在一起寫的。使用wq儲存exports檔案退出。 5)還是在root賬號下,使用以下命令啟用nfs, host $ /usr/sbin/exportfs -av
host $ /sbin/service nfs restart 6)檢驗並關閉linux host的防火牆: host $ /etc/init.d/iptables status host $ /etc/init.d/iptables stop 到這裡linux host的nfs已經搞定,我們以後可以使用下面的方法測試nfs。 使用以下命令得到linux host的IP,gatewayip,netmask等資訊。 host $ /sbin/ifconfig 然後在板子上的U-BOOT命令下,輸入以下資訊: myboard # setenv ipaddr 192.168.1.188(本人板子u-boot ip) myboard # setenv serverip 192.168.1.251(本人linux host ip)
myboard # setenv netmask 255.255.255.0
myboard # setenv gatewayip 192.168.1.1
myboard # setenv nfshost 192.168.1.251
myboard # setenv rootpath /home/<useracct>/dm6446/nfs_rootfs
myboard # setenv bootargs console=ttyS0,115200n8 noinitrd rw ip=192.168.1.188:192.168.1.251:192.168.1.1:255.255.255.0:::off root=/dev/nfs nfsroot=192.168.1.251:/home/<useracct>//dm6446/nfs_rootfs,nolock mem=120M myboard # saveenv(儲存) myboard # printenv (檢查剛才的輸入是否正確,否則NFS掛不上根檔案系統) 第六步:設定GCC交叉編譯環境 以普通使用者login,vi 編輯~/.bashrc檔案,新增 PATH="/opt/mv_pro_5.0.0/montavista/pro/devkit/arm/v5t_le/bin:
/opt/mv_pro_5.0.0/montavista/pro/bin:
/opt/mv_pro_5.0.0/montavista/common/bin:$PATH" 儲存退出,然後使用以下命令生效,或者退出系統再登陸也可以。 host $ source ~/.bashrc 其實,使用root身份處理也行。