首先我是这个领域的新手,所以如果我问愚蠢的问题,请原谅。我过去曾使用 AVR 微控制器并使用过 arduino 的引导加载程序。在这里我需要使用 ATtiny16/17,我不知道我是否必须开发引导加载程序?引导加载程序是否可能已经集成在 µC 中?如果我不需要一个,在这种情况下我的程序将如何运行?
谢谢!
首先我是这个领域的新手,所以如果我问愚蠢的问题,请原谅。我过去曾使用 AVR 微控制器并使用过 arduino 的引导加载程序。在这里我需要使用 ATtiny16/17,我不知道我是否必须开发引导加载程序?引导加载程序是否可能已经集成在 µC 中?如果我不需要一个,在这种情况下我的程序将如何运行?
谢谢!
这是一个主要基于意见的问题,但无论如何我都会采取行动。您通常不需要微控制器的引导加载程序。有些已经或仍然带有工厂编程的引导加载程序,有些可以更改,有些则不能。IMO 的主要目标是电路编程。多年来,这已通过其他方式解决。AVR 在历史上一直存在,现在在 Microchip 下,我希望它不会被破坏,具有简单、可用的接口。特定的界面从微型到 xmega 不等,但我已经使用了每一个,它们都可以正常工作。我只是拿了一些其他的板子,写了一个小程序来对这个部分进行编程,甚至可以用 10 美元的 Raspberry Pi Zero 将它变成一个只需少量编程的 AVR 程序员。或者您可以购买简单、廉价的解决方案。
现在有一些你想要考虑的引导加载程序类型的事情,如果你弄乱了 plls 并且弄错了一些 mcus,你可以把部件变砖。AVR 在历史上很不错,因为您可以在部件复位时对其进行编程,因此在您进入并停止它并对其进行编程之前,您无需处理挂起的部件。像 st 这样的其他人往往有一个带引脚,该部分中的引导加载程序或逻辑根据输入引脚的绑定决定是否引导您的代码或它们的烧录加载程序。让你搞砸,然后恢复部分。不只是锁相环一般其他愚蠢的事情,而且这些都会发生。这主要是首先研究,该部分支持哪些电路编程接口,以及您将设计到电路板中并可能使用什么。你有没有工具等等。
许多部件只有一个闪存库,有些有两个,因此您可以进行乒乓操作或拥有引导加载程序和应用程序,因此根据架构、芯片设计等,您可能可以将引导加载程序加载到 ram 中以退出闪存然后在应用程序闪存。
您的资源有限,虽然您可以购买更昂贵的部件来安装加载器,但将一些调试板放在板上并使用外部编程器“更好”,开发/恢复成本是不是强制在每块板上,而是在板外。基于 ARM cortex-m 的部件开始放弃他们的工厂引导加载程序,只使用 SWD,或者一些带有 USB 的部件支持 dfu。物联网的安全担忧会让您束手无策,无论如何都可以做,因此您需要针对每个部分进行研究。
如果您为您的应用程序编写了完美的代码,那么就无需重新编程部件,一次编程,完成。不现实,但要考虑一些事情,我们最终会花费大量时间和大量代码来计划处理我们的不良代码。每一行代码都会增加风险,所以我们编写的代码越多,计划修复坏代码,就会产生更多我们必须修复的坏代码。
您可以设计开发板和生产板,理想情况下,您需要一些焊盘用于生产期间的电路编程,AVR 在历史上一直很好。但是根据您需要对生产版本进行多少调整,您可能希望构建一个公开更多接口的开发版本,并且生产版本是一次编程或有一种重新编程的方法但没有更多接口调试比那。真的取决于零件和电路板设计有多少用于调试的引脚以及有多少用于产品的引脚等。
因此,研究(每个可能的)部分,了解调试和(重新)编程接口,如果有任何可能的砖块(除了由于冒烟而简单地破坏部分)并为这些制定计划。这意味着获取或制作分线板,购买或构建开发工具以了解该部件的真正工作原理以及这些接口的优劣。
你如何开发,你需要一个调试器还是只需要一些东西来重新编程固件并重试?该部分是否为调试提供了哪些选项,这是否符合您的开发风格/愿望。
引导加载程序会为您提供该部件尚不具备的功能?你是否无缘无故地创造了更多的作品?(每一行代码都会给产品/项目增加风险)答案可以很简单,因为我们一直有一个引导加载程序,我们有一个内部(比方说)串行协议,我们总是使用并拥有我们所有的测试夹具正在使用该协议。这是为您使用的每个 mcu 编写一个或移植一个现有的一个很好的理由。如果你没有这些要求,那么它给了你什么,利弊是什么。
我想你会发现,目前主要供应商的大多数产品都有使用少量引脚协议、i2c、spi、jtag/swd、专有的电路解决方案。这些通常足以用于开发目的以及生产。让我们这样想,从厨房定时器到电视遥控器、烤面包机等等,数以百万计的包含 mcus 的产品都是大批量生产的,所有的便士都从产品中降低了成本,可能使用 ICT(在电路测试中) 来测试 PCB 和制造,但也可以并在板上对可编程程序进行编程(或者您使用其他特殊夹具购买/制作预编程部件),这意味着您也可以使用一个接口。
你知道,Arduino 引导程序很好;您只需要一个您可能想要的用于与应用程序对话的 USB/uart 板。st 的引导加载程序和 Atmel 的 sam-ba 也是如此(尽管现在已成为历史)(st 的默认情况下在较新的产品中被关闭/禁用,除了原始部件)。但这些似乎已成为过去,既然闪存前面可以有一些小逻辑,为什么还要在芯片上烧掉 ROM 空间呢?或者,如果您购买了具有解决方案的核心,只需将其连接起来并完成。
所以有很多文字来说明其他答案/评论在说什么。你不需要一个,如果你想要一个,你的选择。好的硬件工具在几美元或五美元,所以如果你想认真地为这些平台开发,那就投资吧。