相关疑难解决方法(0)

如何在Eclipse CDT中启用C++ 11/C++ 0x支持?

Eclipse 3.7.1 CDT 1.4.1 GCC 4.6.2

这是一段C++ 11代码的示例:

auto text = std::unique_ptr<char[]>(new char[len]);
Run Code Online (Sandbox Code Playgroud)

Eclipse编辑器抱怨:

Function 'unique_ptr' could not be resolved
Run Code Online (Sandbox Code Playgroud)

Makefile编译工作正常.如何让Eclipse停止抱怨这些错误?

c++ eclipse eclipse-cdt c++11

208
推荐指数
7
解决办法
22万
查看次数

如何从终端使用GDB(Gnu调试器)和OpenOCD进行微控制器调试?

编程ARM微控制器的标准(低成本)方法是使用Eclipse,并在其中插入复杂的工具链.Eclipse肯定有它的优点,但我想要独立于这个IDE.我想发现当我构建(编译 - 链接 - 闪存)我的软件以及运行调试会话时幕后发生的事情.为了更深入地理解,从命令行运行整个过程会很棒.

注意:我使用的是64位Windows 10.但这里解释的大部分内容也适用于Linux系统.请使用管理员权限打开所有命令终端.这可以为您节省很多问题.

1.构建软件

第一个"使命"完成了.我现在能够通过命令行编译和链接我的软件到二进制文件.bin.elf图像.成功的关键是找出Eclipse为特定项目提供make文件的位置.一旦你知道它们在哪里,你所要做的就是打开一个命令终端,然后输入GNU make命令.

在此输入图像描述

你不再需要Eclipse了!特别是如果您可以阅读(并理解)makefile并在项目进展时根据您的需要进行调整.

请注意,在安装SW4STM32(System Workbench for STM32)之后,我在以下文件夹中找到了GNU工具(编译器,链接器,make实用程序,GDB,...):

C:\Ac6\SystemWorkbench\plugins\fr.ac6.mcu.externaltools.arm-none.win32_1.7.0.201602121829\tools\compiler\
Run Code Online (Sandbox Code Playgroud)

接下来,我在硬盘上创建了一个新文件夹,并将所有这些GNU工具复制到其中:

C:\Apps\AC6GCC
           |-> arm-none-eabi
           |-> bin
           '-> lib
Run Code Online (Sandbox Code Playgroud)

我将这些条目添加到"环境路径变量":

 - C:\Apps\AC6GCC\bin
 - C:\Apps\AC6GCC\lib\gcc\arm-none-eabi\5.2.1
Run Code Online (Sandbox Code Playgroud)

Huray,现在我已经在我的系统上启动并运行了所有GNU工具!我将以下build.bat文件放在与以下文件夹相同的文件夹中makefile:

@echo off
echo.
echo."--------------------------------"
echo."-           BUILD              -"
echo."--------------------------------"
echo.

make -j8 -f makefile all

echo.
Run Code Online (Sandbox Code Playgroud)

运行这个bat文件应该可以胜任!如果一切顺利,您将获得一个.bin和一个.elf二进制文件作为编译的结果.

2.闪烁和调试固件

自然的后续步骤是将固件刷新到芯片并启动调试会话.在Eclipse中,只需"点击一个按钮" - 至少如果为您的微控制器正确配置了Eclipse.但是幕后会发生什么?我从Dominic Rath(OpenOCD的开发者)那里阅读(部分)硕士论文.你可以在这里找到它:http://openocd.net/.这是我学到的:

  • 单击"调试"图标时,Eclipse将启动OpenOCD软件.Eclipse还为OpenOCD提供了一些配置文件 - 这样OpenOCD就知道如何连接到微控制器."如何连接"并非易事.OpenOCD需要找到合适的USB驱动程序来连接JTAG适配器(例如STLink).JTAG适配器及其USB驱动器通常由您的芯片制造商提供(例如STMicroelectronics).Eclipse还将配置文件移交给OpenOCD,该文件描述了微控制器的规格.一旦OpenOCD知道所有这些事情,它就可以与目标设备建立可靠的JTAG连接.

  • OpenOCD启动两个服务器.第一个是TCP端口4444上的Telnet服务器.它可以访问OpenOCD CLI(命令行界面).Telnet客户端可以连接并向OpenOCD发送命令.这些命令可以是简单的"停止","运行","设置断点",......

  • 这些命令可能足以调试你的微控制器,但很多人已经熟悉Gnu调试器(GDB).这就是为什么OpenOCD还在TCP端口3333上启动GDB服务器.GDB客户端可以连接到该端口,并开始调试微控制器!

  • Gnu调试器是一个命令行软件.很多人更喜欢可视化界面.这正是Eclipse所做的.Eclipse启动了一个连接到OpenOCD的GDB客户端 - 但这对用户来说都是隐藏的.Eclipse提供了一个图形界面,可以在幕后与GDB客户端进行交互.

我已经做了一个数字来解释所有这些事情:

在此输入图像描述

>>启动OpenOCD …

gdb gnu jtag openocd

40
推荐指数
1
解决办法
2万
查看次数

标签 统计

c++ ×1

c++11 ×1

eclipse ×1

eclipse-cdt ×1

gdb ×1

gnu ×1

jtag ×1

openocd ×1