天天看點

TI Davinci DM6446開發攻略——開發環境搭建

         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,由ARM端可執行程式調用運作;

第一步:相關軟體準備

    LINUX下的軟體工具包如下:

    1)VMware-workstation;

    2)RedHat Enterprise Linux Server 5(server 4 也可以);

    3)mvl_5_0_0801921_demo_sys_setuplinux.bin;

      (這是GCC交叉編譯工具,根檔案系統target。注冊TI的賬号,可以從TI的網站上下載下傳)

    4)mvl_5_0_0_demo_lsp_setuplinux_02_00_00_140.bin;

       (最新montavista linux-2.6.18核心等安裝包)

    5)dvsdk_setuplinux_2_00_00_22.bin;這個是TI 自己EVM的軟體開發包)

    6)bios_setuplinux_5_33_06.bin;

    7)xdctools_setuplinux_3_10_03.bin;

    8)ti_cgt_c6000_6.0.23_setup_linux_x86.bin

      (以上3個檔案都是從TI上下載下傳比較新的dvsdk的工具鍊)

    DSP開發工具:

    1)CCS3.3;

    2)bios_setupwin32_5_33_06.exe;

    (和LINUX裡的版本bios_setuplinux_5_33_06配對)

    補充一下,本人這裡基本上都是從TI上下載下傳比較新的安裝包,很多公司和朋友目前還都停留在linux-2.6.10和mvl_4_0_1上開發;

第二步:linux環境搭建

    有關如何搭建,本人已在之前發表一篇《RedHat Enterprise Linux Server 5 在VMware Workstation 6.5的安裝》裡有詳細介紹,一定要選擇安裝圖形界面的,這裡不重複。配置好samba後,把從TI上下載下傳的安裝包COPY到一個temp的目錄裡;

第三步:ARM編譯環境搭建

    上一步搞定後,以ROOT身份進入linux環境。

    1) 搭建montavista linux環境

    按以下指令安裝GCC(arm_v5t_le)交叉編譯工具,安裝過程按照提示操作,運作時會提示安裝目錄的選擇,建議/opt/mv_pro_5.0.0;

    host $ ./mvl_5_0_0801921_demo_sys_setuplinux.bin

    host $ ./mvl_5_0_0_demo_lsp_setuplinux_02_00_00_140.bin

執行上面的指令後,會在/opt/mv_pro_5.0.0/目錄下生成mvltools5_0_#######.tar.gz和DaVinciLSP_#_#_#_#.tar.gz的檔案,“#”表示版本。mvltools5_0_##包括GCC交叉編譯環境和根檔案系統(target),DaVinciLSP_##裡包含montavista linux-2.6.18的核心源代碼。用以下指令把它們解壓到目前目錄:

       host $ tar zxf mvltools5_0_#######.tar.gz

       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:

    其實以上的環境變量的設計也可以在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光牒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身份處理也行。

順便曬曬我們公司的開發闆,如果哪位朋友有需要可以聯系本人QQ-601712635,電話;13560768971。公司主要開發TI DM644X,DM6437産品,圖像處理,視訊分析,單目雙目圖像算法,機器視覺OPEN CV移植。

闆子分核心闆(CORE)和主機闆

<a target="_blank" href="http://blog.51cto.com/attachment/201009/111246424.jpg"></a>

 核心闆硬體資源介紹:

<b>序号</b><b></b>

<b></b>

<b>核心闆資源</b><b></b>

<b>描述</b><b></b>

1

TMS320DM6446AZWT

可選(TMS320DM6441AZWT)

ARM926EJS-300MHz,DSP(C64+)-600MHz

2

DDR667或DDR800

256M-byte(可配置162MHz和202.5MHz)

3

NAND FLASH

1.8V,128M-byte,2K-page

4

複位晶片

提供穩定複位功能

5

硬體加密晶片

支援MAX-DALLAS-DS28E01-100(可選)

6

全部的IO引出插座

電源,USB2.0,VPFE,VPBE,PWM,EMAC(帶MDIO),I2C,ASP(音頻接口),SPI,UART0,UART1,JTAG,BOOT MODE,GPIO,SD卡接口

核心闆低功耗晶片合理布局,使其具有最佳的電氣性能和抗幹擾性能。絕大部分的接口信号都引出到母座PIN上,完整的接口說明和提供對應的底闆公座PCB封裝,電源設計電路,讓客戶随心所欲的設計自己的底闆,容易衍生系列産品,降低硬體設計風險,更快推進項目進度。

<b>主機闆卡硬體資源包括:</b>

◆闆載4路模拟視訊輸入,支援PAL\NTSC制CCD攝像頭輸入;

◆闆載1路CMOS影像傳感器連接配接,比如美光MT9M112模組(可選);

◆闆載1路CVBS視訊輸出接口;

◆闆載1路10/100M自适應以太網口;

◆闆載USB2.0 HOST接口(可接國内3家3G子產品);

◆闆載SD卡座,支援2G(SDHC 32G軟體可選);

◆闆載1路RS232(預設UART2);

◆闆載1路RS485(預設UART1,可選配置成GPRS+SIM卡接口);

◆闆載 實時時鐘PCF8563;

◆闆載 I2C加密晶片(可選);

◆闆載1路光耦輸出;

◆闆載1路光耦輸入;

◆闆載4個獨立GPIO引腳座子;

◆闆載DSP-JTAG仿真器接口、BOOTMODE選擇跳線、UART0 DEBUG;

◆闆載2個可控LED;

◆闆載1個按鍵;

◆闆載1路音頻輸入(2路輸入可選);

◆闆載1路音頻輸出(2路輸出可選);

◆供電要求:DC 12V 供電。

◆主機闆功耗:&lt;5W

◆尺寸:158mm * 129mm

◆工作溫度:商業級(0~70°)

◆相對濕度:5%到95%,非凝結

<b>軟體資源工具介紹</b><b></b>

◆ Davinci整套LINUX開發開發環境(含VM虛拟機檔案,RedHat EL5,GCC交叉編譯工具鍊和DVSDK_2_00_00_22,我們全部幫客戶設定好);

◆ 源碼包TI ubl(經過移植修改);

◆ 源碼包TI u-boot-2009.03(經過移植修改,支援jffs2);

◆ 源碼包linux-2.6.18_pro5.0.0 (經過移植修改):

* 序列槽uart1、uart2驅動;

* 視訊tvp5158 單路D1采集驅動(4路切換驅動,4CIF采集可選);

* 複合視訊輸出驅動;

* 檔案系統jffs2、squasfs3.4;

* rtc8563驅動;

* 音頻tlv320aic3x驅動,支援MIC和LINE輸入;

* gpio驅動;

* SD卡驅動(預設2G,可選SDHC 32G);

* USB2.0 HOST驅動(完全支援國内3加3G子產品);

* CMOS設計美光MT9M112模組驅動(可選);

* PHY網口驅動;

* I2C加密晶片驅動(可選);

◆ 根檔案系統:TI源 target和本工作室裁減的rootfs;

◆ dvsdk_2_00_00_22 整個開發環境(全部配置好,客戶可以友善設計CODEC);

◆ Decode(h.264、mpeg4、g711)(音視訊解碼);

◆ Encode(h.264、mpeg4、g711)(音視訊編碼);

◆ Encodedecode(h.264、mpeg4)(視訊編解碼);

◆ jpegenc(jpeg編碼);

◆ jpegdec(jpeg解碼);

◆ thttp-2.25b(WEB網絡服務);

◆ V4L2視訊輸入輸出源碼;

◆ Audio loopback源碼;

◆ rtc8563 應用程式源碼;

◆ gpio應用程式源碼;

◆ UART1-rs485應用程式源碼;

◆ UART2-rs232應用程式源碼;

◆ TI的DSP開發環境CCS V3.3;

◆生産燒寫ubl和uboot工具;

(注:該工具可以直接友善燒寫ubl和運作uboot,根本不用昂貴的仿真器燒寫ubl,并可以通過序列槽動态下載下傳uboot進行軟體調試!)

◆ VMware-workstation-6.5.2.exe;

◆ TI dvsdk_2_00_00_22相關軟體安裝包。

本文轉自 zjb_integrated 51CTO部落格,原文連結:http://blog.51cto.com/zjbintsystem/273687,如需轉載請自行聯系原作者

繼續閱讀