7得票1回答
STM32的I-CODE和D-CODE总线

STM32文档指出,I-CODE和D-CODE总线连接到内部闪存。 I-CODE总线用于获取指令,而D-CODE总线用于在代码存储区域(字面量加载)中访问数据。 问题是为什么要使用两个独立的总线?它们能够同时并绝对独立地访问闪存吗?

7得票2回答
在Cortex-M3的CMSIS库中,数据内存屏障(DMB)

在gcc的CMSIS定义中,你可以找到类似这样的内容: static __INLINE void __DMB(void) { __ASM volatile ("dmb"); } 我的问题是:如果内存屏障在clobber列表中没有声明"memory",那么它有什么用处? 这是core_c...

7得票2回答
CLion中的GDB监视器命令

我正在尝试使用远程GDB调试嵌入式项目。我的系统如下: 目标:ARM Cortex M0。 SEGGER J-Link GDB服务器V6.10命令行版本。 arm-none-eabi-gdb 7.10.1.20160616-cvs。 CLion 2016.2.2,Build #CL-162...

7得票4回答
在内部闪存存储器中对C结构进行对齐

我有一个配置结构,我想保存在ARM Cortex M3的内部闪存中。 根据规格说明,保存在内部闪存中的数据必须对齐到32位。 因为我的结构中有很多布尔值和字符,我不想使用32位来存储8位...我决定使用__packed预处理器指令来压缩结构。然后,当我将其作为整个结构保存时,我只需要确保结构的...

7得票2回答
ARM汇编:绝对值函数:两行还是三行更快?

在我的嵌入式系统课程中,我们被要求将给定的 C 函数 AbsVal 重新编码为 ARM 汇编语言。 我们被告知最好的解决方案是三行代码。我决心找到一个两行的解决方案,最终也确实找到了,但是我现在的问题是我是否真的降低了性能或提高了性能。(特别是在 Cortex-M3 上。) C 代码: u...

7得票2回答
理解这部分ARM汇编代码

.syntax unified .thumb .cpu cortex-m4 .arch armv7e-m .fpu fpv4-sp-d16 /* Changes from unprivileged to privileged mode. */ .thumb_func .section ...

7得票2回答
关于链接脚本的创建和验证的建议

长话短说。我希望学习如何创建一个好的链接脚本,这样如果我改变平台/架构/供应商,我就不会再陷入彻底不知所措的困境了。对于任务的难度,我并不担心太多,更关注的是理解它。 我已经开始了一个类似于 项目 的事情,为在STM的32位Cortex-M3芯片上进行编程和开发创建一个基础或框架。借助 js...

7得票1回答
Cortex M - 禁用 IRQ 的原子性

我花了几个小时来寻找答案,但是没有得到令人满意的答复。 由于ARM Cortex-M内核没有任何指令可以读取全局中断屏蔽状态(PRIMASK寄存器)并立即禁用它,因此所有框架都使用以下两条指令的序列: mrs r0, PRIMASK ; Read current state cpsid i...

7得票2回答
ARM Cortex-M上的Linux内核:如何构建正确的可执行文件

我需要为Cortex-M MCU构建完整的Linux开发框架,具体来说是STM32F7 Cortex-M7。首先,我必须解释一些背景信息,请耐心阅读。 我已经使用croostool-ng 1.24下载并构建了一个gcc工具链,指定了armv7e-m架构和仅限thumb指令以及linux 4....

7得票3回答
在Cortex-M3上读取一个64位的volatile变量

我在一个32位的Cortex-M3 ARM控制器(STM32L1)上有一个64位整数变量,可以被中断处理程序异步修改。 volatile uint64_t v; void some_interrupt_handler() { v = v + something; } 显然,我需要...