经过两年多的爆炸性出货(针对我们这种小公司),目前稍微停顿了一下,现在难得有点时间继续写自己的博客,其实自己一直想静下心来做点东西,可惜做TI DAVINCI(ARM+DSP)这方面的人不太好招,本人这两年都一直在给大客户打杂,大批量生产,事情超级多,在《图像识别DM8127开发攻略——序》里面也提到这一点。对于这个ARM+DSP 的DM8127,我们还是从开发环境搭建开始写。
在写开发环境搭建之前,如果想知道我们为什么还要坚持做ARM+DSP方案,建议先看看本人写的《图像识别DM8127开发攻略——序》,在这里我们提到ARM+DSP(TI 通用型) 和ARM+FPGA,其实是从软件开发难度和使用角度去考虑选择的,毕竟大多数图像识别算法用C/C++都可以实现,移植到通用型DSP相对容易。以前在定点DSP C64+优化是一个大难题,现在DM8127提供浮点DSP,很多浮点运算就不要去转换成定点去运行了,DM8127的浮点运算能力达到4500M FLOPS,而且做产品的时候那些H264编解码JPEG编解码这些都不占用DSP的资源,有2个独立的HDVICP2处理。还有在实现同样复杂度的算法和应用,ARM+DSP成本相对ARM+FPGA还是有很大优势的。针对图像识别,×××2017年7月8日发布《新一代人工智能发展规划》是其中一小部分,想在图像识别领域有创新的产品,开发平台如果一开始就搞得很复杂,没一定的人力技术资本和雄厚的money,是坚持不下去的。几年前网上很多人说ARM+FPGA会全面淘汰ARM+DSP,结果市场反馈的结果,ARM+DSP生命力还是相当强大,特别是TI近两年推出浮点C66X DSP后,ARM+浮点C66XDSP性能更加强悍,很多业内人士都提到以后会是ARM+FPGA+DSP模式,是一个互补的模式,而不是对立的模式。
上面稍微啰嗦了DM8127的一些相关背景,现在进入我们的主题。关于DM8127的软件包设计,TI 委托台湾APPRO公司去开发,APPRO设计了IPNC(IP网络摄像机),这一点和TI 自己开发的DM8168/DM8148 EVM开发包有比较大区别,TI DM8168/DM8148EVM偏重多路D1 DVR这种产品模式去设计软件包,当然里面使用的ti tools大致是一样的。我们这里只介绍APPRO 设计的IPNC_RDK软件开发包,2013年从艾睿合众达买到APPRO IPNC套件后,中间软件版本从V3.0.0更新到V3.8.0版本,到今天为止,最新的是CSK V3.9.1不过这个CSK V3.9.1偏重DM385这个不带DSP的平台,这里提到一下,APPRO IPNC_RDK支持DM8127,DM385,DM388,根据软件包里面一个总的Rules.make宏定义来编译不同的平台。因为购买APPRO IPNC的时候,签订有协议,所以我们公司在APPRO V3.8.0在上面开发自己的ARM+DSP产品,没有在CSK V3.9.1上面开发。
一、 使用VMware Workstation虚拟机安装ubuntu16.04开发环境
开发IPNC_RDK软件包,首先需要搭建linux HOST端的开发环境,比如交叉编译环境啊等等都在LINUX HOST里面去完成。由于工作性质原因,本人方方面面都去做,所以比较喜欢使用WIN7+ LINUX双操作系统的工作环境,使用虚拟机VMware Workstation搭建LINUX HOST开发环境,整个LINUX HOST可以当作一个文件包打包备份,即使LINUX崩溃了也不影响WIN7的工作,崩溃了大不了从备份解压出来直接用就是了。其实以前写的DM6446,DM368,DM3730也是这种方式,只不过现在在开发新的平台,而且使用比较高版本的UBUNTU16.04,之前的UBUNTU10.04的就把它给淘汰了,所以这里还是有必要写一下UBUNTU16.04开发环境的搭建,并不是啰嗦累赘。APPRO IPNC_RDK安装手册提到你的电脑配置最低要求见下图:
本人建议CPU最低使用I5或I7,内存8G以上,硬盘1TB,毕竟现在内存条很便宜,用钱买时间在这里是行得通的。配置低了编译程序太慢,浪费时间和生命。APPRO V3.8.0手册还提到LINUX 系统使用32bit Ubuntu 10.04,CSK V3.9.1版本用户手册提到使用64bit Ubuntu 14.04。我们干脆使用目前最新的稳定版本32bitubuntu16.04 LTS,即ubuntu-16.04.3-desktop-i386.iso或者ubuntu-16.04.5-desktop-i386.iso文件(本人写这篇文章的时候,16.04.05更新上去了,对于我们来说和16.04.03功能一样)。百度一下“ubuntu16.04下载”,跑去ubuntu网站下载对应的版本。https://www.ubuntu.com/download/alternative-downloads,见下图:
然后去网上下载破解VMware-workstation-full-12.5.7或者更高级的版本,首先安装VMware-workstation虚拟机,使用破解码去注册,见下图
输入破解码完成VMware-workstation-full-12.5.7后,先不要急马上去安装ubuntu16.04,我们需要先在WIN7下面网络属性进入属性配置界面。见下图,“共享”的地方选择VMwareNetwork
Adapter VMnet1,这样后面创建ubuntu16.04虚拟机的时候,使用桥接网口模式可以让虚拟机可以访问WIN7的共享文件夹等等。
下面我们开始安装desktop-i386 平台的ubuntu16.04,本人直接用截图的方式去描述安装步骤。首先运行安装好的VM虚拟机,按下图新建虚拟机,
我们选择“自定义(高级)”去安装,因为有些地方需要更改,不要使用典型。
点击 “下一步”,往下安装,
上图先不要去添加ubuntu-16.04.3-desktop-i386.iso进去,应该选择稍后安装。
上图我们这里选择linux 和 Ubuntu,
这一步我们给创建的新虚拟机命名,方便和本人电脑其他DAVINCI芯片平台的低版本虚拟机进行区分,同时保存虚拟机到一个比较大空间的磁盘,比如我H盘分配了200G,我就把这个虚拟机放到这个剩余空间比较大的盘上保存。
这一步如果你的电脑是4G内存,建议这里分配1024MB,如果是6G或8G内存,这里建议你们分配2048MB给虚拟机用。
这里网络我们选择“桥接”方式,公司网络比较简单,使用电信的光钎和设备,进来就是一个路由器,路由器再接多路SWITCH。桥接网络模式在安装ubuntu16的时候,ubuntu16会使用DHCP方式和外网连接。
以上是选择虚拟机硬盘类型
这里创建虚拟机硬盘的时候,我们建议设置至少35G给虚拟机使用,因为IPNC_RDK软件包太大了,本人这里设置50G,是因为以后要给不同客户定制软件,需要空间备份。这里第2个红圈是把整个虚拟机当成一个WIN7下面一个文件保存,方便虚拟机备份。
上图就是整个ubuntu16.04保存在WIN7的文件名字。
上图先点击“自定义硬件”按下图配置完后才点击“完成”。
我们这里要选择光盘安装下载好的ubuntu-16.04.3-desktop-i386.iso文件。
点击“完成”后,我们开始安装ubuntu-16.04,
开始运行虚拟机的时候,如果蹦出上面的图,直接“确定”就好了,
我们选择English安装,点击“install Ubuntu”,如果不习惯英文,可以使用中文,就选选中China;
上图这里提示你是否在安装的时候,需要在线更新一些安装包,还有就是安装第3方有关图形和WIFI驱动等软件。我们直接选中,反正要不了多少时间和空间。
这里在虚拟机里分配好的磁盘进行格式化后才安装,当然这个不是要格式化对应的WIN7磁盘,比如上面提到本人安装UBUNTU16在H盘,而H盘保存有其他WIN7的文件文件夹等等很多东西,这里虚拟机格式化根本不影响本人电脑WIN7下H盘的其他东西。
时区选择上海,我们属于东8区,
Ubuntu16.04选择支持美式键盘,这是如果看不到“continue”按钮,是因为虚拟机分辨率没设置好,我们通过下面的方法去移动解决。
在安装界面的上面,右键直到出现下拉菜单,点击“Move”去移动安装界面。这样就可以看到“continue”按钮了。
上图开始要我们输入用户信息,我们先看一下后面安装好的命令行终端显示:
davinci@davinci:/home/davinci/dm8127
前面第一个davinci是对应上面的“Pick a username”,第2个“@davinci”对应的是“your computer’s name”。给用户davinci输入登录密码,本人这里设置了简单的1234567密码,哈哈俺不怕,所以会出现“Fair password”这个提示,不管它。
上图开始长时间安装unbuntu16.04了。
安装结束后,出现下图:
这里先不要急点击“Restart Now”,先按照下图去做最后再去点击“Restart Now”重启虚拟机。在虚拟机右下角
光盘的标志(这里被51CTO技术博客水印覆盖了),点击它,选择“断开连接”,或者进去“设置”,把ubuntu-16.04.3-desktop-i386.iso断开,否则重启虚拟机的时候又会进入重新安装界面或者长时间停留在启动界面,断开ubuntu-16.04.3-desktop-i386.iso后,才点击“RestartNow”重启虚拟机。
二、 对ubuntu16.04进行设置构建良好开发环境
安装好ubuntu16.04后,第一次登录是以普通用户davinci和密码1234567进去的。
刚开始进入这个全新的界面的时候,开始有点不适应,因为太长时间的开发都在ubuntu10.04这种简单界面开发。不过玩了2天后,本人就爱上这种风格,特别是桌面可以四分屏工作,总之这个左侧ubuntu Unity有点意思。在ubuntu桌面右键点击选择”Open Terminal”,就看到我们熟悉的命令行操作界面,不操作的时候会缩小到左侧的图标。我们先去调整“Displays”,调整分辨率,工作界面放大一点,这个和WIN7的操作是一样的。
在设置界面点击“Network”,unbuntu16.04默认使用DHCP模式从公司路由器拿到新的IP和DNS,这个到后面设置静态IP的时候会涉及到上网的问题。
下一步使用apt-get install安装一些有用的软件包。刚开始我们第一次在登录界面登录ubuntu的时候,是使用用户davinci 登录的,而不是root登录,所以linux命令操作的时候,都有加sudo 进行操作,而且很多脚本无法修改保存,太烦,我们喜欢使用root登录,但是ubuntu在安装好的时候是不支持root登录的,我们只好按下面的步骤去操作。
第一步:设置root登录
首先在davinci登录的情况下,使用#sudo su,然后输入普通用户davinci的密码1234567,临时切换到root权限下操作,见下图。
然后使用:
#apt-get install vim
#apt-get install ***c git
先把vim工具给装上,方便编辑脚本文件
#vim /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf
(vim编辑命令百度一下,就知道如何编辑了)
增加”greeter-show-manual-login=true”
注意以上命令都是在进入root权限下去执行的,如果在davinci普通用户下需要前面加”sudo”
然后继续做下面的命令:
使用
#passwd root
设置root登录密码2次,比如1234567;
使用#vim /root/.profile编辑
先屏蔽mesg n || true,然后再输入tty –s && mesg n|| true
保存退出,最后reboot ubuntu16.04。
登录界面选择root,并输入刚才设置的root密码
现在以root最高权限登录主界面,进入System settings
把讨厌的屏保功能关闭。
继续在settings界面对Appearance设置,选中Always displayed,这样gedit文本编辑脚本、.C、.H源文件的时候,就会现实操作菜单,否则你会发现gedit界面的菜单没了,很不好用。
第二步:设置静态IP网络
后面进行开发板调试的时候,UBUNTU LINUX HOST需要一个固定的SERVER IP,我们在UBUNTU 桌面右上角点击有线网络标志:
按上图设置静态IP,因为本人配置公司路由器的时候,公司工作电脑的IP都在192.168.1.100以下,把用不上的192.168.1.252做为linux host 的ip,相对于开发板(target)来说,这个ubuntu静态IP就是SERVER IP或HOST IP,即TFTPSERVER IP和NFS SERVER IP。这里的DNS很重要,如果不设置,ubuntu16.04静态IP是上不了网的。在DM3730的时候本人刚开始没有意识到这个问题,apt-get install那时都是在安装好ubuntu10.04 的时候使用默认DHCP模式去上网下载的,后来改成静态IP的就不成功登录外网。
第三步:安装VMware Tool
这个VMware Tool很有用,在以前的DM368-DM3730开发攻略都介绍过,这里无需累赘。
把“VMwareTools-10.1.6-5214329.tar.gz”解压到/home/Downloads或者其他临时保存文件的路径。解压出来后,去执行脚本:./vmware-install.pl
上图注意不是其他网友说的一直敲回车下去安装就OK,一开始提示的时候就得选择Y再回车,否则直接退出安装。后面的其他提示才是全部拍“回车键”往下安装,直到安装结束。
上图是VMware Tool安装结束后,我们进行文件夹共享设置,即WIN7(XP)和虚拟机里面的linux unbuntu16.04进行文件夹共享。
参照上面三个图去设置共享文件夹就OK了,设置结束,在ubuntu16 里面的命令行终端使用
#cd /mnt/hgfs/ubuntu16_s/
#ls –l
就可以看到WIN7(XP)共享的那个文件夹的东西了,这个非常有用。
第四步:安装SAMBA SERVER
先使用#ufw disable,关闭ubuntu16.04的防火墙
#apt-get install samba
#gedit/etc/samba/smb.conf
然后在上图smb.conf最后面添加
[dm8127share]
comment = Shared Folder requirepassword
path = /home/davinci/dm8127
public = yes
writable = yes
valid users = davinci
create mask = 0777
directory mask = 0777
available = yes
browseable = yes
read only = yes
保存退出。
#smbpasswd –a davinci (这个davinci是现有的普通用户)
然后设置samba用户密码,我这里也是1234567。
#smbpasswd -e davinci
#systemctl restart smbd.service nmbd.service
在WIN7(XP)下打开网络图标:输入\\192.168.1.252
这时就可以看到
双击这个共享文件夹,如果WIN7(XP)提示你输入用户名和密码,这把刚才的samba 用户名davinci 和 1234567密码输入就可以进去了。
既然有了前面提到的VMware Tool共享文件,我们这里为什么还要安装samba呢?这个samba是通过网络共享方式和WIN7(XP)或者其他电脑共享文件夹和文件的,和VMware Tool有点不一样,也就是在同一个公司,其他同事可以通过网络访问你虚拟机unbuntu里面共享的文件夹和文件,这就是samba的共享功能。VMware Tool共享文件只能是本人的电脑访问自己的虚拟机unbuntu里面共享的文件夹。安装了samba和VMware Tool, reboot虚拟机再次进入桌面的时候,使用gedit或者vim编辑脚本时,你会发现在WIN7(XP) COPY一窜命令或代码,也可以直接粘贴到虚拟机linux里gedit或者vim打开的文件上面编辑,很好用。
三、安装TFTP SERVER
tftpd-hpa是一个功能增强的TFTP服务器,
#apt install xinetd
# apt-get install tftpd-hpa
(注意:不要安装tftp-hpa客户端,否则板子无法TFTP下载BIN文件)
#mkdir /tftpboot
#chmod –R 777/tftpboot
#gedit /etc/default/tftpd-hpa
按上图添加到tftpd-hpa文件去,保存退出, reboot虚拟机。
四、安装IPNC_RDK_V3.8.0-Linux-x86-Install.bin(含交叉编译环境)
#把APPRO 的IPNC_RDK_V3.8.0-Linux-x86-Install.binCOPY到我们那个VMware Tool设置的共享文件夹ubuntu16_s下,然后在ubuntu16的命令行终端输入:
#cd /home/davinci/dm8127
#mkdir v3.8.0 (先在/home/davinci/dm8127目录下建立v3.8.0目录)
#chmod –R 777 v3.8.0
#cd /mnt/hgfs/ubuntu16_s/
#chmod +x IPNC_RDK_V3.8.0-Linux-x86-Install.bin
#./IPNC_RDK_V3.8.0-Linux-x86-Install.bin
按提示安装到/home/davinci/dm8127/v3.8.0/目录下,得到IPNC_RDK_V3.8.0.tar.gz
然后
#tar zxf IPNC_RDK_V3.8.0.tar.gz
那么就得到这些东西
编译ARM 板子的交叉编译工具就放在上图的linux-devkit里面,如何编译,到后面会重点介绍/home/davinci/dm8127/v3.8.0/Source/ipnc_rdk/目录下的两个非常重要的总Makefile和总Rules.make。
最后在ubuntu16.04里,ipnc_rdk手册强调需要做:
#apt-get install bison
#apt-get installflex
#apt-get install libacl1-dev
#apt-get install zlib1g-dev
#apt-get install liblzo2-dev
#apt-get install uuid-dev
另外还需要做:
#apt-get install libncurses* (注意*号要带上)
否则无法去编译板子的内核文件linux-2.6.37,因为ubuntu16.04.03内核版本太高级,是linux-4.10.0,有些东西要向下兼容,需要做上面的更新。
还有安装一些非常有用的工具
apt-get install unrar
apt-get install meld
文件文件夹比较工具meld超级超级超级有用!!!重要的东西强调了3遍。
五、安装NFS SERVER
APPRO ipnc_rdk安装包里面已经给了一个裁剪的可以运行在板子上面的文件系统:
/home/davinci/dm8127/v3.8.0/Source/ipnc_rdk/target/filesys
我们首先要安装NFS SERVER:
#apt-getinstall nfs-kernel-server
#gedit /etc/exports
按上图添加板子以后要挂载的NFS文件系统的目录
#/usr/sbin/exportfs –av
# /etc/init.d/nfs-kernel-server restart
按上面的方法,基本上搭建好了整个DM8127的开发环境,使用下面的命令:
#cd /home/davinci/dm8127/v3.8.0/Source/ipnc_rdk/
#make ubootall
去编译uboot,测试一下ARM交叉编译环境看看是否正常编译。
六、总结
好了,整个DM8127开发环境已经搭建好,上面的步骤难免有个别错误的地方,看到的网友如能指出这里感激不尽。相对IPNC_RDK V3.8.0开发包的开发,ubuntu16.04开发环境搭建其实比较简单,后面去开发IPNC_RDK V3.8.0才头疼,东西太多,个人能力有限,后面的博客文章也只能有时间一点一点去写,除非高薪招到这方面的牛人(搞过这方面的人确实不好招),否则要累坏人。DM8127性能还是不错的,市面上是有几个大公司拿来做车牌识别和人脸识别还有安防的IVS产品,普通视频分析产品,当然那些更复杂的算法比如人工智能深度学习算法我们没有搞过,也不清楚1秒能处理多少帧图像,DM8127是否胜任,本人也不好下定论,但是另外一款TI C66X 32级流水线浮点DSP+EVE完全可以跑深度学习算法。在这里提到一下,做一个比IPNC网络摄像机高级一点带DSP图像分析的产品,开发DM8127需要:嵌入式LINUX 驱动工程师, 嵌入式LINUX 应用工程师(网络协议,其他应用等等),DSP算法工程师,COMS SENSOR 图像处理2A算法工程师,最基本的4个职位,每个职位都需要很牛的人去搞,有些复杂的算法需要一个团队去搞,有些linux应用程序也需要一个团队去搞,底层驱动如果不断推出新的CMOS SENSOR,也得几个人去搞。总之设计一个大批量生产的产品不是1-2个人就可以搞定的,当然了硬件工程师这些还没算进去。现在发觉只有相互合作才有出路。以下是本公司做的DM8127硬件,以上的开发环境搭建都是基于本公司的DM8127硬件平台去写的。有需要深入项目讨论可以加本人QQ:2505133162
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。