问题标签 [armclang]
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.
arm - ds-5 终极评估版支持64bit neon(arm_v8 neon)
我已经安装了当前的 " DS-5 Ultimate 64-bit evaluation
" 版本,但无法为 ARMv8 64-bit neon 构建。在armclang中找不到 cpu 列表,它只显示选项 "Target: aarch64-arm-none-eabi".
请帮我解决以下问题
- 此版本是否支持 ARMv8 霓虹灯?
- 如何找到可用的 cpu 列表(如
armcc --cpu
列表中)或等效的 armclang 选项。
makefile - GNU make 在 -I (共享目录)选项之后添加空格
我正在尝试通过 GNU makefile 使用 armclang 编译器,但是在使用 -I 选项时两种工具之间存在冲突。
对于 armclang 编译器,-I 表示“将指定目录添加到搜索位置列表以查找包含文件。语法 -Idir”,不带空格。
对于 GNU makefile '-I dir' 具有相同的含义(但带有空格)。
在我的makefile中,我有以下内容:
运行 Makefile 时,我收到以下警告和错误:
其中 boot_defs.hs 存在于 common/shared 下
在 makefile 之外运行相同的 armclang 命令时,它可以工作。因此我假设 makefile 已经格式化了 -Icommon/share 选项并在 -I 之后添加了自动空间。
有什么方法可以正确运行 armclang 命令?在其他世界中,是否可以让 makefile 解析 -Icommon/shared 而无需任何自动格式化?
我一直在尝试很多技巧来解决这个问题,但没有任何成功。
非常感谢提前。
c - 丢弃的副作用,参数传递给断言
我有一个编译器警告,我想摆脱它。
警告:'__builtin_assume' 的参数具有将被丢弃的副作用 [-Wassume]
C:\Keil_v5\ARM\ARMCLANG\Bin..\include\assert.h(72):注意:从宏 'assert' 扩展
定义断言(e)((e)?(void)0:_CLIBNS _aeabi_assert(e,_FILE__,_LINE__),(__ARM_PROMISE)((e)?1:0))
这个想法是在将警告设置为“pedantic”的情况下编译时没有警告。原因是最近在我的嵌入式代码中添加了指针检查功能。我们的想法是改进以下内容:
类似于以下内容:
这是因为自动变量不是零初始化的。因此,未初始化的指针很可能不会为 NULL。这是我想检测的编码错误(不一定是我自己做的),因此需要检查。以下内容并不完美,但似乎确实发现了更多的指针错误(不幸的是,不是悬空的)。
我在头文件中有以下代码来实现这一点:
我的代码中没有任何关于 ARMCC 5.06 的警告。据我所知,我的 checkPtr 函数没有任何副作用。除了传递给它的指针之外,它不访问任何变量。
c++ - constexpr 构造函数初始化程序列表中的 constexpr 函数
我想用结构名称的哈希初始化一个结构成员。
当我有:
然后在编译时成功计算哈希。但是,当我在我的主要功能中
然后它会调用
代码中的函数,而不是简单地使用编译时间常数初始化结构成员。
这显然会导致可避免的显着性能损失。
关于如何让编译器在编译时执行此操作的任何想法或建议?我真的不想这样做:
谢谢。
armv7 - 带有 TMS570 的 Armclang
是否可以将 armclang 与 TMS570 一起使用?
Cortex-R4F 手册声明它支持小端和字节不变大端 (BE-8) 但不支持字不变大端 (BE-32),但 TMS570 说它是 BE-32。
我正在尝试确定是否可以使用 armclang 构建 TMS570 代码。到目前为止,经过几天的尝试,我还没有设法让它工作。我感觉这可能是由于 armclang 无法创建 BE-32?
arm - 警告:ELF 段之外的可加载部分“my_section”
我已经使用 Arm Compiler v6.9 for Cortex-R4 构建了一个 axf (elf) 文件。但是,当我使用 Arm MCU Eclipse J-link GDB 插件将其加载到目标时,它无法为我的段加载初始化数据。如果我使用 Segger Ozone 和 J-Link 加载 axf,它会正确加载初始化数据。
如果我在 axf 文件上运行 arm-none-eabi-gdb.exe,我会为所有初始化的段收到“警告:ELF 段之外的可加载部分“my_section””。
查看图像,初始化数据应在图像之后加载到 Region$$Table$$Base 中的表指定的地址。
如果我们与 gcc 链接,我们就不会有这个问题,因为初始化数据的处理方式不同。
有任何想法吗?
c - 如何使用命令行选项覆盖 __TIME__ 和 __DATE__ 宏的值?
__FILE__
在其中一个模块中使用和宏的项目中__DATE__
,我试图在构建时将这些宏的值重新定义为显式值。尝试使用该-D
选项,就像-D__TIME__=01:23:45
给了我一个编译错误。
有没有办法从命令行设置这些宏(和类似的预定义宏),而无需更改源代码本身?
assembly - 将 bss 和数据加载到内存中的问题
我有一个使用 arm-compiler-6 (armclang) 为 cortex-A53 编译的非常简单的项目。该项目包含一个 main.c、一个分散文件和一个 startup.s。这是它的分散文件:
简而言之,这是 startup.s 中的初始化代码:
不幸的是,当数据和 bss 放在 RAM 部分时,项目根本无法运行。当我将它们放在 ROM 部分时,项目可以正常运行,但当然,我只能读取全局变量而不能修改它们的值。一般来说,我可以在运行时从 RAM 读取和写入。我怀疑我的初始化代码中缺少某些阶段。据我了解,由 __main 调用的 __scatterload 负责将 ZI 初始化为零。谢谢您的帮助。
c - 为什么stm32上的程序只能调试运行?
我用armclang构建我的程序,程序会让板上的LED亮起来。但是当我通过st-link将程序下载到stm32f407时,LED不亮。所以我通过st-link在调试模式下运行程序,zhe LED将亮,表示程序正在运行。
我发现程序可以在O3优化中运行,而不能在O2优化中运行。
为什么?
我使用armcc构建程序,一切正常。armclang的问题还是我忽略了一些配置。
请赐教,谢谢