如何确定微处理器是否足够强大

电器工程 设计 成分 微处理器 组件选择 过程
2022-02-02 11:43:15

每个人都知道在 rasbperry pi 甚至 PC 上为嵌入式设备开发概念验证很容易,尽管在为您的产品选择微处理器时,很难确定您的选择是否能让您的概念发挥作用最佳。

我目前有一个媒体流项目成功地在树莓派上工作,尽管树莓派太大而且笨重,不适合作为终端设备。还声明终端设备是定制的。我很难对自己可以使用的处理器充满信心。

找出处理器是否足够强大以运行我的应用程序的好过程是什么?

基本上我的要求是:

  • 用于 WiFi 操作的 USB 主机或嵌入式 TCP/IP 堆栈
  • I2S/PCM 媒体协议
  • 用于外设配置的 I2C

找到具有这些特性的芯片非常简单。老实说,这再简单不过了。问题在于能够判断芯片是否足够快、处理和操作是否足够快。

我已经看了很多 LPC4337,我觉得它很合适,尽管开发环境给我带来了很多麻烦,因此我仍在四处寻找,这导致我选择了德州仪器的 CC3200 ,尽管该控制器仅以 80 MHz 运行,但我不确定这是否足以支持实时媒体流。

有哪些步骤可以确保处理器对我的应用程序足够比如我怎么知道 80 MHz 处理器是否足够好,或者我需要 204 MHz 甚至更高的处理器?

3个回答

这取决于你需要有多自信。我在航天工业工作,这通常是通过我们所说的“CPU、RAM、ROM 预算”来实现的。预算,无论是成本功率质量还是其他任何东西,都将您的流程分解为可管理的项目,您可以对其进行量化和总结以获得总体需求。然后,您采用一个取决于项目成熟度的安全系数,随着时间的推移而降低,以应对需求的增长。早期,它在很大程度上依赖于经验,然后随着时间的推移随着技术的选择而不断完善。

  • ROM比较简单。您知道堆栈/库/驱动程序在 ROM 内存中大概占用了多少:要么由作者给出,要么您无需上传即可编译。由于编译器优化,每次更改代码时,该数字都会发生很大变化。
  • RAM要复杂得多。专门的集成开发环境中的一些工具可以为您提供运行时估计,我可以看到如何做到这一点,但我不知道有任何通用工具 - 比如说,由 GCC 提供(有人知道吗?)。可悲的是,这听起来确实像是要计算代码中最大或分配最多的元素(考虑变量的生命周期)。
  • CPU 更复杂,取决于架构(CISC 或 RISC),MIPS(每秒百万条指令,与 CPU 时钟频率成正比)可能具有代表性,也可能不具有代表性。因为如果您手头有代码,您可以将最关键的部分分解为指令并根据时间要求计算所需的 MIPS。任何非禁用的中断都应该被认为是在那个时候被触发的——墨菲定律等等。

一旦你有线程(除非线程被手动分配给内核)和操作系统,上述内容就很难准确地确定调度程序何时启动。对于简单的微控制器代码,它应该是可管理的,但对于您的应用程序是否值得?

这只是我的参与:尽管我设计了集成系统,但我并不负责那些特定的预算(这对我来说是投入),而且我实际上非常有兴趣了解专家对此的故事。

附录:对于实时系统,通常更容易通过最大采样时间来评估系统对任务的充分性,这取决于整个工作流程中信息传输的延迟/延迟,以及每个任务所花费的最大时间任务样本。

我将把您的问题简化为“如何确定微处理器是否足够”?
您需要确定需要最快执行时间的流程/程序。如果您的处理器可以在给定的时间内执行所需的指令,或者更少,那么它就足够快了。
让我们看一个例子:您最快的要求是处理掉电中断;这需要在 10 毫秒内执行 10,000 条指令。您将需要一个至少具有 1 个 MIP 的 CPU。要将其转换为“MHz”,您需要知道每条指令的时钟周期数 (cci)。假设它是 10 cci,您的 CPU 需要以 10 MHz 或更快的速度运行。

如果您正在考虑降低 BOM 成本,有时那些深圳制造商会提供一些令人惊讶的报价。一个例子:Allwinner A10 比 Raspberry Pi 具有更多的计算能力和连接选项,但如果在您的设计中使用可能会更便宜。如果您考虑与 Pi 相同的成本,则 Allwinner A31s 的功能要强大 6-8 倍。