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技术博客 |