TI 
Davinci DM6446开发攻略——开发环境搭建  
		
		版权声明:原创作品,允许转载,转载时请务
必以超链接形式标明文章 原始出处 
、作者信息和本声明。否则将追究法律责任。http://zjbintsystem.blog.51cto.com/964211/273687  | |||||||||||||||||||||
        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: 
/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身份处理也行。 
顺便晒晒我们公司的开发板,如果哪位朋友有需要可以联系本人QQ-601712635,电
话;13560758971。公司主要开发TI DM644X,DM6437产品,图像处理,视频分析,单目双目图像算法,机器视觉OPEN CV移植。 
板子分核心板(CORE)和主板 
核心板硬件资源介绍: 
 核心板采用8层PCB板高精度工艺,低功耗芯片合理布局,使其具有最佳的电气性能和抗干扰性能。绝大部分的接口信号都引出到母
座PIN上,完整的接口说明和提供对应的底板公座PCB封
装,电源设计电路,让客户随心所欲的设计自己的底板,容易衍生系列产品,降低硬件设计风险,更快推进项目进度。 
主板卡硬件资源包括: 
◆板载1路16位CCD视频输入接口,可以方便与CMOS影像传感器连接,支持YUV4:2:2、BT656等格式; 
◆板载支持4路模拟视频输入; 
◆板载1路CVBS视频输出接口; 
◆板载一路10/100M自适应以太网口; 
◆板载USB2.0高速HUB接
口,可同时接2个设备; 
◆板载SD卡座,支持大容量外部存储; 
◆板载实时时钟(PCF8563); 
◆板载2路继电器输出GPIO接
口; 
◆板载2路光耦输出GPIO接口; 
◆板载2路光耦输入GPIO接口; 
◆板载1路RS232串口; 
◆板载1路RS485串口; 
◆板载JTAG仿真器接口及BOOTMODE 选
择跳线; 
◆板载状态指示LED 
◆板载单个按键 
◆板载4路音频输入,1路立体声音频输出 
◆全面支持linux-2.6.18 操作系统,并可搭建完整的图形界面(GUI)开发环境; 
◆供电要求:单DC 12V 供电。 ![]() 本文出自 “集成系统-人生观” 博客,请务必保留此出处http://zjbintsystem.blog.51cto.com/964211/273687 本 文出自 51CTO.COM技术博客 | 
    