GCC
文章平均质量分 84
嵌云阁主
参与从系统设计到硬件调试和软件编码每一过程的工作
展开
-
打造windows下的嵌入式开发工具(3):gmp-4.2.3
快乐虾http://blog.csdn.net/lights_joy/lights@hb165.com 本文适用于ADI Blackfin系列DSP优视科技BV561EVB开发板gcc-4.3.1binutils-2.18codeblocks-8.02Skyeye-1.2.5bfin-uclinux-2008r1-rc8Cygwin gcc原创 2008-09-03 15:27:00 · 3059 阅读 · 4 评论 -
Vs2012在Linux开发中的应用(11): 编译单个文件
快乐虾http://blog.csdn.net/lights_joy/欢迎转载,但请保留作者信息当按Ctrl+F7编译单个文件的时候,同样会调用ClCompile任务,但有一个很奇怪的问题:如果我们的文件配置与公共配置不一致:这个时候MSBUILD会先后再次调用ClCompile的任务,原创 2014-12-01 00:19:28 · 1556 阅读 · 0 评论 -
Vs2012在Linux开发中的应用(8): 编译Linux内核
快乐虾http://blog.csdn.net/lights_joy/欢迎转载,但请保留作者信息在有了UBOOT的编译基础之后,编译Linux内核就简单多了,所不同的只有两个地方,一个是错误信息的转换,另一个是内核需要进行参数配置。1.1 错误信息转换UBOOT的错误信息中,文件名是不带路径的,而内核的错误信息中,文件名是带相对路径的,因此我们原创 2014-11-24 22:24:10 · 2254 阅读 · 0 评论 -
Vs2012在Linux开发中的应用(9): 编译应用程序
快乐虾http://blog.csdn.net/lights_joy/欢迎转载,但请保留作者信息应用程序的开发有两种方式,一种是使用Makefile,这种方式和之前的Uboot和内核的编译类似,不再说明。另一种方式是利用MSBUILD来控制生成过程,我们重载MSBUILD生成过程中的调用的任务来完成自己的编译任务。1.1 重载任务在targets中重载BuildC原创 2014-11-25 23:03:37 · 3417 阅读 · 0 评论 -
Vs2013在Linux开发中的应用(19): 启动gdb
快乐虾http://blog.csdn.net/lights_joy/欢迎转载,但请保留作者信息1.1 加载调试引擎由于我们无法干预VC的调试引擎加载,但可以侦听VC的调试引擎加载事件,在此事件处理中可以调用自己的调试引擎: publicvoid LaunchDebugTarget(string filePath, string env) {原创 2014-12-17 21:12:49 · 1989 阅读 · 0 评论 -
Vs2013在Linux开发中的应用(31):内存块显示
快乐虾http://blog.csdn.net/lights_joy/欢迎转载,但请保留作者信息要实现内存块的显示,需要实现IDebugMemoryBytes2接口,类似这样的: class AD7MemoryBytes : IDebugMemoryBytes2 { private AD7Engine _engine; public AD7Engine原创 2015-01-07 18:29:51 · 1699 阅读 · 0 评论 -
Vs2013在Linux开发中的应用(30):程序中断
在我们在gdb中加载程序并运行时,可以按CTRL-C中断执行,此时gdb输出:^C*stopped,reason="signal-received",signal-name="SIGINT",signal-meaning="Interrupt",frame={addr="0x00110424",func="__kernel_vsyscall",args=[]},thread-id="1",stop原创 2015-01-06 22:06:03 · 1518 阅读 · 0 评论 -
Vs2012在Linux开发中的应用(12): 编译静态库
快乐虾http://blog.csdn.net/lights_joy/欢迎转载,但请保留作者信息原来以为要生成静态库只需要重载任务就可以了: Target Name="Lib" > MessageText="lib target"Importance="High" /> EmbedLinuxL原创 2014-12-01 22:27:36 · 1550 阅读 · 0 评论 -
Vs2012在Linux开发中的应用(13): 添加对x86 Linux的支持
快乐虾http://blog.csdn.net/lights_joy/欢迎转载,但请保留作者信息因为马上要进入Debugger的研究,为了方便对GDB的学习,先添加对虚拟机中的x86 linux的平台支持。按照先前的做法,很容易就看到结果了:突然发现,原来的修改注册表似乎并不是必须的!!在交叉编译器参数中直接留空:看编译结原创 2014-12-03 00:34:46 · 1720 阅读 · 0 评论 -
Vs2013在Linux开发中的应用(32):文本可视化
快乐虾http://blog.csdn.net/lights_joy/欢迎转载,但请保留作者信息VS2013提供了一个文本可视化的工具,在显示XML之类的字符串时相当方便,下面我们就让VS2013也能显示我们的字符串:首先我们需要判断表达式的返回值类型,如果是字符串的话就设置 if (_evalResult.Flags.HasFlag(EvaluationFlags.原创 2015-01-08 20:12:30 · 2047 阅读 · 0 评论 -
Vs2012在Linux开发中的应用(7): 编译UBOOT
在完成前一节所述的操作后,我们就可以尝试在VS下编译UBOOT了。我们仅仅需要改写项目中的make.py:#user code begin classCUBootMake: error=False defBuild(self,chan): self.error=False exec_command(chan,原创 2014-11-22 23:26:06 · 2117 阅读 · 0 评论 -
Vs2012在Linux开发中的应用(10): 参数转换
快乐虾http://blog.csdn.net/lights_joy/欢迎转载,但请保留作者信息下面给出从VC的工程配置到gcc参数的对应关系:1.1 常规选项卡Vs2012Gcc$(OutDir)输出目录目标文件的生成路径$(IntDir)中间目录Obj文件的存放原创 2014-11-26 23:04:55 · 1974 阅读 · 0 评论 -
Vs2012在Linux开发中的应用(6):改写Makefile项目的Build过程
MSBUILD的编译过程实际上是根据一系列的targets文件定义的,当我们在IDE执行生成、批生成、清理命令的时候,VS会查找这些命令对应的Task并执行它,下面我们逐个分析这个过程。当执行生成操作时,MSBUILD将执行一个叫”Build”的任务,在targets文件中是这样定义的: Target Name="Build" Condition=" '$(_原创 2014-11-19 23:06:34 · 3182 阅读 · 0 评论 -
打造windows下的嵌入式开发工具(7):codeblocks-8.02
快乐虾http://blog.csdn.net/lights_joy/lights@hb165.com 本文适用于ADI Blackfin系列DSP优视科技BV561EVB开发板gcc-4.3.1binutils-2.18codeblocks-8.02Skyeye-1.2.5bfin-uclinux原创 2008-09-08 18:38:00 · 3441 阅读 · 0 评论 -
codeblocks中plugin的实现
快乐虾http://blog.csdn.net/lights_joy/lights@hb165.com 本文适用于codeblocks-8.02vs2005 欢迎转载,但请保留作者信息 1.1 Plugin加载Codeblocks将plugin放在可执行文件目录下的share/CodeBlocks/plugins子目录中,全部以原创 2008-09-09 16:27:00 · 3804 阅读 · 1 评论 -
cygwin关键技术:cygheap
快乐虾http://blog.csdn.net/lights_joy/lights@hb165.com 本文适用于Cygwin checkout-2008-09-28vs2008 欢迎转载,但请保留作者信息 cygheap是cygwin中使用的一项关键技术,通过自己定义的原创 2009-09-02 21:52:00 · 2794 阅读 · 1 评论 -
让vs2008支持gdb调试
关于让VS2008支持GDB调试,有一个叫wingdb的插件可以达到目的。不过它是一个闭源的软件,而我们出于研究的目的,希望自己也能开发一个这样的插件。经过一番努力,实现了一个调试器的两项基本功能--设置断点、查看变量和栈信息,就像这样的效果: 由于gdb命令行方式的强悍,在这里保留了一个命令行窗口直接对gdb进行操作,希望能够兼顾命令行和图形界面的长处,嘿嘿~~~在开发此插原创 2010-05-25 10:00:00 · 3680 阅读 · 0 评论 -
Vs2012在Linux开发中的应用(4):公共属性的定义
在嵌入式开发的过程中,有一些参数是基本不会改变的,如编译主机的IP,用户名,密码等参数。我们使用VS提供的属性管理器来保存这些参数。打开属性管理器:可以看到VS会根据不同的平台自动加载一个叫Microsoft.Cpp.$(Platform).user.prop的属性表,这个属性表文件存放在AppData\Local\Microsoft\MSBuild\v4.0目录下:当然我们也原创 2014-11-17 23:44:48 · 1683 阅读 · 0 评论 -
Vs2012在Linux开发中的应用(3):添加新平台hi3516
下面我们将为VS2012添加一个新的平台支持,因为最近在用海思的hi3516,就选它吧!1.1 复制平台文件原来一直觉得要让VS支持一个新的平台需要编写代码,某天在看MSBUILD目录的时候突然发现了一个神奇的目录:新平台的秘密就在这里!!这里的hi3516原来是没有的,只是为了添加对hi3516这个平台的支持而加上去的。我们将ARM目录复制一份,改名为hi3516。原创 2014-11-17 23:02:02 · 2418 阅读 · 4 评论 -
Vs2012在Linux开发中的应用(2):方案设计
1.1 代码提示功能在vs中开发中,Visual Assist是一个非常优秀的插件,我们仍然可以使用它进行代码的分析,但它只能支持vcxproj工程,因而我们选择对vcxproj的工程进行扩展,这样VisualAssist就可以正常使用了。此外,VS的智能感知不支持GCC的一些扩展,在做代码分析的时候可能出错,我们采用强制包含头文件的方式解决一部分问题:注意,这个文件的目的原创 2014-11-17 21:04:49 · 2886 阅读 · 0 评论 -
Vs2012在Linux开发中的应用(1):开发环境
在Linux的开发过程中使用过多个IDE,code::blocks、eclipse、source insight、还有嵌入式厂商提供的各种IDE,如VisualDsp等,感觉总是不如vs强大好用。虽然VS并不提供gcc的编译和调试支持,在之前的开发中只能充当一个编辑器的作用,但VS提供了强大的SDK,本文将探讨如何扩展VS,使之支持Linux的开发。 其实像Visual Gd原创 2014-11-17 18:48:18 · 5727 阅读 · 0 评论 -
Vs2012在Linux开发中的应用(5):项目属性的定义
VS的项目属性表实际上是由一系列的XML文件定义的,都存放在C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V110\2052目录下,我们完全可以仿照它们的定义添加自己的属性页。首先在项目文件中导入自定义的目标: 这里的EmbedLinux.targets是自己创建的文件,在这个目标文件中加上对xml文件的引用: ItemGr原创 2014-11-18 22:13:40 · 2396 阅读 · 0 评论 -
Vs2013在Linux开发中的应用(20): 断点设置
当vs设置断点时,SDM将调用: // Creates a pending breakpoint in the engine. A pending breakpoint is contains all the information needed to bind a breakpoint to // a location in the debuggee.原创 2014-12-19 21:43:27 · 1760 阅读 · 0 评论 -
Vs2013在Linux开发中的应用(33):反汇编
快乐虾http://blog.csdn.net/lights_joy/欢迎转载,但请保留作者信息1.1 失败按照文档的说法,反汇编应当实现IDebugDisassemblyStream2接口,然后在 // The debugger calls this when it needs to obtain the IDebugDisassemblyStream2 for a part原创 2015-01-08 21:09:36 · 1850 阅读 · 0 评论 -
Vs2013在Linux开发中的应用(24):触发断点
当gdb命中断点时,它将在断点的位置停下来并给出信息:*stopped,reason="breakpoint-hit",disp="keep",bkptno="1",frame={addr="0x0805fc75",func="main",args=[{name="argc",value="1"},{name="argv",value="0xbffff6e4"}],file="../../app/原创 2014-12-29 20:53:47 · 1307 阅读 · 0 评论 -
Vs2013在Linux开发中的应用(25):曙光
快乐虾http://blog.csdn.net/lights_joy/欢迎转载,但请保留作者信息在SDM接收到断点命中的消息时,它将停止调试过程,然后获取程序状态,第一个要做的就是线程列表: // EnumThreads is called by the debugger when it needs to enumerate the threads in the program.原创 2014-12-31 21:52:20 · 1797 阅读 · 0 评论 -
Vs2013在Linux开发中的应用(26):表达式计算
快乐虾http://blog.csdn.net/lights_joy/欢迎转载,但请保留作者信息当VS调试时将鼠标移到一个变量上面的时候,VS将显示这个变量的值,实际上这个时候VS进行了表达式的计算,我们所需要做的,就是把这个过程转换为gdb的命令: Operation Description -enable-pretty-printing enabl原创 2015-01-01 23:26:55 · 1496 阅读 · 0 评论 -
用Vs2013+VELT进行Linux开发:Hello World
快乐虾http://blog.csdn.net/lights_joy/欢迎转载,但请保留作者信息本文适用于vs2013 + Visual EmbedLinux Tools 0.1.11.1 什么是VELTVELT的全称是Visual EmbedLinuxTools,它是一个与visual gdb类似的visual studio插件,用以辅助完成Linux开发。利用这个插件,将可以在visua原创 2015-01-03 15:56:59 · 6441 阅读 · 7 评论 -
用Vs2013+VELT进行Linux开发:动态库
快乐虾http://blog.csdn.net/lights_joy/欢迎转载,但请保留作者信息本文适用于vs2013 + Visual EmbedLinux Tools 0.1.11.1 什么是VELTVELT的全称是Visual EmbedLinuxTools,它是一个与visual gdb类似的visual studio插件,用以辅助完成Linux开发。利用这个插件,将可以在visua原创 2015-01-03 23:14:18 · 2996 阅读 · 0 评论 -
Vs2013在Linux开发中的应用(27):线程列表
快乐虾http://blog.csdn.net/lights_joy/欢迎转载,但请保留作者信息在gdb加载应用程序并运行时,可以检测到线程的创建,我们将此消息以事件的形式通知了SDM。因此当中断发生时,对于每一个线程,VS的SDM将调用我们的回调: // Retrieves a list of the stack frames for this thread. //原创 2015-01-02 12:09:38 · 1839 阅读 · 0 评论 -
Vs2013在Linux开发中的应用(28):单步执行
快乐虾http://blog.csdn.net/lights_joy/欢迎转载,但请保留作者信息在VS调试时,有三种类型的单步操作逐语句,逐过程和跳出,当进行这三种操作时,SDM调用的其实是同一个回调: // This method is deprecated. Use the IDebugProcess3::Step method instead. ///原创 2015-01-03 11:11:34 · 1758 阅读 · 0 评论 -
用Vs2013+VELT-0.1.0进行Linux开发:环境搭建
快乐虾http://blog.csdn.net/lights_joy/欢迎转载,但请保留作者信息本文适用于vs2013 + Visual EmbedLinux Tools 0.1.11.1 什么是VELTVELT的全称是Visual EmbedLinuxTools,它是一个与visual gdb类似的visual studio插件,用以辅助完成Linux开发。利用这个插件,将可以在visua原创 2015-01-03 14:19:36 · 9167 阅读 · 4 评论 -
Vs2013在Linux开发中的应用(29):寄存器信息
快乐虾http://blog.csdn.net/lights_joy/欢迎转载,但请保留作者信息当VS需要获取寄存器值的时候,会调用 // Creates an enumerator for properties associated with the stack frame, such as local variables. // The sample engine原创 2015-01-05 23:30:45 · 1800 阅读 · 0 评论 -
Vs2013在Linux开发中的应用(23):信息输出
快乐虾http://blog.csdn.net/lights_joy/欢迎转载,但请保留作者信息有时候,我们需要往VS的信息输出窗口输出一些调试信息,此时只要向SDM发送通知: Send(new AD7DebugOutputStringEvent2(e.Output), AD7DebugOutputStringEvent2.IID, thread);利用此功能,很容易就可以把原创 2014-12-27 20:33:23 · 1226 阅读 · 0 评论 -
Vs2013在Linux开发中的应用(18): 应用程序调试方案
快乐虾http://blog.csdn.net/lights_joy/欢迎转载,但请保留作者信息在前面我们对VS的调试接口做了基本的功能验证,下面开始方案的拟定:如上图所示,我们需要在WINDOWS端运行两个辅助程序,一个是RemoteConsole,这个程序的主要作用是显示远端程序的输出,并将用户输入传送给远端。另一个是python解释原创 2014-12-10 23:07:32 · 1599 阅读 · 0 评论 -
Vs2013在Linux开发中的应用(22):模块加载
快乐虾http://blog.csdn.net/lights_joy/欢迎转载,但请保留作者信息当gdb检测到模块的加载时会输出:=library-loaded,id="/lib/ld-linux.so.2",target-name="/lib/ld-linux.so.2",host-name="/lib/ld-linux.so.2",symbols-loaded="0",thread-group原创 2014-12-25 21:27:40 · 1673 阅读 · 0 评论 -
Vs2013在Linux开发中的应用(21): 线程创建
当gdb检测到应用程序创建新线程时会输出: =thread-created,id="1",group-id="i1"此时,需要将此事件通知SDM: Send(new AD7ThreadCreateEvent(), AD7ThreadCreateEvent.IID, ad7Thread);原创 2014-12-20 16:45:08 · 1219 阅读 · 0 评论 -
Vs2013在Linux开发中的应用(14): 远程调试设想
下面我们尝试使VS支持gdb调试,因为我们有可能面对三种场景:使用ssh连接远程机器并在远程机器上执行gdb使用telnet连接开发板并在远程机器上执行gdb使用串口连接开发板并运行GDB在开发板上运行gdbserver,在虚拟机上运行gdb并连接开发板上的gdb在上述场景中,我们最终都面对gdb的接口,无非是中间的连接方式不同,因此原创 2014-12-04 23:29:04 · 2455 阅读 · 0 评论 -
Vs2013在Linux开发中的应用(34):Ctrl + F5支持
快乐虾http://blog.csdn.net/lights_joy/欢迎转载,但请保留作者信息VS中常用的Ctrl+F5可以不调试直接运行,但是其运行的环境变量仍然可以传递给应用程序,在我们的调试方案中使用了一个叫RemoteConsole的stub程序在调试状态下,EmbedLinux调试引擎会在开始调试时打开一个自动选择的服务端口,再将此端口号通过环境变量传递给RemoteConsole。在原创 2015-01-09 22:40:45 · 1584 阅读 · 0 评论 -
用Vs2013+VELT进行Hi3516开发:编译UBOOT
快乐虾http://blog.csdn.net/lights_joy/欢迎转载,但请保留作者信息1.1 什么是VELTVELT的全称是Visual EmbedLinuxTools,它是一个与visual gdb类似的visual studio插件,用以辅助完成Linux开发。利用这个插件,将可以在visual studio的IDE中进行Linux应用程序的开发(包括编译和调试),也可以进行u原创 2015-01-10 11:56:35 · 2765 阅读 · 0 评论