问题标签 [gnu-arm]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
238 浏览

c - UNS_32 在哪里定义?

我在客户端的源代码上使用 Doxygen 并且 Doxygen 找不到符号UNS_32

使用 GNU ARM 编译器编译客户端的代码时不会出错。

我已经搜索了客户端的代码库,但找不到UNS_32.

我搜索了 GNU ARM 源代码树,也找不到。

那么,符号在哪里UNS_32定义?

*注意:我不是在寻找含义。我想要这个定义,所以我可以把它放在我的 Doxygen 配置文件中。*

示例用法:

0 投票
2 回答
1217 浏览

c - GNU ARM 中 get_pc() 的声明在哪里?

我正在使用 GNUARM C 编译器构建遗留代码并尝试解析函数的所有隐式声明。

我遇到了一些 ARM 特定的函数,但找不到包含这些函数声明的头文件:

我在网上搜索过,只找到了包含这些函数的源代码,没有任何非标准的包含文件。

我也会满足于函数声明。

由于我还将代码移植到 Cygwin / Windows 平台,Cygwin GNU GCC 的等效声明是什么?

谢谢。

0 投票
1 回答
1778 浏览

arm - Gnu arm 在 UBFX 上给出错误,错误指令

我的手臂汇编代码是:

当我尝试使用arm-elf-gcc file.s它编译它时,会出现以下错误:

我正在使用 GCC-3.4 工具链。我不明白错误在哪里。

0 投票
1 回答
730 浏览

c - 了解程序中变量的多重声明和 GCC 编译器行为

我尝试了这三个版本的小程序,得到了一些有趣的结果。谁能帮我理解每种情况下的编译器行为。

0 投票
2 回答
1992 浏览

arm - 关于 GNU ARM 汇编程序的意外警告

我正在为 Raspberry Pi 编写一些裸机代码,并且收到来自 Windows 上的 ARM 交叉汇编程序的意外警告。导致警告的说明是:

警告是:

警告:基址寄存器的写回是不可预测的

我可以这样理解,虽然'^'修饰符告诉处理器存储寄存器的用户模式副本,但它不知道执行指令时处理器将处于什么模式并且似乎没有是一种方式来告诉它。我更担心会收到相同的警告:

和:

尽管我明确没有存储任何sp 寄存器。

我担心的是,尽管大约 15 年前我曾经做过很多汇编代码,但 ARM 代码对我来说是新的,我可能会误解一些东西!另外,如果我可以安全地忽略这些警告,有没有办法抑制它们?

0 投票
2 回答
3278 浏览

c - GNU ARM 的#pragma

我想将整个 C 文件包含在输出部分中,

这是我正在尝试的示例代码:

我用了 :

获取 .S 文件。

但看起来该sec_ro部分不存在于 .S 文件中。

编辑/更新

附加 .s 文件内容:

我想附上整个 C 文件来创建输出部分,我正在使用 GNU ARM 工具链,我错过了什么吗?

0 投票
2 回答
2101 浏览

c++ - g++:在嵌入式应用程序中使用单例

我正在使用 C++ 中的 GNU ARM 工具链中的 GCC 4.8 为 Cortex M3 开发嵌入式应用程序。该应用程序使用一些通过函数局部静态变量实例化的单例,例如(真实代码):

这是在 C++ 中实现单例的经典方法。问题是,一旦我使用这种实例化,输出代码大小就会爆炸,这显然意味着编译器/链接器添加了一些服务代码以正确初始化/销毁单例对象。

这是允许重现问题的最小示例:

这将编译成66k的代码(-Os):

这将编译成9k的代码(-Os):

如果该行(void)getA();被完全注释掉,最终的二进制大小将大约为4k

问题是:除了将静态变量从函数范围中提取出来之外,我还有哪些选项可以避免这个单例的额外 62k 代码?是否有任何选项可以告诉 GCC 在应用程序退出时不需要调用单例的析构函数(因为它永远不会退出)?还有其他优化方法吗?

0 投票
1 回答
85 浏览

eclipse - 如何在 gnu arm eclipse 或 cdt 上的项目资源管理器上设置或替换文件?

我正在研究 eclipse cdt 插件开发使用gnuarmeclipse

上一个问题。

我需要在项目资源管理器中设置或替换文件(如链接脚本)。

我知道它会更改项目属性-> C/C++ 构建-> 设置-> 工具设置-> GCC C 链接器-> 常规-> 脚本文件(-T)。

但我想要,它在项目资源管理器上下文菜单上执行。

见下文。

1) 在 Project Explorer 中选择 LD(仅一个链接脚本文件的文件夹)。

2) 右键单击​​并在上下文菜单中选择“设置链接器脚本文件”。

3) 在打开窗口中选择要设置或替换的文件。

这是 setlinkerscript.java

我有一个文件位置,但我不知道我在 Eclipse 上设置的位置。

有任何 API 或方法吗?或推荐文件。

我不能为图附加 jpg .. 需要更多的声誉点。对不起!

提前致谢。

0 投票
0 回答
794 浏览

linux - GNU Arm 和 Eclipse 的问题

最近几天我一直在尝试在Linux上使用 Eclipse 设置 GNU ARM 插件。问题是我无法为我的 STM32 Discovery F4 板正确编译。编译普通的 gcc ARM 项目没有问题,但是当涉及到 STM32F4xx 时,我得到了这些错误:

我的代码是默认的 LED 闪烁一:

我尝试将 cstdlib 文件添加到项目中,但随后出现新错误。谢谢你的帮助!

0 投票
3 回答
18031 浏览

linux - GNU ARM - 未找到 nano.specs

最近几天,我一直在尝试使用Ubuntu 14.04LTS、Eclipse 和 GNU ARM Eclipse 插件编译一个 STM32F4xx 项目。现在它说nano.specs缺少了。这是我的构建日志:

我在我的电脑上找到了一些nano.specs文件。我该怎么办?只需删除链接器标志(我实际上不能这样做,因为我不知道如何在 Eclipse 中做到这一点)或其他什么?谢谢你的帮助!