第一节、 技术开发环境中的社会环境
这篇文章迟迟没有写出来奉献给一些爱好音频视频开发的网友,是有很多原因的,TI在短时间内,针对高清音视频方案DM365/368,连续发布DVSDK3.0,DVSDK4.00,DVSDK4.01和DVSDK4.02,这点让我们很不适应。虽然我们的DM365/368核心板早已经出来,但是需要做开发板,并调试开发板,还有就是帮三个客户批量生产DM6446产品和产品维护的原因,这是主要原因。但还有三个严重影响士气的原因,让本人管理公司倍感压力,就是这个夏天不好过,全国处处都流行市区里看海,严重影响公司员工的工作专注性,这是其一;全国各地人民近一年连续性和惯性地“喜迎物价上涨”,这个严重影响员工的积极性,更让我们物料采购和生产压力逐步加大,这是其二;其三就是我们血液流淌的民族良心、热心和爱心被无情欺骗、玩弄、践踏,而且这些事情还要继续掩盖和描黑下去,我想大家都知道的。压力很大,再大也要坚持下去;再忙,也还得坚持把博客写好。话说得好:从来没有救世主,全靠我们自己。这句话一点也不言重,以后会明白的。 针对技术开发环境,我们分六部分进行描述: DM365/368介绍; 下载相关软件包; Ubuntu 10.04 LTS环境搭建; Ubuntu网络环境静态IP的设置和SMABA的设置; 交叉编译环境搭建; DVSDK4_02_00_06软件开发包的安装; 第二节、 DM365/368介绍 回归正题,我们先看看TI网站对DM365/368的介绍:http://focus.ti.com.cn/cn/paramsearch/docs/parametricsearch.tsp?family=dsp§ionId=2&tabId=2114&familyId=1446¶mCriteria=no;这里本人就不��嗦了,DM365/368就是两款高清720p/1080p的芯片方案,单核ARM926EJS+视频子处理器,H264、MPEG4、MPEG2、MJPEG、JPEG,音频的ACC、G711编码解码都是硬件实现的,无需软件运算,编码解码速度极快。但DM36X里边没有DSP,不能拿来做智能视频算法和机器视觉算法,DM36X方案适合做IP-CAMERA、高清DVR、无线IP-CAMERA、智能家居低成本产品,等等。市场上还有一个非常流行更经济的*智源和华为海思嵌入式高清IP-CAMERA、DVR方案(注,本人是中立嵌入式爱好者),但DM36X可扩展的功能比华为海思嵌入式芯片Hi系列强,,压缩率比海思和*智源高,华为海思嵌入式芯片Hi更专注DVR方面的产品设计。这些SoC都是面对低端市场,讲究量的出货,做不了高端产品,只有带DSP的芯片才能做中高端产品。像本公司的DM6446、DM6437,和以后的DM8168等。TI最开始发布的DM36X开发包是dvsdk_dm365_setuplinux_2_10_01_18,这个版本还有很多公司在用,这个是基于linux-2.6.18内核上开发的,TI觉得Montavista做的linux驱动太烂,决定自己搞,所以发布很多linux的版本,现在最新发布的版本是linux-2.6.37。上篇写到《RHEL6.0的开发环境》,主要针对去年发布的DVSDK3.0开发包的,DVSDK3.0里边包含DM36X和DM6467T三个高清方案芯片的开发包,内核基于linux-2.6.32,但是TI在今年连续发布DVSDK4.00,DVSDK4.01和DVSDK4.02,内核均是linux-2.6.32,同时把DM365和DM368分开了,说明在软件上DM365(720P)和DM368(1080P)区别还是比较大的,两个芯片在硬件管脚完全兼容,就是主频率(DM365最高297MHz,DM368为432MHz)和视频子处理系统不一样,DM368还包含“智能成像应用的脸部识别”,所以我们决定开发DVSDK4.02。因为全世界很多流行的软件都基于linux-2.6.32,比如RHEL6.0,Ubuntu 10.04,众多开发板公司,等稳定版本,加上现在比较流行的Android(安卓)系统,要求linux的版本最好是linux-2.6.32以上。要开发DVSDK4.02或者(DVSDK4.00,DVSDK4.01),TI要求必须在Ubuntu 10.04 LTS 32-bit系统上开发,不能在RHEL6.0上开发,这个和DVSD3.0有区别的。 第三节、 下载相关软件包 1、下载Ubuntu 10.04 LTS 32-bithttp://www.ubuntu.com/download/ubuntu/download下载得到ubuntu-10.04.2-desktop-i386.iso,而且版本一定是ubuntu-10.04,不要下载更高级的版本。和RHEL6.0不一样,这个是完全免费和无版权纠缠问题的linux系统,而且这个和debian系统一样,非常好用,非常方便更新软件包,安装后,文件总体大小也小多了。2、下载ARM交叉编译工具Code Sourcery ARM GCC Tool Chain http://www.codesourcery.com/sgpp/lite/arm/portal/release858“Sourcery G++ Lite 2009q1-203 for ARM GNU/Linux”,比较流行和高效的ARM交叉编译工具,选择下载IA32 GNU/Linux Installer;3、下载DVSDK_4_02包:分DM365和DM368,http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/dvsdk/DVSDK_4_00/latest/index_FDS.htmlTI在DVSDK_4_0上做得比较好,把所有的开发软件全部打包好了(本人喜欢死了)包括UBL、U-BOOT-2010.12,LINUX-2.6.32.17,DRIVER,EXAMPLE,FILESYSTEM;先下载TMS320DM365_EVM_Quick_Start_Guide.pdf 和TMS320DM368_EVM_Quick_Start_Guide.pdf下载:dvsdk_dm365-evm_4_02_00_06_setuplinux选择“另存为”,并加.bin后缀,否则你下载的是txt格式的文件;下载:dvsdk_dm368-evm_4_02_00_06_setuplinux选择“另存为”,并加.bin后缀;下载完上面的开发包和文件后,先看看TMS320DM365_EVM_Quick_Start_Guide.pdf或者TMS320DM368_EVM_Quick_Start_Guide.pdf。第四节、 Ubuntu 10.04 LTS环境搭建
和RHEL6.0的安装一样,我们选择虚拟机软件VM7.1,我们以按图说话,一步一步安装下去,熟悉这方面的朋友可以跳过本节的描述,当然给本人指出错误挑毛病更让本人喜欢。不熟悉的朋友可以先先看看《DAVINCI DM36X开发攻略——RHEL6在VM7.1的安装》。首先VM7.1已经安装后,并且VM7.1和WINDOWS的网络共享设置按照下图:要在自己电脑上找到一个有至少有20G的空余的空间,确保自己的PC有2G的内存以上,WINDOWS自己占用1G,分配给虚拟机的内存是1G以上,这样在Ubuntu里编译和开发就非常有效率。
VM-LINUX 图-1选择Ubuntu,“Next”下去;
VM-LINUX 图-2
VM-LINUX 图-3
在图-3里,也有人选择使用“Use NAT”,但是我们用第一种的方式也可以在Ubuntu系统里上网。 VM-LINUX 图-4 选择虚拟机I/O类型,VM-LINUX 图-5
由于第一次在你的PC安装Ubuntu,我们选择第一个选项,产生一个新虚拟硬盘,VM把整个linux host的系统保存到一个文件(新虚拟硬盘)里,非常安全和容易备份保存,这也是本人喜欢VM的原因。
VM-LINUX 图-6
VM-LINUX 图-6里,选择虚拟硬盘的类型,我们建议使用IDE,有时选择“SCSI”会使后面的安装出问题,本人没时间去研究这个问题,所以直接用IDE。VM-LINUX 图-7
分配给Ubuntu host系统的虚拟硬盘空间是20G,够用了,因为后面安装完交叉编译工具、相关Ubuntu升级包、DVSDK4.02等软件包后,才7.x 多G的文件,够开发用了,这个虚拟硬盘会随开发安装更多的软件包变得越来越大。
VM-LINUX 图-8
VM-LINUX 图-9
图-8和图-9就是通过镜像方式安装Ubuntu,在虚拟机的光驱里,按图-9的选项找到你下载的ubuntu-10.04.2-desktop-i386.iso,然后点击确定后,在虚拟机的界面的左边,启动刚才配置的虚拟机。这样就开始Ubuntu安装了。 U-install 图-10 这里选择Ubuntu host系统的语言,一般是英语,也可以使用简体中文。 U-install 图-11 选择Asia重庆的时区或上海的时区。 U-install 图-12 Ubuntu系统采用美国键盘,你可以在空框里测试你的键盘。继续“Forward”,U-install 图-13
这一步开始对虚拟硬盘就行格式化(就是*.vmdk文件),这个不会影响的WINDOWS下的硬盘,所以说VM安装LINUX HOST很安全。 U-install 图-14 图-14这一步就是要设置好Ubuntu的普通用户账号和密码,还有虚拟计算机的名字,我们使用简单的密码,会提示“strength fair”,没关系。U-install 图-15
配置到图-15这里,我们就可以安装Ubuntu了,这个安装需要比较长一点的时,可以去忙其他事情。U-install 图-18
这一步是安装VM TOOL,这个工具非常有用,安装了VM TOOL就可以使鼠标在两个操作系统下*切换,两个操作系统下共享目录,可以调整虚拟机的窗口大小,等等,所以我们建议安装,见图-18,直接点击“Install Vmare Tools”,这时VM系统自动会mount 虚拟机VM 里自带的ISO文件到光驱里,见下图-19.U-install 图-19
U-install 图-20
进入linux光驱可以看到里边的内容。但这个是压缩软件包,不能直接安装。我们开始到命令模式下,通过指令操作。 U-install 图-21 图-21里,我们使用“cd /media/Vmware\ Tools/”进入光驱里,先把VmwareTools-xxxxx.tar.gz给解压到 /tmp的目录里 如果在root模式,直接tar zxf VmwareTools-8.4.5-324285.tar.gz –C /tmp,如果在普通用户的模式,使用sudo tar zxf VmwareTools-8.4.5-324285.tar.gz –C /tmp,解压结束后,我们到/tmp/vmware-tools-distrib目录下使用./vmware-install.pl,直接回车安装, U-install 图-22一直拍“回车”键安装下去,直到安装结束。
U-install 图-23
安装VM TOOL结束后,在虚拟机的菜单里,开始设置和WINDOWS共享的文件夹,见图-23,因为GCC交叉安装包和DVSDK4.02的安装包很大,没必要通过SAMBA方式 COPY到LINUX里去,使虚拟机的空间越变越大。U-install 图-24
在Settings->”Options”里,对“Shared Folders”进行“Always enabled”,同时在WINDOWS下的先生成一个共享的文件夹,比如本人的是G盘下,直接生产“Ubuntu10”的文件夹,并设置成共享模式,见图-25。然后在图-24的“Add”处添加刚才的Ubuntu10的共享文件夹,见图-26。U-install 图-25
U-install 图-26
U-install 图-27
最后选择图-27的“Enable this share”,点击finish,这样Ubuntu和windows就可以共享文件夹了,这样系统会自动mount这个共享文件夹到/mnt/hgfs/的目录下。COPY你下载的arm-2009q1-203-arm-none-linux-gnueabi.bin和dvsdk_dm365-evm_4_02_00_06_setuplinux.bin或者dvsdk_dm368-evm_4_02_00_06_setuplinux.bin到这个WINDOWS下的Ubuntu10文件夹里,然后在linux里边,使用以下命令,看看在LINUX里是否看到你COPY过来的文件: #cd /mnt/hgfs/Ubuntu10/ #ls 这时应该可以看到刚才COPY的两个大文件。 到这里Ubuntu的环境基本搭建好,还有NFS, TFTP, SAMBA等,NFS和TFTP在后面安装好DVSDK4.02后,再告诉大家如何设置。 第五节、 Ubuntu网络环境静态IP的设置和SMABA的设置 由于Ubuntu的默认安装状态的IP是DHCP,而我们TFTP SERVER, NFS SERVER, SAMBA SERVER这些网络环境都要求是固定的静态IP模式,所以我们先设置静态IP,编辑/etc/network/interfaces的文件, #gedit /etc/network/interfaces 在auto lo iface lo inet loopback 的后面加上: auto eth0 iface eth0 inet static address 192.168.1.252 netmask 255.255.255.0 gateway 192.168.1.1 broadcast 192.168.1.255 然后保存退出,重启networking: #/etc/init.d/networking restart 而有些网友指出改成静态IP上不了网,这时就需要设置DNS,这个就不提示了,网上有很多介绍,本人没发觉apt-get install xxxx过不去,所以本人的静态IP还是可以连上网的。本人还发觉有个BUG,每天打开Ubuntu如果不做/etc/init.d/networking restart的话,发觉还是使用DHCP,做了/etc/init.d/networking restart后,就变成静态IP,这个BUG一直没查到什么原因,这个和RHEL6.0的不一样,不知是否有Ubuntu高手指点一下。本人还有个小建议:为了上网方便,建议DHCP,调试开发的时候,直接使用: ifconfig eth0 192.168.1.252,临时去指定IP就可以做相应的开发。 搞定静态IP和DNS,可以设置SAMBA了,使用以下命令: #apt-get install samba #apt-get install smbfs #apt-get install samba-cmmon-bin#apt-get install system-config-samba系统自动从 Ubuntu的官方镜像网站下载稳定的最新的软件包版本,大家可以通过#gedit /etc/apt/sources.list命令看看这些链接的地址。 安装samba结束后,先使用 #touch /etc/samba/smbpasswd #smbpasswd -a davinci (davinci普通用户) 输入samba访问密码两次。 然后编辑gedit /etc/samba/smb.conf的配置文件,在smb.conf最后增加下面一段内容: [smb_share] ;comment = Shared Folder with username and password path = /home/davinci public = yes writable = yes valid users = davinci create mask = 0700 directory mask = 0700 force user = nobody force group = nogroup available = yes browseable = yes 保存退出。 重启samba,/etc/init.d/smbd restart 这个和以前的(/etc/init.d/samba restart)不一样了。 使samba生效。 最后使用: # ufw disable 把防火墙给关闭掉,这样在WINDOWS下就可以使用\\192.168.1.252 登录samba共享目录了。 第六节、 交叉编译环境搭建 Ubuntu网络环境搞定,我们可以着手安装GCC交叉编译环境,先使用: #ln -sf /bin/bash /bin/sh 否则无法运行./arm-2009q1-203-arm-none-linux-gnueabi.bin的操作。网友指出是dash搞的鬼。 进到我们的VM TOOL共享目录: #cd /mnt/hgfs/Ubuntu10 #chmod +x ./arm-2009q1-203-arm-none-linux-gnueabi.bin #./arm-2009q1-203-arm-none-linux-gnueabi.bin 这时,会出现Sourcery G++的安装界面,U-install 图-28
“Next”下去,
U-install 图-29
开始安装人家的东西, U-install 图-30 这里建议使用Typical, U-install 图-31 图-31开始选择安装目录,这个比较讲究,不要乱安装,因为后面安装DVSDK4.02会涉及这个目录。 U-install 图-32 在/opt的目录下,生产arm-2009q1-203的文件夹,见图-32,把Sourcery G++ Lite for ARM安装在这里, U-install 图-33继续下去,
U-install 图-34
图-34把刚才设置的路径生效,
U-install 图-35
图-35开始安装LINK环境(Sourcery G++的链接环境等)的路径, U-install 图-36 我们保存到/opt/arm-2009q1-203/CodeSourcery下, U-install 图-37 点击图-37的install按键,开始安装交叉编译工具,这个也需要一点时间。U-install 图-38
U-install 图-39 安装包结束后,事情还没结束,开始设置root超级用户的交叉编译环境变量, U-install 图-40 使用以下命令,编辑/root下的.bashrc文件,注意前面有个小“.”: #cd /root #gedit .bashrc U-install 图-41 最后面加上:export PATH=$PATH:/opt/arm-2009q1-203/bin:,或者PATH=”/opt/arm-2009q1-203/bin:$PATH”,建议选择前者,并保存退出。 使用#source .bashrc生效,或重新退出Ubuntu的root,然后再登录root。 这样整个Sourcery G++ Lite for ARM全部搞定,这个交叉编译环境适合DM365/DM368,DM6446,DM6467,S3C2410,S3C2440,6410等ARM芯片,使用非常广泛,非常好用。 第七节、 DVSDK4_02_00_06软件开发包的安装 安装dvsdk_dm365-evm_4_02_00_06_setuplinux.bin或者dvsdk_dm368-evm_4_02_00_06_setuplinux.bin之前,一定要做: #apt-get install fakeroot dvsdk 图-42 否则会出现图=43的BUG。 dvsdk 图-43 安装fakeroot结束后, #chmod a+x dvsdk_dm365-evm_4_02_00_06_setuplinux.bin #./dvsdk_dm365-evm_4_02_00_06_setuplinux.bin dvsdk 图-44 出现图-44的安装界面,点击“Next”, dvsdk 图-45 提示你定位你的GCC交叉编译工具的路径,我们按图-45选择“/opt/arm-2009q1-203/bin”, dvsdk 图-45 如果你的GCC交叉编译工具安装成功,安装过程会提示你的交叉编译工具是正确的, dvsdk 图-46 然后开始选择安装DVSDK软件包的路径,我们建议(缩小当前安装过程,再打开另一个新的Terminal)在/home/davinci/目录下,生成: #mkdir –p dm365/dvsdk_dm365_4_02_00_06 或 #mkdir -p dm368/dvsdk_dm368_4_02_00_06 dvsdk 图-47 或者按图-47直接在安装过程中生成文件夹的方式都可以。 把dvsdk_dm365-evm_4_02_00_06_setuplinux.bin装到dvsdk_dm365_4_02_00_06,或者把dvsdk_dm368-evm_4_02_00_06_setuplinux.bin装到dvsdk_dm368_4_02_00_06里,看你开发的是DM365还是DM368,其实这个dvsdk_dm365_4_02_00_06文件夹可以命名再短点,没有规定。 dvsdk 图-48 “Next”下去,本文出自 “集成系统-踏上文明的征程” 博客,请务必保留此出处http://zjbintsystem.blog.51cto.com/964211/621435