问题标签 [cortex-m3]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1198 浏览

malloc - 为什么 malloc 只在刷完 cortex-m3 后立即起作用?

我正在尝试使用在 cortex-m3(裸机)上运行的 newlib 的 malloc 动态分配内存,我遇到了一个令人困惑的问题。刷新设备后,malloc 和 free 立即按预期工作。但是,一旦我重置设备 malloc 只返回 NULL。除 malloc 外,其他一切都有效。关于什么可能导致这种行为的任何提示?

这是我的链接器脚本:

这是来自我的内存映射:

当 malloc 成功时,它从 0x10000d48 开始分配。

0 投票
4 回答
51699 浏览

gcc - arm gcc 工具链作为 arm-elf 或 arm-none-eabi,有什么区别?

当您构建 gcc 工具链时,可以将其构建为 arm-elf 或 arm-none-eabi,但有什么区别?

我今天使用 eabi,但这只是因为其他人似乎都这样做......但因为这是一个非常糟糕的论点,所以理解其中的区别会非常好。

注意:此工具链将为基于 Cortex-M3 的 mcu:s 交叉编译代码,例如 stm32。

谢谢


一些链接

EABI:

精灵:

0 投票
1 回答
9134 浏览

gcc - 内存映射的 gcc 链接文件,那是什么语法?

当使用 gcc 为 MCU 进行交叉编译时,您需要向链接器提供链接器脚本文件,以便它知道如何创建最终目标文件。

我想了解有关此类文件的更多信息,但找不到关于这些文件如何工作、它们使用何种语法、最佳实践以及应避免什么的好教程。

下面是一个精简链接文件的示例,它将使用“-Tlinkfile.ld”选项提供给链接器:

/谢谢

0 投票
1 回答
1527 浏览

c++ - LPC1700 不会从深度睡眠中唤醒

我在LPC1754、59和 68 + FreeRTOS + CMSIS 上运行固件。

我希望能够将微控制器置于可能的最低功耗模式,但是:

  1. “睡眠”是不够的。
  2. 一旦微控制器处于“深度睡眠”、“断电”或“深度断电”状态,我就无法再通过按下按钮 (EINT3) 来唤醒它。

据我在“ LPC17xx 用户手册”(第 58、59 页)中阅读的内容,我应该能够从 EINT3 唤醒到“断电”模式。

我错过了什么?低功耗时是否产生中断?怎么讲?我应该做任何特定的事情来生成它吗?

  • 为了简化起见,我从内部 RC 运行,所以 PLL 勘误表不是问题。

编辑:

  • 事实上,我正在对 P2 中的几个引脚使用“GPIO 中断”,而这些引脚又与 EINT3 共享。EINT3 引脚本身 (P2.13) 未被使用。请参阅下面的评论。
0 投票
2 回答
1176 浏览

migration - 寻找带有 AES 的 MCU。从 STM32F107 移植

我正在寻找基于 ARM Cortex-M3 的微控制器。MCU 应具有 AES 加速器、SPI、(至少 3 个)USART、USB OTG。我正在从 STM32F107 迁移(我迁移的原因是因为我需要硬件的 AES)有什么好的建议可以节省我在迁移过程中的时间吗?我一直在寻找 ST 和 ATMEL 的网站,但我没有找到具有我需要的特性的网站。

提前致谢。

0 投票
2 回答
983 浏览

embedded - 加载时间基地址 cortex-m3 裸机

我正在开发一个带有裸机环境的 cortex-m3 CPU 项目。由于软件升级需要,CPU 上的可执行映像可能位于闪存中的两个地址之一,这会带来问题。映像的起始地址仅在加载时才知道,而在静态链接期间不知道。我不太确定,但我认为这并不真正符合动态加载的条件,但我在这里真的可能被误认为,因为我不是这方面的专家。有没有办法编译和链接图像,因为它的基地址只能在加载时给出,因为没有操作系统也没有动态加载器?

0 投票
1 回答
2434 浏览

eclipse - Eclipse/OCD 中的 LPC17xx 调试问题

我会尽量做到完整和具体:

恩智浦 LPC1756 Cortex-M3。Eclipse Helios 使用 Codesourcery ARM 工具链和 OpenOCD 进行调试。JTAG 是 Olimex ARM-USB-OCD。操作系统是 Windows 7 64 位。

我相信我现在已经解决了闪存上传方面的问题。编程后,我让脚本执行 dump_image 并且转储的图像看起来大致正确。目前我有验证问题需要解决,但在这个阶段,我的 JTAG 设置似乎正在工作,并且我正在与 '1756 成功通信。

但是,当我尝试调试时,我遇到了问题。首先,我的 cfg 文件,从我的目标设备 cfg 文件开始:

现在,我的调试 cfg 文件:

在 Eclipse 中,我使用以下标志调用此工具:

这似乎工作正常(至少我似乎没有在控制台中收到任何错误)。现在是我遇到问题的部分:

我在 GDB 硬件调试下的 Eclipse(运行 > 调试配置...)中创建了一个调试配置。相关参数为:

(注意:我已将 pc 设置为 0x00001278,因为那是我的 Reset_Handler 的地址;我知道它应该是 0x00000004 但我正在试验;当它是 0x00000004 时,我遇到了同样的问题......)

当我尝试使用此设置进行调试时,我收到一条消息“GDB 硬件调试暂停”,PC 似乎位于引导加载程序 0x1FFF0080 并且我的调试器似乎不再连接。在控制台中,我看到如下内容:

例如,在反汇编窗口中,我可以搜索并找到诸如“main”或“Reset_Handler”之类的东西,但反汇编全是“movs r0, r0”——基本上都是零。我不能单步执行(显然,挂起......)即使在 0x1fff0080 它显示“movs r0,r0”。我似乎能够读取 CPU 寄存器(例如,sp 显示 0x10001ffc 和 pc 显示 0x1fff0081 所以也许JTAG接口没有死……)

我闪现的图像应该在 0x00000000(即那里的向量表)。当我执行 dump_image 时,似乎设备编程并且向量表条目看起来正确。代码保护?如果是这样,我怎样才能做一个明显成功的“转储+图像”?

但是,即使在未连接 JTAG 的情况下插入设备也会导致无法操作。我已经看到与 LPC1768 类似的帖子,但没有找到任何适合我的帖子。非常感谢任何意见或建议。

0 投票
4 回答
31592 浏览

linux - 如何在 ARM Cortex M3 板上运行 linux?

我有一个 Luminary LM3s8962 ARM Cortex M3 开发板,虽然我已经能够使用 Keil RTOS 对其进行编程,但我更喜欢在 linux 和嵌入式 libc 之上进行开发。我想知道的是我如何才能在我的板上实际获得 linux 内核以及我的应用程序和依赖项?它有一个 SD 插槽,我可以创建某种文件系统映像并使用引导加载程序对电路板进行编程吗?我必须自己编写引导加载程序吗?我完全不知道从哪里开始。我研究了 yocto 项目,但我仍然不知道如何实际处理数兆字节的内核和文件系统映像文件并让我的板运行它们。

0 投票
2 回答
5665 浏览

gcc - 用于 Cortex-M3 的 CMSIS 库中的数据内存屏障 (DMB)

在 gcc 的 CMSIS 定义中,您可以找到如下内容:

我的问题是:如果内存屏障不在clobber 列表中声明“内存”,它有什么用?

是 core_cm3.h 中的错误,还是 gcc 在没有任何额外帮助的情况下应该正确运行的原因?

0 投票
1 回答
1088 浏览

arm - Cortex M3 上的嵌入式 uclinux 占用空间

我在这个问题上遇到了麻烦,有人(希望是错误的)将上一个问题移到了 Unix/Linux 列表中,其中 uclinux 标记的问题为零。这更像是一个嵌入式linux问题..

我对 uClinux 的足迹有疑问。我环顾四周寻找需求细分,网上没有很好的信息。感兴趣的模块是:

核心内核 TCPIP 堆栈串行驱动程序 DHCP WiFi 支持(供应商提供的任何堆栈都可以) 我正在寻找 RAM/Flash 故障。我不需要文件系统,但是由于 Linux 的驱动程序模型,我有可能需要它。

额外问题: - 将驱动程序从 Linux 移植到 uClinux。我知道内存架构是不同的。考虑到驱动程序没有做任何特殊的内存,我可以重新编译驱动程序并期望它在 uClinux 下工作吗?