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