快乐虾
http://blog.csdn.net/lights_joy/(QQ群:Visual EmbedLinux Tools 375515651)
欢迎转载,但请保留作者信息
本文仅适用于vs2013 + velt-0.1.4
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),安装过程参见《用vs2013+velt-0.1.4进行嵌入式开发:插件安装》。下面是它的基本功能:
支持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等。
在海思的3516 SDK中提供了一个叫vio的sample程序,演示其SDK的使用,本文讨论在VS2013下编译并调试它。
解压缩海思SDK中提供的mpp.tgz,将其解压到/work/projects/test,由于/work目录已经通过samba共享给windows,因此这个路径在windows下看起来就是Z:\projects\test\
在VS下创建一个Makefile工程,放在mpp的同级目录下:
加入mpp目录下的所有文件。
在创建项目后,VS还无法正确找到一些头文件,因此必须修改IntelliSense配置。
将Hi3516交叉编译目录下的target/usr/include目录复制到windows下的F:\local_cache\hisilicon\hi3516\usr,打开项目属性:
在包含目录中加上本地缓存的路径和SDK头文件的包含路径。
这个路径仅仅用于VS的代码分析,不会对编译行为产生影响!
经过此操作可以发现VS代码编辑器中的红色波浪线消失了,也就是说VS已经可以正确分析代码了!
接下来修改编译主机的参数:
根据实际配置进行修改。
首先修改mpp\Makefile.param文件中的LINUX_ROOT和DRV_ROOT,让其指向内核的根目录和驱动的根目录:
exportLINUX_ROOT=/work/projects/test/linux-2.6.35
exportDRV_ROOT=/work/projects/test/drv
接下来修改源码的根目录,这里的根目录指的是mpp中Makefile文件所在的位置,我们选择sample下的vio项目进行测试,在此将相对路径指向它:
接着修改生成命令:
然后就可以在VS下正常地执行生成操作了!
在海思的SDK中提供了gdb,但它是6.8版本,而VELT是在gdb-7.x的版本上开发的,因此不使用SDK中的gdb,用VELT中带的gdb-7.8.2,这个文件位于VELT根目录下的bin\gdb-7.8.2\hi3516\target,将其下载到目标板上并改名为arm-hisiv100-linux-uclibcgnueabi-gdb,加上执行属性。这里的红色部分必须和编译主机参数中的工具链前缀一致。
接下来修改目标主机的参数:
根据实际情况配置。
接下来修改调试参数:
这里的命令就是我们要调试的程序,命令参数是传递给应用程序的参数,sample_vio需要一个数字做为参数,写0,但目前VELT还不支持此参数,因此我们将参数直接写在命令后面(这一个字符串直接传递给gdb做为启动参数)。
调试前命令是启动gdb之前要执行的命令,可以在此将编译后的应用程序下载到目标板上,如我们的项目配置为:
在VELT中带了tftpd32做为TFTP的服务程序,如果有需要可以打开它。如果采用其它的TFTP服务也可以不使用。
做完上述工作后就可以开始调试了,F5,GO~~~~~
搞定!!