假设您正在启动一个具有某些已知功能的嵌入式项目。当您选择微控制器时,您如何选择需要多少RAM?
您是否使用开发板并首先编写项目代码,然后查看您使用了多少内存,然后选择适合该内存的合适微控制器?
您是否只是为原型选择一个功能强大的微控制器,然后在您拥有工作产品后缩小规模?
您是否只是选择一些您确信足够的东西,如果空间不足,只需升级到更高的内存密度,否则,您只需保留现有的微控制器?
什么被认为是好的做法?
假设您正在启动一个具有某些已知功能的嵌入式项目。当您选择微控制器时,您如何选择需要多少RAM?
您是否使用开发板并首先编写项目代码,然后查看您使用了多少内存,然后选择适合该内存的合适微控制器?
您是否只是为原型选择一个功能强大的微控制器,然后在您拥有工作产品后缩小规模?
您是否只是选择一些您确信足够的东西,如果空间不足,只需升级到更高的内存密度,否则,您只需保留现有的微控制器?
什么被认为是好的做法?
就个人爱好项目而言,我倾向于使用家族中功能最强大且占用空间合适的微控制器。然后我开发 PCB,编写一些代码并制作原型。
这样做的好处是我非常了解少数微控制器,因此我可以快速进行原型制作,而无需阅读整个数据表。我也有他们的分线板和代码模板。
如果它有效并且我制作的数量超过少数,那么我会购买最便宜的微控制器,它具有正确的外围设备和足够的内存来存储我之前编写的任何代码。如果内部寄存器发生变化(发生在 PIC 上)或者任何一个微控制器有额外的外围设备需要禁用以使代码工作,这可能会很烦人。
但是,出于生产目的,这将使您从每个单元中减少相当数量的费用。
当然,对于单个自制原型,最好从所有兼容微控制器中最强大的开始,然后按比例缩小。
但是,如果您想赢得报价,则必须先告诉客户价格,然后才能有钱实施任何事情。
因此,好的做法是在开始编程之前写下某种规范。你知道你想做什么,你应该写下你将如何去做。
这种“如何”还包括思考软件设计,回答以下问题:
总结所有这些值可以给你一个粗略的估计。您可以信任的程度取决于您的分析的详细程度,并且取决于您的经验 :-)
添加至少 30..50% 的估计值肯定是一个好主意。
一旦您的产品完成并且您使用了大约 80..90% 的 RAM,您可以确定您的选择是正确的——至少在 RAM 方面是这样。
如果可以先对嵌入式系统进行编码,然后再构建硬件就好了。这将使每个人的生活更轻松。不幸的是,这也意味着你的最后期限已经过时了。通常,必须在软件完成之前很久就设计硬件,因为硬件部件通常需要很长的交付周期。
因此,嵌入式软件开发人员通常需要估计他们程序的内存和 CPU 需求。您的第一步应该是尝试说服硬件人员为您提供最强大的微控制器/CPU 和尽可能多的 RAM。这很少奏效,因为他们有自己的需求目标,但偶尔你会很幸运。
如果这不起作用,那么您接下来要做的就是进行高级软件设计并将模块分解为功能。然后,您将估计系统中每个模块的每个函数的代码行数。然后,您可以使用公式将代码行转换为代码内存的大致估计。您还将调查任何不寻常的内存需求(如大型数组)并添加一些估计以适应它。然后在总数之上加上一些百分比来弥补你错过的任何东西。然后将其翻倍以满足典型的 50% 利用率要求。
是的,这需要时间。是的,有必要跳过所有的环节,因为在构建硬件之后更改硬件非常困难。
通常,微控制器供应商会在其设备中放置一系列适用于典型应用的存储器。因此,如果您在小型设备中只需要几个 I/O 引脚和一个 SPI,那么您将不太可能找到任何配备 500 kBytes 闪存和 64 kBytes RAM 的产品。对于更接近 SoC 封装的较大设备,即使是最小的设备也几乎可以肯定足够大,除非您打算进行一些严重的数字运算,例如图像处理。
在专业环境中,选择正确的微控制器的关键是使用历史数据。您将记录您开发的其他项目,并了解实现每个功能需要哪些内存和其他硅资源。您将知道产品的预期用途,因此有一个很好的功能列表,并且可以快速准确地计算出微控制器需要提供的资源。试图从前期设计规范(在项目开始时开发的关于系统的信息最少的时候开发)猜测资源需求在最好的时候是不可靠的,只有非常有经验的工程师才能建立一个全面的数据库中的历史数据在他们自己的头脑中,使用这种方法会有任何成功。
许多公司对软件和电子设计都采用了“敏捷”方法,其中包括构建小型功能板(例如 RS-485 板、ADC 板等)以及托管微控制器的通用平台板的“库” ,以类似于使用开发工具包和插件的方式。然后可以通过选择和连接功能所需的一组板来快速(在数小时内)对产品进行原型制作。该软件同样由库模块组装而成,可以快速移植和测试。一旦知道代码的硬件特定部分的大小,通常选择包含它的最小部分就足够了。上面提到的例外情况是设备的功能涉及大数据或非常复杂的算法。该方法提供了准确、
(敏捷方法的另一个优点是它允许软件和电子开发并行进行,而电子设计是一种集成功能板集的练习,同时进行相关的 EMC 和其他困难的工作。应用软件正在原型组件上开发。一些移植和集成仍然是必要的,但在工作软件和电子设备都可用的情况下完成。)