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 供電。
◆主機闆功耗:<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,如需轉載請自行聯系原作者