问题标签 [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 投票
1 回答
4199 浏览

embedded - Cortex-M3 STM32F103 内核在闪存页擦除期间是否会因为 FPEC 繁忙且无法从闪存中获取更多指令而停止?

在 STM32F103 上,闪存页面的擦除需要 20 毫秒,在此期间内核停止。从 ST PM00042 Flash 编程手册中并不清楚内核在擦除闪存页时是否总是会停止,或者它是否只是因为指令流本身在闪存中(在我的项目中)而停止,而 FPEC(闪存接口)是忙,无法获取更多指令。

问这个问题的另一种方法是“从 RAM 运行我的闪存编程代码会避免闪存页面擦除停滞吗?”。

谢谢,

0 投票
3 回答
4803 浏览

embedded - “CPU 未停止”和“未找到 APB-AP”错误

当我使用 JTAG 将我的 C 代码加载到评估板时,它加载成功。但是,当我从 main() 执行代码时,我立即收到“CPU 未停止”错误,然后是“未找到 APB-AP”错误。

在出现此错误之前,我能够加载并执行与 USB 相关的代码。

我用谷歌搜索它并使用 JTAG 命令“rx 0”来重置目标,但它没有做任何改变。

我正在使用 ARM Cortex-M3 处理器、J-Link ARM V4.14d、IAR Embedded Workbench IDE。

感谢您的帮助。

0 投票
5 回答
13765 浏览

embedded - ARM Cortex M3 如何在硬故障前确定程序计数器值?

我有一个使用 STM32F103(ARM Cortex M3)的嵌入式项目,它在发布模式下偶尔会出现硬故障。作为恢复的一部分,我想从硬故障之前检索 PC 值并将其存储以供以后在电池供电区域进行调试。

如何确定发生硬故障时程序计数器的值?显然,PC 现在已设置为其在硬故障中断内的位置。

我应该去哪里看?它有正常模式寄存器组的地址吗?

谢谢!

0 投票
4 回答
7312 浏览

embedded - ARM Cortex M3 初学者需要的建议

我将很快通过官方培训(CPU 方面)踏上 ARM Cortex M3 的潮流。

现在,我之前做过一些 Arduino 和 AVR,并且有一些电子基础知识,但我主要是一名软件开发人员。我已经阅读了这里的大多数主题以及其他关于可用工具的相当多的主题,它们真的很有帮助。我需要的是将所有这些答案元素连接在一起。

我想为自己配备一个足够通用的入门套件,让我继续前进,并且至少可以让我尝试不同的硬件/软件组合(步进器、CAN-Bus、SPI 等)。我正在查看以下列表(请随时添加更多项目!):

  • 皮质 M3 芯片
  • 评估板
  • 工具链
  • JTAG 工具

对于芯片,我希望高端型号之一能够尝试一切。NXP LPC1768 似乎是一个不错的选择,但也需要考虑 STM 和 Stellaris。

目前该板的有趣候选者是 Keil MCP1760、STM3210E-EVAL,但我担心供应商锁定,因为我希望能够在单个板上尝试各种工具链。mBed 非常有吸引力,但由于它是在线编译器,所以不适合(除非也可以使用常规编译器)

对于 Toolchain,我对 IAR,Rowley Associates 有一种“感觉”。与开源相比,我更喜欢易于使用/做得很好,最好是可以在多个目标上使用的工具。

我真的需要 JTAG 单元吗?如果它看起来像一个“标准行业工具”,我至少想获得一些经验。这似乎是供应商锁定的另一个来源。我是使用我自己熟悉的外部设备还是只使用评估板上的设备更好?

基本上,在为上述类别选择获胜组合时,我需要帮助。是否有可能,或者我是否天真,应该考虑节省成本,因为我最终会购买一个?

谢谢你。

结果:我订购的:

我终于买了 Joseph Yiu 的“The Definitive Guide to the ARM Cortex-M3 (Embedded Technology)”,找到了一些针对 CortexM3 平台的培训(即将推出)并购买了 STMicro 套件:STM3210C-Eval,它内置了一堆传感器并且不是供应商锁定到特定的软件环境。我还购买了一些带有板载 JTAG 的 STm32vl-Discovery 板(来自 digikey 的 13 美元!)。我现在正在玩 Keil 的 uVision IDE 的评估版 (32K),我可以说我真的印象深刻!我能够在一天内重新构建 Discovery 的固件,将其加载回来,并使用调试器逐步完成它!

谢谢大家!

0 投票
1 回答
6845 浏览

arm - 基于 ARM Cortex M3 的 MCU 的示例代码?

更具体地说是STM32F107

我在 ST 的网站上几乎找不到任何代码,甚至找不到可下载的库(尽管我发现提到了一些表明它们应该存在的内容?)。这让我有点害怕,因为当有其他替代品时,我不想选择难以使用的处理器。(不过,此特定处理器满足所有其他要求,因此请不要将此解释为替代问题)

所以基本上我希望这里有人能指出我正确的方向。

我计划使用 Raisonance 工具集,它是免费的,但似乎仅限于 C。不过,C 和 C++(甚至纯汇编)示例都很棒。USB 示例特别令人感兴趣。

0 投票
4 回答
1746 浏览

gcc - 可以为 Cortex-M3 构建 Libffi 吗?

我正在尝试使用 GCC 为 Cortex-M3 处理器构建外部函数接口库。根据http://gcc.gnu.org/onlinedocs/gcc/ARM-Options.html

-mthumb
为 Thumb 指令集生成代码。默认使用 32 位 ARM 指令集。此选项根据 -mcpu=name 和 -march=name 选项自动启用 16 位 Thumb-1 或混合 16/32 位 Thumb-2 指令。该选项不传递给汇编器。如果你想强制汇编器文件被解释为 Thumb 代码,要么在源代码中添加一个 `.thumb' 指令,要么将 -mthumb 选项通过前缀 -Wa 直接传递给汇编器。

我尝试将各种不同的参数传递给汇编程序,但似乎无法弄清楚。典型输出如下:

构建文件:../source/ffi/sysv.S
调用:GCC Assembler
arm-bare_newlib_cortex_m3_nommu-eabi-gcc -Wa,-mthumb-interwork -I"/home/neil/m3projects/robovero/firmware/include"-o" source/ffi/sysv.o" "../source/ffi/sysv.S"
../source/ffi/sysv.S:汇编器消息: ../source/ffi/sysv.S:
145:错误:已选择处理器不支持 ARM 操作码
../source/ffi/sysv.S:147:错误:尝试在 Thumb-only 处理器上使用 ARM 指令 -- `stmfd sp!,{r0-r3,fp,lr}'
...

我可以在 Cortex-M3 上使用 libffi 而不成为组装专家吗?

可能值得注意的是,当我直接调用 arm-bare_newlib_cortex_m3_nommu-eabi-as 时,我得到了不同的错误。

0 投票
3 回答
14498 浏览

gcc - 使用标准 GCC 为 ARM Cortex M3 编译?

是否可以使用带有开关的 vanilla GCC 为 ARM Cortex M3 (LPC1768) 编译 C/C++ 代码--target,还是我需要编译 GCC、binutils 等来执行此操作?

0 投票
2 回答
3204 浏览

c++ - 使用 Codesourcery lite 工具链未托管的 LM3S8962 的 C++ 程序的链接器脚本?

有没有人有专门用于 Stellaris LM3S8962 板的链接器脚本,或者可以解释如何创建一个?我正在使用 codesourcery g++ lite 工具链,并且可以使用此链接器脚本成功地为托管环境创建 elf 文件:

这不适用于非托管库。我发现的所有示例都只适用于 C 而不是 C++,而且似乎涉及到一些关于 cs3 启动代码的魔法。任何帮助表示赞赏。

谢谢,迈克

0 投票
1 回答
2829 浏览

gdb - 为什么 cortex-m3 会在 gdb 中重置为地址 0?

我正在为 Stellaris LM3S8962 cortex-m3 芯片构建一个交叉编译工具链。我编写的测试 C++ 应用程序将执行一段时间然后出错。当我尝试访问内存映射的硬件设备时会发生故障。目前我的工作假设是我在启动序列中缺少一些必要的芯片初始化。

我想了解的是为什么 gdb 中的执行会停止并且程序计数器设置为 0?我在 0x0 处有向量表,但第一个值是堆栈指针。我不应该以我在向量表中指定的故障处理程序之一结束吗?

工具链基于 gcc、gdb、openocd。

0 投票
4 回答
24945 浏览

c++ - 如何使用 C++ 确定 ARM Cortex 的适当堆栈和堆大小

cortex M3 处理器启动文件允许您指定专用于堆栈和堆的 RAM 量。对于 c++ 代码库,是否有一般的经验法则或更明确的方法来确定堆栈和堆大小的值?例如,您会计算唯一对象的数量和大小,还是使用编译后的代码大小?