1.1 什么是VELT
VELT的全称是Visual EmbedLinuxTools。它是一个与visual gdb相似的visual studio插件,用以辅助完毕Linux开发。利用这个插件。将能够在visual studio的IDE中进行Linux应用程序的开发(包括编译和调试)。也能够进行uboot和linux内核的编译,并依据编译时的错误信息正确定位到源代码。
眼下的版本号是0.1.4,仅支持vs2013。此插件能够在CSDN下载频道下载(http://download.csdn.net/detail/lights_joy/8429771)。
以下是它的基本功能:
支持x86 Linux,海思hi3516/hi3520,MinGW这几个平台,提供这几个平台的项目模板。
完毕UBOOT的编译,并依据编译的错误信息自己主动定位到对应的文件位置。
完毕LINUX内核的编译,并依据编译的错误信息自己主动定位到对应的文件位置。
在VS下完毕Linux内核的配置。
不使用Makefile进行Linux应用程序的编译。
使用Makefile进行Linux应用程序的开发。
使用SSH连接目标机器并用gdb进行应用程序的调试。
使用Telnet连接目标机器并用gdb进行应用程序的调试。
在VS中集成Linux终端(Poderosa)。支持SSH/Telnet/Com,在打开终端时自己主动将VS的变量导出为bash里的变量。如ProjectDir等。
1.2 VELT的基本原理
VELT本身并不包括不论什么编译工具,它所做的工作仅仅是把VS2013这个前端和不同的GNU编译器连接起来而已,真正的编译与调试仍然由交叉编译工具完毕!
在进行代码编译的时候,VELT採用的是远程编译的方法,当VS进行编译操作的时候,VELT使用SSH登录到Linux主机系统中进行编译,再分析编译过程中产生的信息,将之转换为vs能够识别的信息,这样VS就能够在IDE中正确定位发生错误的文件!
VELT依赖于Linux的samba或者虚拟机的共享文件夹功能来实现项目文件的共享,不支持用scp将文件上传到Linux后进行编译。
在调试这一块。VELT眼下仅能支持Linux下console应用程序的调试,且仅仅能使用gdb,不支持gdbserver,其调试引擎的结构为:
如上图所看到的,VELT在WINDOWS端执行了两个辅助程序。一个是RemoteConsole,这个程序的主要作用是显示远端程序的输出,并接受用户输入传送给远端。还有一个是python解释器,这个解释器用于完毕SSH/TELNET/COM连接,并负责调用远端Linux上的gdb。这两个应用程序仅当启动调试的时候才执行,寻常并不使用它。
当启动项目调试时,VC调试引擎将载入RemoteConsole.exe。因为这是一个WINDOWS的本地程序。所以VS能够正常载入。
当VC引擎启动时,VELT扩展将接收到此事件,并调用自己的调试引擎,在这个调试引擎中。它将通过网络连接RemoteConsole,以控制GDB的执行并接收gdb的事件。将之反映到IDE中。
1.3 开发环境
以下是一个典型的嵌入式开发环境配置:
主机开发环境:
系统:WIN8 64位
开发工具:vs2013 + velt-0.1.4
虚拟机:Vmware workstation-11.0。
编译主机开发环境:
虚拟机的系统用于交叉编译和嵌入式开发中各种服务的提供。
操作系统:RHEL-6.3。此虚拟机仅用于开发,不考虑其安全性的配置。
开发工具:gcc、不同平台下的交叉编译工具链。
系统服务:开启tftp、samba、ftp、ssh
目标机:想使用的平台,如海思、TI、ADI等平台。或者虚拟机的Linux。
连接方式:telnet / ssh / com
调试方式:gdb / gdbserver
1.4 文件夹共享
首先将windows文件夹通过vmware的共享文件夹功能共享给Linux,如f:work,在Linux下看到的文件夹就是/mnt/hgfs/share/work。
其次将Linux下的文件夹通过samba服务共享给windows,如/work,映射到windows下的z:,这里须要注意的是samba的帐号和我们后面用SSH登录的帐号应当一致。避免因为权限问题造成不必要的干扰。
当进行uboot和linux内核的开发时,代码仅仅能放在linux的虚拟硬盘中,而不能放在windows系统中,因为它们须要使用符号链接。也须要区分大写和小写。
而在进行普通应用程序开发时,假设没有使用符号链接,仅仅须要将代码放在windows文件夹下。这样能够加快vs的代码分析速度。
1.5 Sdf文件位置
因为VS2013浏览信息放在SDF文件里,而项目文件可能放在虚拟机的共享文件夹中,因此须要更改SDF文件的路径,务必保证它位于windows直接管理的硬盘上。否则在编译大项目时将导致执行速度缓慢。
1.6 VELT安装
以下開始安装VELT插件:
1、解开VELT的压缩包,放到某个文件夹下。如我的文件夹是:
F:projectssrcgdb2012EmbedLinux
此文件夹应当避免空格与中文文件名称!
2、在环境变量中加入一个叫EMBEDLINUX_ROOT的环境变量:
注意路径结尾的反斜杠。
3、安装release文件夹下的EmbedLinux.Installer-0.1.4.vsix:
安装完毕后应当能够在vs的帮助信息中看到这个插件:
也能够在工具->扩展和更新中看到:
4、将msbuildPlatforms文件夹下的全部文件拷贝到:
C:Program Files (x86)MSBuildMicrosoft.Cppv4.0V120Platforms
5、打开VS的新建项目窗体。能够看到新加入的三个平台:
至此安装完毕!