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)。下面是它的基本功能:

  1. 支持x86 Linux,海思hi3516/hi3520,MinGW这几个平台,提供这几个平台的项目模板。

  2. 完成UBOOT的编译,并根据编译的错误信息自动定位到相应的文件位置。

  3. 完成LINUX内核的编译,并根据编译的错误信息自动定位到相应的文件位置。

  4. 在VS下完成Linux内核的配置。

  5. 不使用Makefile进行Linux应用程序的编译。

  6. 使用Makefile进行Linux应用程序的开发。

  7. 使用SSH连接目标机器并用gdb进行应用程序的调试。

  8. 使用Telnet连接目标机器并用gdb进行应用程序的调试。

  9. 在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:\projects\src\gdb2012\EmbedLinux

此目录应当避免空格与中文文件名!

2、在环境变量中添加一个叫EMBEDLINUX_ROOT的环境变量:

注意路径结尾的反斜杠。

3、安装release目录下的EmbedLinux.Installer-0.1.4.vsix:

安装完成后应当可以在vs的帮助信息中看到这个插件:

也可以在工具->扩展和更新中看到:

4、将msbuild\Platforms目录下的所有文件复制到:

C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\Platforms

5、打开VS的新建项目窗口,可以看到新添加的三个平台:

至此安装完成!

用vs2013+velt-0.1.4进行嵌入式开发 进行海思平台 UBOOT 开发的更多相关文章

  1. 用VS2013+VELT-0.1.4进行海思平台 Linux内核 的开发

    快乐虾 http://blog.csdn.net/lights_joy/(QQ群:Visual EmbedLinux Tools 375515651) 欢迎转载,但请保留作者信息 本文仅适用于vs20 ...

  2. 【ARM-Linux开发】用VS2013+VELT-0.1.4进行海思平台 Linux内核 的开发

    1.1    什么是VELT VELT的全称是Visual EmbedLinuxTools,它是一个与visual gdb类似的visual studio插件,用以辅助完成Linux开发.利用这个插件 ...

  3. 嵌入式开发之hi3519---i2c MDIO PHY uboot phy调试总结

    首先调试检查硬件,再调试软件 首先仔细阅读phy和主芯片datesheet ,尤其着重阅读mii寄存器,它是mac和phy交换信息的媒介. 硬件注意:关于phy的芯片需要注意的有几点:1.mdio接口 ...

  4. 用VS2013+VELT进行Linux开发

    快乐虾 http://blog.csdn.net/lights_joy/(QQ群:Visual EmbedLinux Tools 375515651) 欢迎转载,但请保留作者信息 1.1.1  什么是 ...

  5. vs2013+MVC3.0+EasyUI的ComboBox联动使用(二)

     vs2013+MVC3.0+EasyUI的ComboBox联动使用(二) 简单介绍:在vs2013(.net4.0)中使用MVC3.0对于EasyUI中ComboBox的联动使用. 载入Comb ...

  6. 嵌入式开发平台-iTOP-4418开发板

    详情转自:http://topeetboard.com S5P4418核心板可以无缝支持核心系统S5P6818,并保持底板设计不变,将兼顾更高端 的应用领域,为项目和产品提供更好的灵活性以及可伸缩性. ...

  7. 在嵌入式、海思、ARM中进行统一的音频AAC编码的必要性

    前言 最近来到深圳,跟许多做硬件的小伙伴聊安防.聊互联网.聊技术,受益颇多,其中聊到一点,大家一直都在想,互联网发展如此迅猛,为啥大部分的摄像机还是采用的传统G.726/G.711的音频编码格式呢,如 ...

  8. OpenHarmony3.0如何轻松连接华为云IoT设备接入平台?

    摘要:本文主要介绍基于OpenHarmony 3.0版本来对接华为云IoT设备接入IoTDA,以小熊派BearPi-HM_Nano开发板为例,使用huaweicloud_iot_link SDK对接华 ...

  9. win10+vs2013+cuda8.0+caffe

    1,首先说下环境和配置 配置: 环境:windows10,vs2013 community,cuda8.0,caffe,cudnn4 注意:先要安装好显卡驱动(我的显卡是1070),这里的例子只开通了 ...

随机推荐

  1. python3操作redis

    redis也被称为缓存 1.redis是一个key-value存储系统,没有ForeignKey和ManyToMany的字段. 2.在redis中创建的数据彼此之间是没有关系的,所以也被称为是非关系型 ...

  2. CentOS7 Nvidia Docker环境

    最近在搞tensorflow的一些东西,话说这东西是真的皮,搞不懂.但是环境还是磕磕碰碰的搭起来了 其实本来是没想到用docker的,但是就一台配置较好电的服务器,还要运行公司的其他环境,vmware ...

  3. BZOJ 1042: [HAOI2008]硬币购物 [容斥原理]

    1042: [HAOI2008]硬币购物 题意:4种硬币.面值分别为c1,c2,c3,c4.1000次询问每种硬币di个,凑出\(s\le 10^5\)的方案数 完全背包方案数? 询问太多了 看了题解 ...

  4. BZOJ 1119: [POI2009]SLO [置换群]

    传送门:现在$POI$上的题洛谷都有了,还要$BZOJ$干什么 和$cow\ sorting$一样,只不过问$a_i \rightarrow b_i$ 注意置换是位置而不是数值...也就是说要$i$的 ...

  5. BZOJ 1898: [Zjoi2005]Swamp 沼泽鳄鱼 [矩阵乘法]

    1898: [Zjoi2005]Swamp 沼泽鳄鱼 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 1082  Solved: 602[Submit][S ...

  6. .net下使用socket.io随笔记录

    一.问题背景 目前公司在互联网产品上需要程序与前端部分要进行一个实时交互,在进行一定程度上的选型后,决定使用socket.io框架进行一个实践,算是公司的一个新的 尝试,也算是给自己增加增长见闻,由于 ...

  7. vscode php跳转

    最近在写一个php项目,最后选定使用vscode编辑器,然后研究了一下断点调试.格式代码.点击跳转 以下是配置步骤,记录一下 1.代码格式化及跳转  1.前提条件:安装7.0以上版本php,     ...

  8. 较复杂makefile跟lds脚本程序的编写

    首先看个makefile范例: /*指明工具链,并为其取个简单的别名*/ CC = arm-linux-gcc LD = arm-linux-ld AR = arm-linux-ar OBJCOPY ...

  9. struct stat结构体简介

    在使用这个结构体和方法时,需要引入: <sys/types.h> <sys/stat.h> struct stat这个结构体是用来描述一个linux系统文件系统中的文件属性的结 ...

  10. ubuntu 双网卡建网桥脚本实现

    #!/bin/bash interface1=`ls /sys/class/net|grep en|awk 'NR==1{print}'` interface2=`ls /sys/class/net| ...