【ARM-Linux开发】用VS2013+VELT-0.1.4进行海思平台 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),安装过程参见《用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可以正确定位到错误所在的位置:
双击这个错误行就可以自动打开文件进行修改了!
【ARM-Linux开发】用VS2013+VELT-0.1.4进行海思平台 Linux内核 的开发的更多相关文章
- 用VS2013+VELT-0.1.4进行海思平台 Linux内核 的开发
快乐虾 http://blog.csdn.net/lights_joy/(QQ群:Visual EmbedLinux Tools 375515651) 欢迎转载,但请保留作者信息 本文仅适用于vs20 ...
- OpenCV开发笔记(七十四):OpenCV3.4.1+ffmpeg3.4.8交叉编译移植到海思平台Hi35xx平台
前言 移植opencv到海思平台,opencv支持对视频进行解码,需要对应的ffmpeg支持. Ffmpeg的移植 Ffmpeg的移植请参考之前的文章:<FFmpeg开发笔记(十): ...
- 用vs2013+velt-0.1.4进行嵌入式开发 进行海思平台 UBOOT 开发
1.1 什么是VELT VELT的全称是Visual EmbedLinuxTools,它是一个与visual gdb类似的visual studio插件,用以辅助完成Linux开发.利用这个插件 ...
- libx264开发笔记(一):libx264介绍、海思平台移植编译
前言 在编译ffmpeg时,使用到h264编码时是需要依赖libx264的,本文章是将将libx264作为静态库移植到海思上. 相关博客 <Qt开发笔记之编码x264码流并封装mp4(一 ...
- Hi3516开发笔记(一):海思HI3516DV300芯片介绍,入手开发板以及Demo测试
前言 目前主流国产芯片为RV11XX.RK33XX.Hi35XX系列,本系列开启Hi3516系列的开发教程. Hi3516DV300芯片介绍 Hi3516DV300为专业行Smart IP ...
- DevStore开发人员服务有奖征文:小谈新浪微博开放平台
DevStore开发人员服务有奖征文:小谈新浪微博开放平台 笔者接入新浪微博开发平台也有一段时间了,对整个平台的接入也算比較熟悉,新浪提供了统一的API接口,能够让开发人员更方便的使用API来实现自己 ...
- Java生鲜电商平台-优惠券功能设计与开发(小程序/APP)
Java生鲜电商平台-优惠券功能设计与开发(小程序/APP) 说明:Java生鲜电商平台-优惠券功能设计与开发(小程序/APP) 目录 1.项目背景与需求分析 2.需求目的与功能点列表 3.业务逻辑 ...
- 用VS2013+VELT进行Linux开发
快乐虾 http://blog.csdn.net/lights_joy/(QQ群:Visual EmbedLinux Tools 375515651) 欢迎转载,但请保留作者信息 1.1.1 什么是 ...
- Unix/Linux环境C编程新手教程(12) openSUSECCPP以及Linux内核驱动开发环境搭建
1. openSUSE是一款优秀的linux. watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaXRjYXN0Y3Bw/font/5a6L5L2T/font ...
随机推荐
- 【Java】Java环境变量配置
一.windows系统 右键你的电脑(计算机/此电脑)打开属性->高级系统设置->环境变量,在系统变量里配置三个环境变量. 假设jdk的安装路径为C:\Program Files\Java ...
- Sitemap Error : XML declaration allowed only at the start of the document解决方法
今天ytkah的客户反馈说他的xml网站地图有问题,提示Sitemap Error : XML declaration allowed only at the start of the documen ...
- js 递归 汉诺塔的例子
程序调用自身的编程技巧称为递归. //汉诺塔的游戏,n为圆盘编号数量,编号,a,b,c代表的是三个柱子 var hanio=function(n,a,b,c){ if(n>0){ ...
- POJ3616-Milking Time-(dp)
题意:牛有m个时间段可以挤奶,每个时间段的开始时间,结束时间,挤奶量不尽相同,寄完一次需要休息r时间,求在n时间内如何安排牛挤奶产量最大. 解题: 1.休息r时间,当做结束时间需要+r 2.以结束时间 ...
- 第9章 MyBatis的关系映射
在实际开发中,对数据库的操作通常涉及多张表,涉及了对象和对象之间的关联关系.针对多表之间的操作,MyBatis提供了关联映射,通过关联映射就可以很好的处理对象与对象之间的关联关系 9.1 关联关系概述 ...
- read函数和write函数
read 函数 inline int read() { ,f=; char c=getchar(); ; c=getchar();} +c-'; c=getchar();} return f*x; } ...
- 单片机模块化程序: 单片机AT指令配置模块程序模板(非阻塞版)
拷贝这两个文件到自己的工程 测试1://单片机发送AT+RST\r\n 如果单片机串口接收到OK 或者ready 执行下一条 测试视频: https://qqqqqbucket.oss-cn-bei ...
- windows下redis的配置文件(redis.windows.conf)
#redis的配置 #Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程 daemonize yes #当Redis以守护进程方式运行时,Redis默认会把pid写入 ...
- vue中computed和watch的区别,以及适用场景
computed:通过属性计算而得来的属性 1.computed内部的函数在调用时不加(). 2.computed是依赖vm中data的属性变化而变化的,也就是说,当data中的属性发生改变的时候,当 ...
- Nuxt + Vue 全家桶
引子 情由无中有,一旦有了,便万劫不复 简介 “简单却不失优雅,小巧而不乏大匠”. Vue.js 是一个JavaScriptMVVM库,是一套构建用户界面的渐进式框架.它是以数据驱动和组件化的思想构建 ...