【发布时间】:2019-09-15 18:01:27
【问题描述】:
我们有一个在 PIC24H 上运行的应用程序,我们想将它移植到另一个 MCU,最好是 ARM Cortex。应用程序对时间非常关键,这意味着我们需要极其确定的代码行为。简而言之,有通过特殊硬件获得的脉冲到 GPIO 引脚,数据立即被分析。数据处理并不复杂(我们不需要强大的 cpu/mcu 来完成它)。在分析数据后,GPIO 输出引脚被写入它们的值。
应用程序只需 3 行: 处理输入引脚 确定输入引脚处理中的模式 基于接收到的模式写入输出引脚
PIC24H 工作在 40MHz,我们可以在 25ns 内切换引脚,我们将不胜感激至少 2 倍的速度以供将来升级。因此,可以运行确定性代码并以至少 80MHz(12.5ns)的频率切换引脚的 MCU 就可以了。我们不需要以恒定的快速速率切换引脚,我们需要一个可以在 25ns 内切换的单片机。我们不能在切换时浪费循环,如果一个循环关闭,我们就会失去同步。一切都必须在一个周期精度(或两个但恒定的两个周期)内完成,因此代码应该是 100% 确定性的。
如果我遗漏了什么,或者我们需要的内容是否可以在 Cortex-M 上使用其他一些方法来完成,请告诉我。请记住,如果一个周期丢失(由于缓存或类似原因),我们会失去信号同步,应用程序将无法正常工作或根本无法正常工作。
谢谢! Br
【问题讨论】:
-
3 短行中的应用程序:1.) 处理输入引脚 2.) 确定输入引脚处理中的模式 3.) 基于接收到的模式写入输出引脚
-
除非您当前使用的硬件平台已经过时,否则为什么要更改?或者您的应用程序要求的其他部分是否需要更改硬件?请记住,创建新硬件(尤其是定制硬件)既耗时又昂贵。
-
除了系统时钟之外还有两个瓶颈:中断延迟和 GPIO 切换速度。我有点怀疑这两个加起来太小以至于在您当前的应用程序中可以忽略不计?如果是这样,您当前的延迟是多少以及您是如何指定它的。如果这是您“嗯”的地方,请忘记整个规范。
-
您需要 ARM 吗? FPGA?
-
嗯,我是 dsPIC 的 RTFM,你有“端口输出上升时间”,典型值为 5ns,最大 10ns。 “INTx 引脚高电平或低电平时间(输入)”最少 20ns。您的规范没有加起来,您当前的应用程序确实不在 25ns 内切换引脚。在考虑移植之前,直接在当前应用程序中获取时序规范。好吧,投资示波器……
标签: c performance assembly gpio cortex-m