用VS2013+VELT-0.1.4进行海思平台 Linux内核 的开发
快乐虾
http://blog.csdn.net/lights_joy/(QQ群:Visual EmbedLinux Tools 375515651)
欢迎转载,但请保留作者信息
本文仅适用于vs2013 + velt-0.1.4
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),安装过程参见《用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等。
本文讨论用它来进行海思平台的Linux内核开发。在开发前应当先在Linux下安装好海思SDK中的交叉编译器。依照VELT的要求将Linux下的/work/通过samba共享出来,在Windows下映射为Z:\。
1.2 准备内核代码并共享
解压缩海思SDK中提供的linux-2.6.35.tgz,将其解压到/work/projects/test,由于/work目录已经通过samba共享给windows,因此这个路径在windows下看起来就是Z:\projects\test\
1.3 创建内核工程
接下来在VS中新建一个Hisilicon平台的内核工程:
注意这里选择的路径Z:\projects\test,这是我们存放内核代码的根目录。
当然,这个项目也不是一定要放在这个位置,只是VELT的项目模板是这么配置的,我们为了偷懒少配置路径,也就选择了和它一样的路径。
1.4 配置编译主机的相关信息
接下来我们需要配置编译主机的信息,打开项目属性页:
这里的信息需要根据你的实际配置进行更改!
1.5 内核配置
在第一次编译之前,必须配置内核参数并保存:
不论有没有进行修改,都必须保存一次配置!!
1.6 编译内核
在进行上述配置后就可以编译了,直接按F7生成项目。
很轻松吧!
这里有一个小BUG,当编译有警告时,VELT也认为生成过程有错误!
1.7 修改编译命令
有时我们需要更改make的命令,此时可以通过项目属性中的Make页来完成:
在这里可以写上自己需要的编译命令。
VELT在登录编译主机后将执行这些bash命令。
注意这里的命令是在编译主机上执行的bash指令,而不是windows下的命令!!!
同样,重新生成和清理的命令也可以自行修改。
1.8 加快IntelliSense的分析速度
在VELT项目模板的IntelliSense配置中,已经加上了linux内核的include目录,但由于这些文件是通过SAMBA共享的,严重影响了IntelliSense的速度,因此我们将其复制到windows下,然后修改IntelliSense的包含目录,让其指向本地的文件:
这里的路径和预处理器定义都不会影响到UBOOT的编译行为,只是让VS能够正确分析我们的代码而已!
经过这个操作可以发现IntelliSense分析代码的速度明显加快!!
1.9 手工编译
有时我们需要登录编译主机进行一个手工操作,此时可以使用VELT提供的连接编译主机功能:
VELT会打开一个bash窗口:
可以看到,VELT已经将部分的变量导出为Bash的变量了,我们可以方便地使用这些变量,如:
cd $ProjectDir
就可以进入我们的项目文件所在的目录了。
而且可以使用bash的代码补全功能访问这些变量,如输入$Pr并按tab时,bash会自动将其补全为$ProjectDir。
由于已经导出了ARCH和CROSS_COMPILE,在执行make内核时就不再需要输入这两个参数了!
1.10 项目文件添加
VELT的项目模板只添加了少数几个文件做为示例,可以根据自己的需要将内核的其它文件添加进来!
1.11 错误处理
当开发过程中有语法错误时,VELT可以正确定位到错误所在的位置:
双击这个错误行就可以自动打开文件进行修改了!
用VS2013+VELT-0.1.4进行海思平台 Linux内核 的开发的更多相关文章
- 【ARM-Linux开发】用VS2013+VELT-0.1.4进行海思平台 Linux内核 的开发
1.1 什么是VELT VELT的全称是Visual EmbedLinuxTools,它是一个与visual gdb类似的visual studio插件,用以辅助完成Linux开发.利用这个插件 ...
- 用vs2013+velt-0.1.4进行嵌入式开发 进行海思平台 UBOOT 开发
1.1 什么是VELT VELT的全称是Visual EmbedLinuxTools,它是一个与visual gdb类似的visual studio插件,用以辅助完成Linux开发.利用这个插件 ...
- (转)海思平台HI35XX系列内存设置
海思平台的内存分为两部分,一部分给系统使用,另外的一部分给多媒体使用.可以通过cat /proc/meminfo查看系统内存和cat /proc/media-mem 查看多媒体内存使用情况. /pro ...
- cryptopp使用Qt mingw编译,以及海思平台交叉编译
编译工程生成,使用qmake生成qt工程文件(海思平台时,要用海思平台的qmake),将 TEMPLATE = app 修改为: TEMPLATE = lib 添加如下: win32:LIBS += ...
- 海思平台服务器版软件V15.2产品发布
深度操作系统海思平台服务器版软件是武汉深之度科技有限公司发布的针对华为海思平台的TaiShan系列服务器发布的企业级服务器操作系统软件产品,主要面向企业级服务器应用场景,为用户在国产化平台上提供更具可 ...
- OpenCV开发笔记(七十四):OpenCV3.4.1+ffmpeg3.4.8交叉编译移植到海思平台Hi35xx平台
前言 移植opencv到海思平台,opencv支持对视频进行解码,需要对应的ffmpeg支持. Ffmpeg的移植 Ffmpeg的移植请参考之前的文章:<FFmpeg开发笔记(十): ...
- libx264开发笔记(一):libx264介绍、海思平台移植编译
前言 在编译ffmpeg时,使用到h264编码时是需要依赖libx264的,本文章是将将libx264作为静态库移植到海思上. 相关博客 <Qt开发笔记之编码x264码流并封装mp4(一 ...
- 海思平台交叉编译curl支持SSL功能
1.准备工具 1).交叉编译工具 2).下载libcurl和openssl源代码,我使用的是(openssl-1.0.2o.tar,curl-7.59.0.tar) 3).查看cpu详细 ~ # ca ...
- 用VS2013+VELT进行Linux开发
快乐虾 http://blog.csdn.net/lights_joy/(QQ群:Visual EmbedLinux Tools 375515651) 欢迎转载,但请保留作者信息 1.1.1 什么是 ...
随机推荐
- [Android开发常见问题-18] Connection to https://dl-ssl.google.com refused
在使用Android SDK Manager的时候,有时候会遇到上述问题,其实原因很简单,属于本地配置的问题. 解决方法: 1.以文本文件的方式打开“C:\Windows\System32\drive ...
- Jquery 概念性内容编辑器
概念性jQuery内容编辑器,这是一款非常有特色的jQuery编辑器,该编辑器支持文字.列表.视频.引用等功能,是一款小巧简洁,富有个性化的jQuery内容编辑器插件. 代码: <!doct ...
- 利用智能手机(Android)追踪一块磁铁(三)
更新磁铁追踪算法的源代码,Android Studio项目工程 github地址:https://github.com/amazingyyc/MagnetLocate 说明:将磁铁的位置信息封装成消息 ...
- REVERSE关键字之REVERSE索引
昨天说到REVERSE关键字可以指REVERSE函数和REVERSE索引,简单介绍了下REVERSE函数的含义,今天简单整理下REVERSE索引. REVERSE索引也是一种B树索引,但它物理上将按照 ...
- BackgroundWorker用法
BackgroundWorker主要用来提供后台运算服务(防止用户前台无响应等待),并提供服务进度的类: 代码如下: BackgroundWorker bgw = new BackgroundWork ...
- 达到XML简单的动态配置
今天写的XML相关内容:随着上述眼前的小项目(等级类别)由于地图每个级别.因此,让他动态读取XML内容,这样的变化只能看到XML档. 简单的想法:第一次使用UserDefault类写入文件 UserD ...
- Javascript进阶篇——浏览器对象—History对象
History 对象history对象记录了用户曾经浏览过的页面(URL),并可以实现浏览器前进与后退相似导航的功能.窗口被打开的那一刻开始记录,每个浏览器窗口.每个标签页乃至每个框架,都有自己的hi ...
- javascript创建自定义对象和prototype
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 利用@media实现IE hack
虽然对IE深恶痛绝,却不能拒绝. 使用@media实现IE hack的方法,以记之. 仅IE6和IE7识别@media screen\9 { .selector { property: value; ...
- POJ 2135 Farm Tour (最小费用最大流模板)
题目大意: 给你一个n个农场,有m条道路,起点是1号农场,终点是n号农场,现在要求从1走到n,再从n走到1,要求不走重复路径,求最短路径长度. 算法讨论: 最小费用最大流.我们可以这样建模:既然要求不 ...