首页 文章
  • 16 votes
     answers
     views

    在字对齐处理器上使用未对齐数据的最快方法?

    我正在ARM Cortex M0上做一个项目,它不支持未对齐(4字节)访问,我正在尝试优化未对齐数据的操作速度 . 我将蓝牙低功耗访问地址(48位)作为6字节数组存储在一些作为数据包缓冲区的打包结构中 . 由于打包,BLE地址不一定从字对齐的地址开始,并且在优化我对这些地址的访问功能时遇到了一些复杂问题 . 第一种也是最明显的方法是对数组中每个字节单独运行的for循环 . 例如,检查两个地址是否相...
  • 0 votes
     answers
     views

    一个二进制在断点处停止,另一个不在 - 没有定义断点

    我正在尝试在STM32F401xB上运行Rust Hello World . 我有一个工作的C程序用于比较(不同的功能,但它验证闪烁的工具链)并使用相同的openocd命令将两个程序闪存到控制器上 . 当我刷C程序时,我得到: ... ** Verified OK ** adapter speed: 2002 kHz 当我刷新Rust程序时,我得到以下内容: ... ** Verified OK...
  • 0 votes
     answers
     views

    来自SP的ARM Cortex-M0负载偏移量

    我必须为项目编写一些ARM Cortex-M0汇编代码并遇到一个我似乎无法解决的问题/弄清楚它为什么会发生 . 有一条指令以某种方式使程序崩溃,如果我将它注释掉,函数返回,否则它会挂起 . 这是破坏我早晨的代码行: /* Get start address: preceded by 8 backup, 3 state, 1 addr reg. */ ldr r0, [sp, #(4 * 11 + ...
  • 2 votes
     answers
     views

    ARM Cortex-M4:从外部闪存运行代码

    是否可以在ARM Cortex-M4架构(例如STM32 F4)上分离基本FW和应用程序代码 . 我想做的是从外部闪存运行应用程序和从内部闪存基础FW . 应用程序都实现相同的“API”(单头文件),但功能不同 . 想法是基础FW提供驱动程序,引擎和UI,并且可以独立工作 . 应用程序将在需要时为FW提供额外的功能 . 由于所有应用程序的总代码大小对于内部闪存而言太大,因此无法在内部闪存上刷新所有...
  • 6 votes
     answers
     views

    了解ARM Cortex-M微控制器的linkerscript

    我正在使用STMicroelectronics的STM32F746NG微控制器 . 该器件基于ARM Cortex-M7架构 . 我花了很多时间来理解示例项目中的linkerscript . 我想出了基础知识,但我仍然无法掌握它的大部分内容 . 请帮我理解那些部分 . linkerscript的开始 linkerscript开头如下: /* Entry Point */ ENTRY(Reset_H...
  • 2 votes
     answers
     views

    我可以在Atmel SAM E70处理器中使用“指令”TCM来获取数据吗?

    我正在为Atmel SAME70Q21微处理器开发一个应用程序 . 该MCU具有ARM Coretex-M7内核 . Atmel在这种特殊的MCU变体中实现了ARM TCM(紧耦合存储器) . Atmel似乎将TCM分为两部分“ITCM”(指令TCM)和“DTCM”(数据TCM) 我目前正在使用DTCM进行快速存储,通常来自中断 . 但是,ITCM目前实际上已关闭,尽管TCM的配置系统仍然会为其...
  • 5 votes
     answers
     views

    在ARM Cortex-M3上编写一个简单的C任意代码执行漏洞?

    我正在尝试用C语言编写一个概念证明,它演示了ARM Cortex-M3上堆栈中内存缓冲区的代码执行 . 这将有助于证明正确使用ARM MPU可以防止此类攻击 . 我想一个快速而肮脏的方法来将一些代码放入堆栈中是从常规函数中复制它然后使用goto跳转到它,如下所示: static void loopit(void) { printf("loopit\n"); wh...
  • 0 votes
     answers
     views

    CMSIS for Cortex-M1

    可悲的是,我被迫使用和模糊基于ARM Cortex-M1内核的微控制器 . 我刚刚发现最新的CMSIS(5.2)不支持它,官方CMSIS docs这样说: CMSIS支持全系列的Cortex-M处理器(Cortex-M1除外)和ARMv8-M架构(包括安全扩展) . 我猜Cortex-M1不是很受欢迎 . 但是如果没有CMSIS,我该怎么办?我的供应商提供支持包,奇怪的是包含该核心的CMSIS...
  • 0 votes
     answers
     views

    什么是ARM cortex m0 / m0中的可中断可重启指令

    我目前正在阅读ARM网站上的ARM Cortex M0用户指南,如下所示http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0662b/CHDBIBGJ.html 在用户手册中,提到以下段落: Interruptible-restartable instructions可中断可重启指令是LDM,STM,PUSH,POP,并且...
  • 0 votes
     answers
     views

    ARM Cortex M3 / M4架构中的代码和SRAM区域集成[暂停]

    我知道在ARM Cortex M3 / M4架构中,处理器使用代码和SRAM区域来执行程序 . 但有时它集成了Code和SRAM区域 . 任何人都可以向我解释这种集成的可行性和原因是什么? 请举例说明:为什么需要整合这两个区域?在架构上,代码区域是只读的ROM,而RAM提供读/写访问 . 如果我们尝试写入这个集成的代码区域,这种安排似乎可能导致分段错误 . 对于集成的代码区域,我们必须做些什么? ...
  • 7 votes
     answers
     views

    声明抽象类(纯虚方法)会大幅增加二进制大小

    以下是故事:我正在使用AC6 Toolpack为Linux中的ARM Cortex-M0处理器开发C软件 . 在我使用Keil(在windows中)(拥有自己的工具链)之前,我已经迁移到GNU-toolchain((GNU Tools for ARM Embedded Processors)5.2.1) . 我意识到的第一件事是;二进制文件大小大幅增加 . I have tested ever...
  • 2 votes
     answers
     views

    ARM Cortex M4 - 当PRIMASK设置为1时,SysTick中断请求会发生什么?

    我正在学习RTOS,我正在谈论信号量 . 这本书实现了自旋锁信号量,但是我无法理解SysTick会发生什么,它用于实现上下文切换 . void OS_Wait(int32_t *s){ while( (*s) == 0 ) { EnableInterrupts(); //Does SysTick "wait" until this line? ...
  • 0 votes
     answers
     views

    Cortex M3 - Systick NVIC禁用 - 节能FreeRTOS

    我在EFM32GG380F1024上使用FreeRTOS . Cortex M SysTick用于RTOS滴答,低功耗rtc(BURTC)在睡眠期间用于生成定时唤醒呼叫 . 能量模式是EM3(仅超低频仍在运行) . 一旦Freertos用“suppressTicksAndSleep”回调给我打电话,我就会这样做: 通过调用"__disable_irq()"输入Critic...
  • 0 votes
     answers
     views

    重写手臂皮质m4 nrf52的局部闪光中变量的初始值

    我想在闪存中有一个变量,它将在复位后保留我想要的值 . 我知道像这样的变量 int test_data = 3 存储在闪存的.data部分,然后在运行时复制到RAM . 我想在运行时修改存储在闪存中的值以获取变量test_data,以便在下次重新启动时它将加载不同的默认初始化值 . 我知道可以在运行时写入CPU闪存,但我不知道如何在闪存中找到test_variable的地址 . 你能给我一些这方面...

热门问题