arm 相关问题

此标记用于与ARM(高级RISC机器)系列计算机相关的问题;这是在ARM处理器内核上运行的机器或电子设备或使用ARM内核的系统。

为什么寄存器发生变化,ARM中的标志位不受影响?

所以我遇到这个问题 ANDS R1、R2、R3 并假设标志最初是 N=0 Z=0 C=0 V=1 Q=0 R1:0000C5BFH R2:0000A0F9H R3: 是 00000000 H 我必须检查

arm
回答 1 投票 0

mac 中的 g++ 给出“重复符号错误”

我有一个.o文件,当我更新几次并编译时,出现错误: 重复符号“__ZlsRSoRKSt6vectorIiSaliEE”位于:/var/folders/q3/ykn_sbq97hn6cn73_40jlhrc0000gp/T//ccvDBwwZ.o t1.o

回答 1 投票 0

ARM微控制器上的RTOS:为什么我们在上下文切换时保存寄存器R4-R11的状态

我想知道为什么 ARM 微控制器 RTOS 上的每个课程和资源都要求在上下文切换时保存寄存器 R4 至 R11 的状态。 对于与上下文无关的中断

回答 1 投票 0

无法在 m1 mac 上安装 jekyll (eventmachine)

我是 iOS 开发的真正新手,想创建一个新的 GitHub 博客。 我正在关注如何在 Apple M1 Macbook 上安装 jekyll 作为参考。 我尝试在我的 M1 Pro Macbook 上安装 Jekyll ...

回答 4 投票 0

如何在树莓派汇编语言中使用“printf”

printf 对可以打印的值的数量有限制吗? 这是我的代码。 。数据 .balign 4 字符串:.asciz“ %d %d %d %d ” 。文本 .全局主 .extern printf 主要的: 脓...

回答 1 投票 0

neon指令集中vfmaq_f32和vmlaq_f32有什么区别,以及运行速度和精度上的区别

你好,neon指令集中vfmaq_f32和vmlaq_f32有什么区别,运行速度和精度有什么区别 在 macOS ARM64 上,代码运行一致 #包括 你好,neon指令集中vfmaq_f32和vmlaq_f32有什么区别,运行速度和精度有什么区别 在 macOS ARM64 上,代码运行一致 #include<arm_neon.h> #include<iostream> using namespace std; int main(){ float a = 12.3839467819; float b = 21.437678904; float c = 4171.42144; printf("%.17f\n",a); printf("%.17f\n",b); printf("%.17f\n",c); printf("%.17f\n",a+b*c); float32x4_t a_reg = vdupq_n_f32(a); float32x4_t b_reg = vdupq_n_f32(b); float32x4_t c_reg = vdupq_n_f32(c); float32x4_t res_reg = vfmaq_f32(a_reg, b_reg, c_reg); float res[4] = {0.f}; vst1q_f32(res,res_reg); printf("%.17f\n",res[0]); res_reg = vmlaq_f32(a_reg, b_reg, c_reg); vst1q_f32(res,res_reg); printf("%.17f\n",res[0]); res_reg = vmulq_f32(b_reg, c_reg); res_reg = vaddq_f32(res_reg, a_reg); vst1q_f32(res,res_reg); printf("%.17f\n",res[0]); return 0; } vfmaq_f32 定义为单个融合操作,而 vmlaq_f32 can 通过乘法然后累加来实现。 我想到了两种解释。首先,在某些时候,融合版本(FMLA指令)可能是可选指令(我不知道什么时候,而且我有点懒得去挖掘真正旧的文档)。第二种可能性似乎更有可能,那就是融合版本在某些时候可能会慢一些。 如今,编译器看起来几乎只是将两者编译为相同的指令,因此它实际上是一个别名,但如果您想要准确性,您可能仍然应该使用vfmaq_f32,但如果您对速度更感兴趣,则vmlaq_f32 .

回答 1 投票 0

Mac ARM 上的 Qt 6 Clang 缺少框架

我正在尝试使用 QtCreator 中的 Qt 6.5.3 为 Mac ARM 构建 C++ Qt 项目,并在构建时出现以下 2 个错误: clang:错误:没有这样的文件或目录:'/System/Library/Frameworks/

回答 1 投票 0

arm-none-eabi-gcc(mac) 中没有“stdint.h”

我正在使用 stm32f3 开发板,遇到错误 /opt/homebrew/Cellar/arm-none-eabi-gcc/13.2.0/lib/gcc/arm-none-eabi/13.2.0/include/stdint.h:9:16:致命错误:stdint.h:没有这样的文件或目录...

回答 1 投票 0

ARMv8中RET指令的嵌套使用

令label1、label2为两组指令,均以RET指令结尾,并且label2通过链接分支到label1。换句话说,我们有一个看起来像这样的代码(我会

回答 1 投票 0

关于进位标志的 ARM 文档的混乱

在 ARM 文档中,它说: 发生进位: ...如果减法结果为正或零... 我从这个答案中知道,当

回答 3 投票 0

ARM 汇编嵌套循环

我是 ARM 汇编语言的新手,我知道如何制作一个简单的 for 循环,但是,当我尝试将概念应用于嵌套循环时,我对如何设置它感到非常困惑。我想知道是否有...

回答 3 投票 0

Raspberry Pi 4/BCM2711 外设基址在文档中与硬件不同

在bcm2711-peripherals.pdf中,第6页指出: 在 32 位模式下运行时,ARM 使用 LPAE 模式使其能够访问完整的 32GB 地址空间。 物理地址范围从

回答 1 投票 0

如何获取 ARM/Linux 机器上的 CPU 时钟频率

我想答案似乎很明显,但 https://superuser.com/questions/406141/how-to-get-an-arm-cpu-clock-speed-in-linux 中给出的可能答案都不适用大部头书。 猫 /proc/cpuinfo

回答 1 投票 0

ARM 汇编 - 在一个文件中编写多个函数

我正在上ARM处理器的课程,我们正在做一些汇编代码。我并不是要求为我编写代码,而是要求更多的文件格式问题。任务是创建简单的

回答 1 投票 0

在未经优化的编译时,为什么不将调用函数的所有参数存储到堆栈中,而是使用寄存器R0~R3?

既然我们要把所有形参存入栈,为什么编译器在调用函数时不将它们压入栈,而是将前4个参数存入R0~R3呢? 输入图片

c arm
回答 2 投票 0

为什么不将所有形式参数存入堆栈,而是将少于4个参数存入R0~R3?

既然我们要把所有形参都存入栈,为什么编译器在调用函数时不将形参压入栈,而是将少于4个的参数存入R0~R3呢? 在此输入图像描述 ...

c arm
回答 1 投票 0

构建ARM64二进制文件时如何忽略gotvm

我想构建我的 Go 存储库,以便在 GOARCH=arm64 时忽略 myrepo/gotvm/* 并在任何其他情况下构建完整的存储库。 项目文件夹结构如下: └── myrepo ├── go.mod ...

回答 1 投票 0

Rbenv 构建失败(Raspbian 11 使用 ruby-build 20230717-7-gf170c16)

我正在尝试在树莓派 4 上安装 ruby 3.2.2。我使用 GitHub 存储库、git 克隆方法遵循了所有步骤,但是当我到达 rbenv install 3.2.2 时,我得到了我认为是的...

回答 1 投票 0

什么版本的 Clang 和 GCC 支持 SHA-512 和 SHA-3 ACLE 内在函数?

在网上很难找到这些信息。还有人知道吗

回答 1 投票 0

在 keil uVision for LPC2148 逻辑分析仪上找不到我的信号

我正在尝试在keil上为lpc2148运行我的PWM程序。占空比为 10%。但是,我可以在 Port0 (P0.21) 上看到信号。 这是我的代码。我非常有信心这是正确的。 #包括 我正在尝试在keil上为lpc2148运行我的PWM程序。占空比为 10%。但是,我可以在 Port0 (P0.21) 上看到信号。 这是我的代码。我非常有信心这是正确的。 #include<lpc214x.h> int main() { PINSEL0=0x00000000; // P0.0 to P0.15 pins of PORT0 as GPIO PINSEL1=0x00000400; // P0.21 Pin of PORT0 as PWM PINSEL2=0x00000000; // P1.16 to P1.31 pins of PORT1 as GPIO /*Configure the PLL block and set the CCLK and PCLK at 60 MHz */ PLL0CON=0x01; PLL0CFG=0x24; PLL0FEED=0xaa; PLL0FEED=0x55; while (!(PLL0STAT & 0x00000400)); PLL0CON=0x03; PLL0FEED=0xaa; PLL0FEED=0x55; VPBDIV=0x01; /* Setup and initialize the PWM block */ PWMPCR=0x00; // Single Edge PWM Mode PWMPR=60000-1; // Resolution of PWM is set at 1 mS PWMMR0=10; // Period of PWM is 10 mS PWMMR5=1; // Pulse width of PWM5 is 1 mS PWMMCR= (1<<1); // PWMTC is reset on match with PWMMR0 PWMLER= (1<<5)| (1<<0); // Update Match Registers PWMMR0 and PWMMR5 PWMPCR= (1<<13); // Enable PWM5 output PWMTCR= (1<<1); // Reset PWM TC and PWM PR PWMTCR= (1<<0)| (1<<3); // Enable PWM Timer Counters and PWM Mode //PWMMR5 = 1; //PWMLER = (1<<5); //Update Latch Enable bit for PWMMR5 } 请帮忙。 Keil 调试器的“逻辑分析器”工具通过 SWO 跟踪监视特定的“全局”变量。您的代码没有全局变量,并且您没有说明您正在监视的内容。 在实际硬件上仅可以监视全局变量。外设寄存器和 I/O 引脚只能在仿真中进行监控,如 https://www.keil.com/support/man/docs/uv4/uv4_db_dbg_logicanalyzer_restrictions.htm 要获得跟随 PWM 的跟踪,您需要实现一个 PWM 中断处理程序,该处理程序要么将输出引脚的状态复制到全局变量,要么(更好)读取 PWMIR 寄存器并将其复制到全局变量,然后/或将全局设置为由 PWMIR 寄存器推断的状态。然后你监视全局变量而不是直接监视引脚。例如: volatile bool pwmout = 0 ; volatile bool pwmmatch = 0 ; __irq void PWM_ISR( void ) { pwmmatch = PWMIR ; if( (PWMIR & 0x0001) != 0 ) // MR0 = 1 { pwmout = 1 ; } else if ( PWMIR & 0x0020 ) // MR5 = 1 { pwmout = 0 ; } PWMIR = 0 ; // clear interrupt VICVectAddr = 0x00000000; } 然后您可以在逻辑分析仪中监控 pwmout 和/或 pwmmatch。我不熟悉您的特定微控制器,因此上述内容可能需要一些调整。显然,您还需要启用中断处理程序 - 例如: VICVectAddr0 = (unsigned) PWM_ISR; /* PWM ISR Address */ VICVectCntl0 = (0x00000020 | 8); /* Enable PWM IRQ slot */ VICIntEnable = VICIntEnable | 0x00000100; /* Enable PWM interrupt */ VICIntSelect = VICIntSelect | 0x00000000; /* PWM configured as IRQ */ 但我只是复制现有的示例 - 不保证。 最后在main()的末尾添加一个无限循环以防止main()终止到谁知道在哪里:for(;;) { // do nothing } 是的,代码是正确的,但是要使用Keil逻辑分析仪观察波形,您需要指定正确的端口引脚符号。您应该使用 “PORT0.21”,而不是使用 “P0.21”。

回答 2 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.