用vs2013+velt-0.1.4进行嵌入式开发 进行海思平台 UBOOT 开发

简介: <h2><a target="_blank" name="t0"></a><a target="_blank" name="_Toc409992303">1.1    什么是VELT</a></h2><p><br></p><p>VELT的全称是Visual EmbedLinuxTools,它是一个与visual gdb类似的visual studio插件,用以辅助完成Linux开发。利

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的新建项目窗口,可以看到新添加的三个平台:



至此安装完成!



相关实践学习
阿里云图数据库GDB入门与应用
图数据库(Graph Database,简称GDB)是一种支持Property Graph图模型、用于处理高度连接数据查询与存储的实时、可靠的在线数据库服务。它支持Apache TinkerPop Gremlin查询语言,可以帮您快速构建基于高度连接的数据集的应用程序。GDB非常适合社交网络、欺诈检测、推荐引擎、实时图谱、网络/IT运营这类高度互连数据集的场景。 GDB由阿里云自主研发,具备如下优势: 标准图查询语言:支持属性图,高度兼容Gremlin图查询语言。 高度优化的自研引擎:高度优化的自研图计算层和存储层,云盘多副本保障数据超高可靠,支持ACID事务。 服务高可用:支持高可用实例,节点故障迅速转移,保障业务连续性。 易运维:提供备份恢复、自动升级、监控告警、故障切换等丰富的运维功能,大幅降低运维成本。 产品主页:https://www.aliyun.com/product/gdb
相关文章
|
8月前
|
传感器 Linux 芯片
那些只有芯片原厂才能做的驱动开发工作
那些只有芯片原厂才能做的驱动开发工作
|
10月前
|
Ubuntu 物联网 Linux
手把手移植物联网项目到arm开发板笔记(上)
手把手移植物联网项目到arm开发板笔记
205 0
|
10月前
|
Ubuntu 物联网 编译器
手把手移植物联网项目到arm开发板笔记(下)
手把手移植物联网项目到arm开发板笔记(下)
175 0
|
11月前
|
IDE 数据可视化 物联网
stm32微控制器开发者的福音
stm32微控制器开发者的福音
|
11月前
|
传感器 算法 编译器
国产MCU-CW32F030开发学习
国产MCU-CW32F030开发学习
131 0
国产MCU-CW32F030开发学习
|
12月前
|
Web App开发 人工智能 开发框架
玄铁RISC-V处理器入门与实战-无剑平台-无剑600 SoC平台
玄铁RISC-V处理器入门与实战-无剑平台
456 0
|
12月前
|
物联网 开发工具 开发者
玄铁RISC-V处理器入门与实战-平头哥RISC-V 工具链-剑池CDK开发工具
玄铁RISC-V处理器入门与实战-平头哥RISC-V 工具链
271 1
|
12月前
|
存储 安全 前端开发
|
Linux 网络安全 内存技术
海思3559平台搭建:简单烧写说明
在板子上存在uboot的前提下进行如下操作,如果板子上从未烧写过uboot,就需要使用 HiTool 工具进行烧写。HiTool 工具位置放在 Hi3559A***/01.software/pc/HiTool,使用说明请参见该目录下的《HiBurn工具使用指南》
294 0
海思3559平台搭建:简单烧写说明
|
Ubuntu Linux
嵌入式Linux开发: 龙芯2K1000使用EJTAG烧写POPM
嵌入式Linux开发: 龙芯2K1000使用EJTAG烧写POPM
524 0
嵌入式Linux开发: 龙芯2K1000使用EJTAG烧写POPM