为什么要学习微控制器架构?[关闭]


8

我最近开始在一家小公司工作,该公司生产与汽车诊断相关的电子产品。我的上司已经50多岁了,他说他使用的是8051衍生产品,而他们正在做这项工作。我继续搜索Google,以了解8051是否仍然很受欢迎。在Quora中,我看到了这些:

...这可能是最简单的MCU架构。每个外围设备似乎都是准系统版本。我对计时器,时钟,UART等的概念有了很多了解!而且,然后我开始欣赏其他架构-因为我实际上了解这种差异。

...显然,由于其简单性,任何行业都不会使用它来开发产品...

但为什么?到目前为止,至少作为一个学生,我以前做过很多事情,而不会搞乱建筑。我很高兴用C编码,我使用了LCD外设,并通过不同的协议(SPI,I2C等)连接到其他IC。

除了实时和时间关键型应用程序的有限领域之外,为什么还要烦恼微控制器的体系结构?


3
很显然,要么是出于娱乐目的,要么是因为您需要使用这种架构进行项目。
PlasmaHH

今天8051最多是业余爱好。另一方面,如果您开始使用诸如ARM Cortex M4之类的现代工具,则实际上并不需要学习该体系结构。至少不要开始
Gregory Kornblum'2

@PlasmaHH我希望我有足够的时间来“学习”与电子相关的每个主题,但这是在我的学生时代:)
CK

6
您需要在需要性能时就意识到体系结构,而这可能不会发生。举个例子,如果您需要一遍又一遍地执行某些计算,并且时间有限,则可能需要不使用闪存中存储的数据或优化寄存器的使用。但是,今天只发生在非常有限的专业人员中。这将需要您一些时间才能到达那里。现在,我不会犯任何错误,只要编写C就可以满足您的未来需求。
Gregory Kornblum

2
我将它留给可能更了解的人:)
Gregory Kornblum

Answers:


30

8051和其他低位微控制器今天仍在使用吗?

是的,几乎无处不在。它们既小又容易,周围有很多内核,您可以以低成本或无成本地将它们放入自定义芯片中,还有成熟的编译器。这一切使得8051仍然是硅制造商中最受欢迎的核心架构之一。ARM内核可能会在更多不同的产品中使用,但是再说一次,当您与正在严格限制价格的情况下构建大量设备的人交谈时,如果能够完成工作,他很可能会倾向于更便宜/免费的8051内核。 。只是为了反对@ Nitro2k01 仅适用于小众市场的说法:Mouser的库存 ¹中有将近800种型号的8051 微控制器。而且这些价格甚至低于Mouser的价格都低于40ct,这可能表明它们的用途:

主流,低性能,大批量的MCU

从而:

...显然,由于其简单性,任何行业都不会使用它来开发产品...

完全是胡说八道。特别是因为您自己要提供反例

我的上司已经50多岁了,他说他使用的是8051衍生产品,而他们正在做这项工作。

究竟!它们无处不在,它们已经被证明并且价格便宜,并且足够了。永远不要低估在某个地方的抽屉中解决常见问题的优势!

当然,通常情况下,您可能需要一个解决方案,例如两个典型的汽车总线,一个到ADC的高速接口,一些可靠的看门狗定时器,三个PWM单元……然后开始将由四个8051和8080派生产品。那是一个糟糕的情况,很可能可以使用一个功能更强大的单个MCU(例如ARM)更快,更可靠地解决。但是,“我们拥有关于某种事物如何使用旧技术的公司知识”与“我们能够在现代硬件上运行的能力使我们永不过时”是一个经典的投资安全权衡。如果您遇到此类项目之一,我会尝试在这种情况下与老板交谈。对于简单的小型工作,是8051。

我是否应该总体上学习MCU架构?

是! 我认为@jfkowes很好地解释了这一点。但说实话:这有点像问“如果我想成为一名汽车修理工,我应该学习内燃机的工作原理”吗?答案是:“如果您能很好地执行维修手册,您的生活可能会很好,但是如果您了解硬件的功能,那么您可能会成为更好的技术人员(请留下工程师)。

一旦遇到无法用Google解决的问题,如果您大致不了解处理器的工作原理,那将是您的乌龟。

我应该麻烦学习8051架构吗?

可能不是。从某种意义上讲,是的,只要成本不是您的主要目标,就很有可能只使用基于ARM内核或其他更现代的体系结构的功能强大且用途广泛的MCU。

再说一次,8051内核是如此简单,以至于我实际上建议您在尝试解决一个更现代,更复杂的MCU内核之前,先了解其单元。这是一个很好的例子。

所以,如果8051是不是我在一家小批量应用寻找核心,什么我找?

因此,个人而言:选择ARM Cortex-M0,-M3,-M4F;它们在各种价格适中的微控制器中都很丰富,易于编程(是的,成熟的GCC支持,CMSIS标准库,在其上运行的许多嵌入式OS),并且通常带有标准调试接口(这一个很好的选择)。

从外部来看,ARM通常相对容易理解,因为您通常会将每个外设映射到内存空间,仅此而已。在内部,它们具有不同程度的复杂性以及速度/鲁棒性/大小优化,这使得它们在细节上不太容易理解,但是我想除非您是CPU设计者,否则可能会有很多要求。

如果您从事CPU设计,我认为(基于我对研究活动和“承诺的”行业投资的观察,这确实是个人的信念),我们目前正在观察一种新的重要ISA(即RISC-V)的兴起。这种针对FPGA或芯片的体系结构有多种实现方式,像Nvidia这样的人似乎也很乐意用这些类型的内核替换其流多处理器。


¹:很可能我错过了mouser拥有的实际8051的一半以上(因为,嘿,我刚刚选择了所有内核名称为* 80 * 5 *的MCU)。很有可能,如果您选择随机的8位微控制器,则其内核可能至少部分源自8051。我的意思是,请看维基百科的“ [8051]派生供应商列表”


AVR也是出色的学习架构,具有出色的文档和gcc支持。
克莱里斯-cautiouslyoptimistic-

@Chrylis不想不同意,但是我个人认为ATMega 8bitters不是一个很棒的体系结构,与ARM Cortex m0相比,它们的文档或GCC支持也不出色。但这是个人观点!
MarcusMüller17年

1
@MarcusMüller在与Atmel接触后,我再也不会使用它们了(爱好除外)。Atmel依靠业余爱好者的活动来支持规模小于某个“规模”的企业-我总是小于规模,因为我们的数量从未超过一年6000个。FAE很不错,但是对法国(AT91)并没有帮助,所以我就放手了。另一方面,无论项目如何,Microchip都为我提供了疯狂的支持。支持他们的教授。工具“永远”,甚至旧的芯片仍然在制造。Atmel现在被Microchip收购。因此,也许在那里换脚,我会再看一次。
jonk

1
@jonk如此,尽管PIC / Microchip具有良好的服务声誉并且仅此一项就可以生存,但Atmel产品组合扩展可能会陷入停滞。而且,我对下一个十年的希望是:正如我们在评论中讨论的不久前的另一个答案一样,如果事实证明晶圆“班车服务”变得越来越便宜,并且具有非常有竞争力的32位/可选64位/可选RT保证各种大小和速度的RISC-V之类的架构(以BOOM,Rocket芯片或PicoRV32的名称实现为内核),“麻烦,我有一个特殊的问题,我可以得到一个特殊的MCU”……
MarcusMüller17年

1
@MarcusMüller一个人可以希望。如果一切都依靠客户支持,Microchip只会扼杀其他所有人。我有一个12岁的专业工具,电源开关变得“片状”。我打电话问他们是否可以给我交换机的零件号,以便我可以订购一个并修理单元。取而代之的是,他们要求寄给我一个替换单元,给我寄来一个替换箱,并把一个旧箱退还给我,然后第二天早上就到了!免费。我问:“您需要购买证明吗?” 他们说:“不。请归还其他部队。我们只需要有身体的财产。” 该死的东西很古老。
点播

12

通常,这里有一些很好的理由来学习(或至少具有一定的工作知识)您正在使用的微控制器的体系结构。

注意:在工作,公司,应用程序,相关的硬件等方面,可能有一些原因使您不应该学习当前使用的特定体系结构。

调试

当高级库工作时,您可能不需要了解体系结构。当您开始遇到问题时,了解您的微控制器的内部可以极大地帮助您快速隔离和解决这些问题。

代码效率和简单性

如果您知道该体系结构,则可以将功能从软件转移到硬件。这有可能减少软件负载并消除错误源。

降低成本

对体系结构的了解可以减少程序和数据存储器的使用以及处理器的负载。这可能意味着您可以选择资源较少的微控制器,从而有可能降低成本。

增加用处

即使您现在不使用该知识,也可能需要与同事/供应商/支持工程师等进行讨论。例如,您知道的某些内容可能会帮助其他人解决他们遇到的问题。人们会记得保存一天。

知识就是力量

即使您在当前的工作中不需要知识,当您看到一条广告看起来很惊人时,上面写着“需要/优先考虑<microcontroller family>架构的知识”时,您的处境也会更好。去做。


再说,我不知道你是否会经常看的那句话在招聘广告-它是一种神秘的知识,而且任何人谁是关于最有见地的任何 CPU架构将能够在他的前三天拿起8051工作,我猜
MarcusMüller17年

好点,我已经对其进行了编辑,以使其更笼统。
jfowkes

7

8051和其他低位微控制器今天仍在使用吗?

是的,尽管主要针对利基用例。它们主要用于简单任务,批量生产,成本驱动的产品,或需要可靠的往绩记录的地方。它们通常被许可并集成到单芯片解决方案中。由于其简单的体系结构,很容易将它们与定制外围设备集成在同一芯片上。另一个优点是可以使用较旧(且更便宜)的半导体制造技术在较小的面积上生产它们。

一个这样的例子是在智能卡的控制芯片中,该芯片通常使用具有加密硬件扩展功能的8051或类似内核。您可能会在智能电动牙刷监控器的控制器中找到8位微控制器内核。车辆ECU通常会使用8位微控制器和32位微控制器作为看门狗,因为它们具有更高的可靠性和更低的复杂性。

你应该学习吗?

除了可能最终导致需要了解特定体系结构的情况之外,我认为这通常是一项有用的技能。即使您在日常工作中编写C语言,对“低于一个级别”的内容进行一般了解也是很有用的。在解决怪异的错误或性能问题时,如果您对底层硬件有一般的了解,则找出问题可能会容易得多。您还可以更轻松地分析C编译器输出的汇编语言。学习一种架构也将使将来更容易学习不同的架构。这些技能甚至可以帮助您为更现代的CPU内核编写更好的代码。


我会有点不同意“ Niche”的主张。见下面我的答案:)但是,您的答案还是不错的!
MarcusMüller17年

1

通过学习它们,您可以学到很多关于数字设计的知识。数字电子学是用两件事建立的。首先是逻辑,实现逻辑表达式的AND,OR,NOT元素的互连。(实际上,实际上使用了其他逻辑元素,例如NAND,但AND,OR和NOT较容易理解。)其次是可以容纳一个或多个位的存储元素。当引入存储元件时,设备可以具有所谓的状态。存储元件中位的不同组合对应于不同的状态。

考虑一个自动售货状态机,该状态机从状态0开始并在每次插入硬币时都移至另一个状态。这样,机器可以跟踪总金额,知道何时投入了足够的钱,并且知道要退还多少零钱。

要设计机器的电路,请从状态图开始,其中箭头表示向其他状态的过渡以及触发它们的条件。对于每个箭头,逻辑表达式标识一个条件。然后可以算出所有这些表达式是什么,并用逻辑元素实现它们。

对于自动售货机,这并不是很难。对于复杂的控制器,它变得更加困难。微控制器是完成相同任务的快速简便的方法。考虑一个“存储器”(在字节或字的意义上)为k位宽,并具有n条地址线,导致在存储器中有2 ^ n个位置。该存储器通过设计进行编程,实际上是只读的。注意,使用存储器的地址位作为“输入”,并使用数据位作为输出,可以对存储器进行编程以实现任何逻辑功能。

添加一个也为k位宽的寄存器来保存一个存储单元的内容就产生了一个状态机。

如果将k个比特划分为例如操作码和地址。操作码位组控制电路的其他部分(例如分配自动售货机产品),其余部分为n位宽的存储器地址,每组k位成为具有分支功能的微指令。

加上一些算术逻辑,再加上一些寄存器(其中的一个或多个需要控制输入左右移动),就可以构建一个CPU,其机器指令由一系列微指令实现。

在1970年代和1980年代,使用这种设计制造了许多成功的计算机。其中之一(Digital Equipment的VAX 11)具有用于计算整数多项式的机器指令,旨在用于地址计算(想像数组)。事实证明,使用更简单的指令可以更快地实现该指令。

与传统的状态机相比,微控制器的执行效率通常较低。但是它们可以轻松更改,设计速度更快,并且是出色的控制器解决方案。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.