10得票2回答
ARM休眠模式进入和退出的差异:WFE,WFI

我对ARM架构还比较陌生,正在努力理解唤醒机制。 首先我发现很难找到有关这方面的好资料。ARM的文档在这个主题上似乎非常简略。 我想了解的是Cortex(特别是M0,因为我正在使用它)何时会被唤醒。 供参考,我还查阅了以下内容: WFI和WFE指令以及事件信号的目的是什么? 为什么使...

10得票3回答
ARM Cortex-M4上未对齐访问导致错误

我有一个对象,它的地址不是4字节对齐的。当有一个STR指令保存2个寄存器时,这会导致CPU出现HardFault错误。 这是生成的代码: 00000000 <_ZN8BaseAreaC1EPcmm>: 0: b510 push {r4, l...

10得票1回答
STM32F030启动时出现硬件错误,__libc_init_array。

我正在尝试使用arm-none-eabi-gcc和Makefile编译STM32Cube项目。 我已经指定了: CFLAGS = -mthumb\ -march=armv6-m\ -mlittle-endian\ -mcpu=cortex...

10得票3回答
在Cortex-M上,在中断服务程序(ISR)内切换上下文

我正在尝试使用CodeSourcery GCC工具链为Cortex-M编写一个简单的轮询调度器。我的调度器使用SysTick在时间片到期后触发中断,并在中断服务程序中进行上下文切换。为了保持简单,我只使用主堆栈指针(MSP)来处理所有事务。 我在确定如何在Cortex-M3上加载新上下文方面...

10得票3回答
为什么我的Cortex-M4汇编代码运行速度比预期慢?

我正在为Cortex-M4编写一些汇编代码,具体来说是在STM32F4DISCOVERY套件中找到的STM32F407VG。 这段代码对性能要求非常高,所以我希望尽可能地提升每一个周期。我已经使用Cortex-M4中可用的DWT周期计数器进行了基准测试,对于某个特定大小的输入,它运行在149...

9得票1回答
Ubuntu: 在为STM32(Cortex-M3)进行交叉编译时,应该使用哪个gcc?

我正在尝试开始使用STM32(Cortex-M3),我的计划是在Ubuntu(9.04 / AMD64)上使其工作。 首先,我购买了Olimex stm32-h103扩展板和Olimex ARM-USB-OCD jtag,并且还打算使用OpenOCD、gcc和Eclipse。 但是现在我正...

9得票2回答
ARM拇指模式4字节指令

拇指模式指令占用2个字节,而ARM模式指令占用4个字节。 截图显示的是拇指模式指令的反汇编结果。 为什么我会看到4个字节的指令和2个字节的指令混合在一起? 有人能解释一下吗? 提前感谢您的帮助。

9得票2回答
在Linux上进行ARM开发

我已经购买了德州仪器的Tiva C系列LaunchPad TM4C123G评估套件。该套件包含一个带有ARM Cortex M4F微控制器的小型PCB板。现在我想开始为这个微控制器编写软件。我习惯于使用Windows上的AVR Studio来编程AVR 8位微控制器。我听说在Linux上编程基...

9得票3回答
ARM Cortex M0/M3/M4:为什么Thumb状态下PC始终为偶数

据我所知,ARM Cortex-M处理器总是处于Thumb状态,这意味着: 当程序计数器为奇数时(LSB=1),表示处于Thumb状态。跳转到偶数地址会引发异常,因为不允许切换回ARM状态。 然而,在使用CortexM0和M4处理器时,PC始终为偶数。每次分支时,LR记录PC + 1,每次...

9得票3回答
使用标准GCC编译ARM Cortex M3?

可以使用原始的GCC和--target开关来编译ARM Cortex M3(LPC1768)的C/C++代码吗?还是需要编译GCC、binutils等工具才能实现这一点?