创建自己的库非常简单。他们的寄存器规范文档非常好,即使不是所有的外围设备也很容易设置。我发现使用他们的库更痛苦。但也许这只是我。st、nxp、ti、atmel 仅举几例(对于英特尔和微芯片而言,情况并非如此)。
他们为什么要更换图书馆,可能有很多原因,一些新老板接手,一些部门关闭,另一个接管。营销部门希望产品有一个新形象。正如 ElectronS 所提到的,这可能是一种尝试从硬件中抽象出来,以吸引不愿意或不能做裸机的用户。我会进一步说,他们可能正试图与 Arduino 现象竞争。mbed 和其他所有人一直尝试做但失败了(甚至在 Arduino 之前)。
在任何情况下,离硬件越远,它就会变得越臃肿和越慢,所以你必须为 rom、ram 和 mhz 花费更多的单位。只是为了让你能花同样多的时间编程?只是做的不一样吗?
你说你来自 PIC 世界,现在他们确实在工具方面做得很好,但他们的芯片文档很糟糕,有些是最糟糕的。他们用库和沙箱作为补偿。
在一天结束时,尝试各种选项,尝试竞争产品,看看他们的工具如何比较。你可以免费做很多事情,看看它是否有意义,你可以编译东西。甚至可能使用指令集模拟器。找到适合您的那个。
请注意,您始终可以使用无罐装库选项。您不受可以使用什么工具链、什么主机操作系统、什么 ide、编辑器等的限制。如果他们的选择在这方面非常有限,他们可能会坚持给您编程零件,然后转移到其他芯片或供应商,如果可以的话。
为了销售这样的芯片产品,他们必须提供一个开发环境,无论是他们所有的还是他们粘合在一起的免费东西。他们倾向于将某种图书馆放在一起。它只需要看起来足够好,并且 LED 示例的闪烁效果足以让您的管理人员或您的硬件团队在他们的产品中进行设计,然后当您的电路板产品被扔到软件的墙上时,就是痛苦的时候到达或没有到达。如果它几乎可以工作,但对芯片供应商来说不是一个巨大的胜利,因为您现在将为最后一点点的技术支持付费。因此,几乎到那里但不完全符合他们的最大利益。
芯片供应商只需要看起来足够好就可以赢得设计。他们必须不断改进(?改变)产品以吸引新老客户。因此,他们将进行重做,相隔多远以及继续支持的先前库数量各不相同。所以几乎任何你习惯的图书馆最终都会消失。所以要学会适应(或者不要使用他们的东西而去你自己的东西,你可以无限期地支持)。当然,理想情况下,您只需要为每个产品开发一次应用程序,使您的固件完美(如果使用第三方库,祝您好运),如果您能找到一个可以加载其工具链的计算机,您将不需要返回复制它,并记住如何使用那个旧库。请记住,您不仅应该保存源代码,还应该保存他们的所有工具和文档。
他们的库通常仅在一个工具链上受支持,在一个可能是两个 IDE 下,有时仅在 Windows 和某些版本上受支持。同样,如果您自己做,那么您没有这些限制,绝对不是 ARM。您始终可以阅读他们的任何/所有库,以了解他们是如何做事的。但这通常很可怕,他们不使用他们的 A 团队开发人员来做库,我提取了几行代码来询问面试候选人这段代码有什么问题。
为了在芯片端和软件端节省时间和精力,他们经常回收相同的 ip,所以一旦你看到外围设备在他们的一个芯片上的工作方式,它通常在他们的许多其他芯片上以相同的方式工作。是的,无论有没有它们的库,时钟系统都可能很棘手。将芯片变砖的可能性很高,这就是我的大部分芯片/电路板变砖的地方。有助于了解他们的芯片是如何工作的,例如 AVR,即使不是全部,也可以在芯片复位时重新编程,因此任何弄乱重新编程所需的引脚或挂起重新编程所需的逻辑的错误代码都不会没关系,你可以重新编程这些芯片。其中一些供应商(st 是其中之一)有一个内部引导加载程序,您可以使用带子选择它(例如在 st 世界中的 BOOT0),
一种尺寸适合所有人,没有人适合。对于软件尤其如此。因此,任何将硬件抽象出来的尝试只会让它变得缓慢和臃肿。如果这是您真正追求的,不妨获得更大的芯片并在其上运行 linux。这在很大程度上是由于开发人员不想弄脏他们的手,所以我们基本上要求这样做,他们正在努力提供它。
同样,不要将自己锁定在 st 或任何一家供应商(除非为时已晚并且管理层和/或硬件团队已将其固定在您身上,请注意 stm32 产品很好且易于使用)。货比三家。TI 在 cortex-m4 篮子里放了很多鸡蛋。您可以在这些 arm 产品以及供应商支持的解决方案上执行 mbed 操作。
您始终可以依赖的一件事是,他们会不时更改库并最终停止支持您习惯的库。