问题标签 [armcc]
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.
header - 头文件更改时 GNU-Make 不会重新编译
当 hdr.h 文件更改时,GNU-Make 不会重新编译。如下打印的行,即使生成了 main.d 文件,它也没有尝试重新编译。你能指导我为什么会这样吗?
硬盘驱动器
主程序
生成文件
这是第二行的打印行。
main.d 文件生成如下。
c - ARM 链接器错误:使用了堆,但未定义堆区域
我正在将代码库移植到新的构建环境中,并且在链接时遇到了这个问题。
目标是 32 位 Arm Cortex R5。不在代码库中的任何地方使用 malloc 或 free。过去在类似的构建环境移植期间,我通过使用 microlib 解决了这个问题。不过这次没有这样的运气。
编辑:原来我可以通过在编译时使用 microlib 来解决这个问题。当我问这个问题时,我以为我试过了,但实际上没有。
c - remove debug strings in release build
I use a LOG_DEBUG
function to print debug information to the screen. I used a #define _DEBUG
to disable LOG_DEBUG
function by defining _DEBUG
FLAG in compile time (release time). but linux strings
commands of release build app still shows debug strings which exists in the compiled app. so what is the alternatives to eliminate arguments of LOG_DEBUG
?
the compiler I use: ARM/Thumb C/C++ Compiler, RVCT3.1 [Build 569]
optimization: -O3
c++ - GCC_ARM 的路径 (mbed_settings.py)
我刚刚开始使用 mbed API,每次我尝试编译我的项目时都会发生这种情况
PS我在arch Linux上
我看过这篇文章:mbed CLI:make.py:错误:找不到 ARM 的可执行文件, 但我不知道路径应该是什么......这是我的设置文件:
这个问题对你来说可能很简单,但我才刚刚开始,所以请帮助我......
[更新]
我正在尝试一些事情,我试图手动启动编译器,这发生了:
命令
输出
我会试着弄清楚什么是stdint.h,这一定是问题所在,我会更新发生了什么!
c++ - C volatile 位域结构的复制构造函数
再会
我正在尝试在 C++11 项目中使用 C SD 驱动程序/文件系统库(Keil MDK)。它是由 Keil MDK 5.23 中的包管理器添加的。我正在使用 ARMCC 5.06u4 进行编译
我收到警告class "_ARM_MCI_STATUS"
“没有合适的复制构造函数”,这很奇怪,因为它在中声明的标头具有extern "C" {
.
默认情况下,包没有将其设置为 C 或 C++ 的选项,但我已手动将文件添加为 C 文件。还是有问题。
该结构被声明extern "C" {
为:
当在以下位置返回结构时会出现问题:
哪里status
被声明为ARM_MCI_STATUS status;
. 我不明白为什么这应该是一个问题。
如果我在没有 --cpp 的情况下编译,那么它编译没有问题。
有什么建议么?
c - 调试内存问题ARM7
我在尝试调试一些看起来非常奇怪的行为时遇到了一些问题。例如,我们有:
并且指针没有明显的原因发生变化。有时是垃圾,有时是代码中其他地方定义的其他常量字符串(或部分)。我们偶尔也会看到代码跳转到不应该运行的不同部分(状态变量似乎在没有被要求的情况下更改)。有 2 或 3 种常见的故障模式,它们似乎是随机发生的。它是一个相对较大的代码库,添加或删除某些部分会改变故障行为(或完全删除它),即使这些部分从未被引用。
目前最好的理论是,这是一个与内存相关的问题,因为我们已经用细齿梳理了所有最近的变化,插入代码段来移动东西的简单行为似乎改变或删除了行为.
调试此问题或类似问题的最佳方法是什么?发现调试器有时很有用,而在其他时候却没有(但这可能是用户错误)。
进一步说明。ARM7,使用 Keil µVision 4 和 armcc v4.1 编译器。
c - 为什么在这个来自 ARM CMSIS 的示例中使用双重转换?
所以我有(((uint32_t)(int32_t)IRQn) >> 5UL)
,其中 IRQn 是一个范围从 -14 到 81 的枚举。
据我所知,它首先转换为 int32_t,然后转换为 uint32_t。之后,它向左移动。最后,它(在给定的代码示例之外)用作数组索引。
作为测试,我编写了以下代码并使用相同的编译器对其进行了编译:
据我所知,所有 4 个数字最后都有相同的二进制值。这让我相信这((uint32_t)IRQn)
也可以作为演员。
那么我们需要进行两次演员阵容还有其他原因吗?
arm - armcc DWARF调试信息中隐藏的__result局部变量
我正在编写用于调试 Cortex-M 的工具,并且在查看.debug_info
armcc 为某些 C 源代码输出的 DWARF 部分时发现了一个伪像。(确切的编译器是 ARM Compiler 5.05。)
例如,当 C 源代码包含一个简单的函数时,例如:
我发现.debug_info
按预期描述了 x 和 y 局部变量,另外还有一个“隐藏变量” __result
,如下所示:
这个“变量”的“隐藏”性质的线索,就是DW_AT_artificial
标志的存在。
我已经阅读了有关该DW_AT_artificial
标志的 DWARF 文档,这被怀疑所证实。我还通过实验推断出这个特性与这个函数的返回值有关,因为这个“变量”没有出现在void
类型函数的 DWARF 中。
我找不到armcc
工具链设计者所期望的对该实体使用的任何确认。谁能详细说明我的发现的含义和用途?
c++ - cmake CheckCSourceCompiles 将预处理器定义传递给 armlink
我正在尝试检查armcc
.
使用我的 armcc 版本,我可以在上面的 cmake 命令中编译源代码而不会出现任何错误。
但是 cmake 未能通过以下日志进行此测试:
这里的问题是,cmake 将宏定义溢出-DGCC_THREAD_LOCAL_AVAILABLE
到链接器命令中并armlink
失败。
请指导我如何避免这个宏定义溢出。
对于 GCC,这个问题不会发生,gnu-ld
只是忽略了命令行中的宏定义。
c - 从用 __asm 定义的 ARM 函数调用 C 函数
我无法理解我的编译器。我们使用 Scons 实用程序为 M0+ 处理器编译 ARM 代码(在 Windows 上,如果重要的话。这是一个 ARMCC 编译)我试图使用这个问题的答案在中断期间捕获堆栈指针的地址。
对于我的编译器,我得到以下信息:Error: #20: identifier "asm" is undefined
我能够(主要)编译它的唯一方法是使用以下内容:
错误代码是
将最后两条装配线替换BL IRQHandler_real
为相同的错误。
这个答案解释了内联汇编非常依赖于编译器,所以我无法找到与我的代码匹配的示例。
我在这里读到我需要一个“extern C”调用,但我还没有找到关于它的详细信息。
我仔细检查了编译处理器代码的语法,它看起来与我正在使用的命令相同。我认为在评估程序集时没有定义符号。我只是还没弄清楚如何定义和链接符号。
TL:DR,我需要从 ARM 程序集中调用一个 C 函数,但我还没有通过编译器。