arm相关内容

在没有 IDE 的情况下如何使用 CMSIS?

我正在使用 STM32F103C8T6 并想使用 CMSIS,本质上只是寄存器定义,没有代码,让我的生活更轻松,同时仍然保持在低水平.问题是我不知道如何安装库以在 Makefile 的命令行上使用.所有文档似乎都与特定于供应商的 IDE 绑定,例如 STM32CubeIDE. 我想首先要做的是下载 CMSIS 库,我在 GitHub 上找到了该库.但是,在解压 ARM.CMSIS.5.6.0 ..
发布时间:2022-01-17 14:14:50 其他开发

任意解引用指针的输出

我按如下方式填充内存: char buf[8] = { 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88}; 然后将无符号长指针依次放在前5个字节并输出结果: char *c_ptr;无符号长 *u_ptr;c_ptr = buf;对于 (int i=0;i 当我在我的 x64 平台上执行此代码时,我得到了我的预期: 4433221155443 ..
发布时间:2022-01-17 14:14:18 C/C++开发

Eclipse GDB“初始化"和“跑";使用 OpenOCD 设置 ARM LPC1768?

我终于想通了 如何让代码在 这个 LPC1768 迷你板,但是现在我正在尝试进行调试. 我使用的工具链是:Yagarto + Eclipse (Indigo)(带 GDB 硬件调试器)+ OpenOCD.我的 JTAG 接口是:Bus Blaster V2 板. 我找到了一个 指南,它介绍了类似的设置,但它适用于不同的JTAG接口所以不是很有用.还有这篇文章关于LPC1768 示例,但 ..
发布时间:2022-01-17 14:14:03 Java开发

Cortex-A57 可以双发 128 位 neon 指令吗?

Cortex-A57 优化指南指出,大多数对 128 位矢量数据进行操作的整数指令都可以双发出(第 24 页,整数基本 F0/F1,逻辑 F0/F1,执行吞吐量 2). 但是,在我们的内部(综合)基准测试中,吞吐量似乎仅限于 128 位 neon 整数指令,即使有大量可用的指令并行性(编写基准测试的目的是测试 128 位霓虹灯指令可以双重发布,所以这是我们注意的).当混合 50% 的 128 ..
发布时间:2022-01-17 14:13:54 其他开发

ARM 程序集:重新加载“asm"时在“GENERAL_REGS"类中找不到寄存器

我正在尝试在 ARM Cortex-a8 上的 ARM 程序集中实现一个将 32 位操作数与 256 位操作数相乘的函数.问题是我的寄存器用完了,我不知道如何减少这里使用的寄存器的数量.这是我的功能: typedef struct UN_256fe{uint32_t uint32[8];}UN_256fe;typedef 结构 UN_288bite{uint32_t uint32[9];}UN_ ..
发布时间:2022-01-17 14:13:44 其他开发

ARM LL/SC 通过寄存器宽度或缓存线宽度进行独占访问?

我正在开发下一个版本的无锁数据结构库,在 ARM 上使用 LL/SC. 对于我的 LL/SC 用例,我需要将它与 LDREX 和 STREX 之间的单个 STR 一起使用.(而不是用它来模拟 CAS.) 现在,我已经编写了代码,并且可以正常工作.然而,我担心的是它可能并不总是有效.我在 PowerPC 上读过,如果您访问与 LL/SC 目标相同的缓存行,就会破坏 LL/SC. 所 ..

为了处理 arm cortex A9 上的中断,Linux 内核需要多少条指令?

我想估计一个 ARM cortex A9 单核处理一个 IRQ 所需的操作码数量. 假设我使用 Linux 内核 3.4,调用 irq 并执行 irq_handler 需要多少操作码? 解决方案 你的问题是关于如何计算Linux 的中断延迟.至少您可能对中断开始之前需要多长时间感兴趣.我们将在这里忽略 irqs 的这一方面. 一种简单的方法是切换 GPIO 并使用范围来测量中断 ..
发布时间:2022-01-17 14:13:17 服务器开发

arm链接器在函数调用中使用的“单板"是什么?

我刚刚阅读了 https://www.keil.com/支持/man/docs/armlink/armlink_pge1406301797482.htm.但无法理解 arm 链接器在函数调用之间插入的单板是什么. 在“ARM 体系结构的过程调用标准"中文件,它说, 5.3.1.1 链接器对 IP 的使用 ARM 和 Thumb 状态的 BL 指令都无法寻址完整的 32 位地址空间,因此 ..
发布时间:2022-01-17 14:13:03 其他开发

thumb-2指令的W后缀是什么意思?

thumb-2 指令有一个 w 后缀,如下所示,如果没有它,它如何改变指令的语义?搜索结果很吵,我没有得到答案. addw r0, r1, #0 解决方案 我在 Cortex-M3 TRM 表 2-5 大立即数的数据操作ADDW 和 SUBW 有一个 12 位立即数.这意味着它们可以从内存文字加载中替换许多. 快速参考 加宽 T2 ADD Rd, Rn, # 看 ..
发布时间:2022-01-17 14:12:41 其他开发

GCC中无法除数的原因是什么

我的情况很奇怪.每次我尝试编译我的 arm 项目(LPC2378,codesourcery arm-none-eabi-gcc-4.5.1)时,我在链接时都会遇到同样的错误 /media/data/Projects/arm/uart/main.c:39: 未定义对 `__aeabi_uidiv' 的引用/media/data/Projects/arm/uart/main.c:40:未定义对“__ ..
发布时间:2022-01-17 14:11:51 其他开发

ARMv4/5/6 代码的哪些部分不适用于 ARMv7?

据我了解,ARMv7 处理器(例如 Cortex-A9)大多向后兼容旧 ARM 架构版本的代码.但是,我阅读了有关 尝试在 Cortex-A8 上运行 ARM9 代码 的报告,例如. ARMv4/5/6 (ARM7TDMI/ARM9/ARM11) 代码的哪些部分不能在 ARMv7 处理器上运行?这些旧 ARM 架构版本中存在哪些功能或架构特征会导致为这些版本构建的程序在 ARMv7 上失败? ..

恐慌:缺少“arm"CPUS 的仿真器引擎程序

我遇到了与下面链接中提到的相同的问题.但是这个问题已被搁置,我仍在寻求解决方案.https://stackoverflow.com/questions/27146511/panic-缺少-emulator-engine-program-for-arm-cpus-eclipse 所以我想在这里提出问题并提出问题.直到昨天,模拟器工作正常.但是从今天开始,我在尝试打开模拟器时收到以下错误 PA ..
发布时间:2022-01-17 14:11:15 Java开发

未定义对 __cxa_end_cleanup' 的引用

我正在尝试构建一个 C++ 项目,但是当它完成时会引发此错误: 对 __cxa_end_cleanup' 的未定义引用 使用的工具链是 ARM GCC 4.7.3,链接器自定义标志是: -mthumb -march=armv6-m -T .\Generated_Source\PSoC4\cm0gcc.ld -g -Wl,-Map,${OutputDir}\${ProjectShortName ..
发布时间:2022-01-17 14:10:37 C/C++开发

NEON、SSE 和交错负载与随机播放

我试图理解“Iwillnotexist Idonotexist"在SIMD optimization of cvtColor using ARM NEON intrinsics上发表的评论: ...为什么不使用映射到 VLD3 指令的 ARM NEON 内部结构?这样可以省去所有的改组,简化和加速代码.英特尔 SSE 实施需要 shuffle,因为它缺少 2/3/4 路去交错加载指令,但您不 ..
发布时间:2022-01-17 14:10:28 其他开发

由于 cpu 乱序执行或缓存一致性问题,是否需要内存屏障?

我想知道为什么需要内存屏障,我已经阅读了一些关于这个主题的文章. 有人说这是因为 cpu 乱序执行,而 others 说是因为缓存一致性问题导致存储缓冲区和队列失效. 那么,需要内存屏障的真正原因是什么?cpu乱序执行还是缓存一致性问题?或两者?cpu乱序执行和缓存一致性有关系吗?x86和arm有什么区别? 解决方案 当 ISA 的内存排序规则弱于您的算法所需的语义时,您需要屏障来排序 ..
发布时间:2022-01-17 14:10:21 其他开发

使用 C 的嵌入式应用程序中的 time() 函数存在问题

我在 ARM 微控制器上使用 time().处理器一达到此功能就会重新启动. 奇怪的是,当我处于调试模式时,代码运行良好,但一旦我想在独立模式下应用它,我就会遇到重置. 我是否忽略了什么?这个功能有替代品吗? 部分代码是这样的 #include #include 无效主要(无效){静态时间_t rawtime = 0;原始时间 = 时间 ..
发布时间:2022-01-17 14:10:05 其他开发

系统调用包装 asm C

有人可以向我解释一下这段代码吗?另外请给我一些链接/URL,我可以在其中了解更多信息?此代码用作包装器来覆盖我们库中的“extern int errno".有人可以解释一下这个函数,并告诉我为什么在某些系统调用中需要包装器吗?哪些也称为 WeakSYSCALLS? #define ASM_ARGS_1 ASM_ARGS_0, "r" (_a1)#define ASM_ARGS_2 ASM_ARG ..
发布时间:2022-01-17 14:09:58 其他开发