就 msp430 而言,它是一个很好的架构,非常好的工具 mspgcc 和 mspgcc4 和 llvm 就这点而言。binutils 无需打补丁。您可以以低于 5 美元的价格购买一些启动板(最终您会将某些东西变砖或将其短路并熔化,有一个备用的,尤其是这个价格)...
下载工具,它们都是免费的,写几行代码,学习如何链接它,看看二进制文件有多大,感受一下嵌入式,代码行到 rom 大小等。
专业人士是如何做到的。几乎所有你能想象的方式:
一些公司的任务是从高处降下来的,除了退出之外,你无能为力。而且您可能永远不知道为什么选择该平台。
有时承包商/最喜欢的客户决定平台,有时你可以教育/谈判,有时不能。
有些人只是有一个最喜欢的,对未知的恐惧,无论如何。同样的原因有些人只买一个品牌的汽车,因为我爸爸和他爸爸在那之前做过,这可能就是全部原因。
有些人专注于工具。这里又是品牌忠实的人,他们将自己限制在他们最喜欢的编译器公司和他们支持的任何目标,或者最喜欢的开源工具和支持的东西上。最喜欢的嵌入式操作系统和支持的对象限制。
在某些情况下,它与工具有关,但以不同的方式,随着时间的推移,您可能已经在与供应商(例如 arm 或 xilinx 或摩托罗拉)签订的年度支持合同中投入了大量资金,并且您可能喜欢他们的支持不想改变,或者你认识的魔鬼比你不认识的魔鬼更好。或者可能是因为公司中的其他 5 个活动项目都使用了这个东西,而且我们已经有了一份支持合同,并且将年复一年地继续支付那一年的费用,你必须选择其中一个供应商的解决方案。
有时是为了节省几分钱。这部分比那部分便宜 1.5%,让它与这部分一起工作,不要关心 NRE,想想在体积上的制造节省。
有时它是关于负面的。一位供应商可能以一种或另一种方式搞砸了您的公司。未能满足广告的零件供应导致您的产品延迟或取消。诱饵和开关骗局(50,000 美元的软件费用不包括解锁许可证所需的加密狗 1200 美元的费用,这是一项额外费用。哦,这是浮动许可证的每位用户)。一旦您签署 NDA 以查看程序员参考手册或参考设计指南,您就会发现他们的工程技术有多可怕,您可能会选择将他们所有的产品终身列入黑名单。过去的历史与可怕的技术支持。任何数量的原因都可能导致您永远不允许他们的销售人员进入前门,或者让您不再查看他们的网站。
有时它与性能、接口等有关。例如,您有一个有线或需要上拉的接口,单片机品牌 XYZ 3 美元,有一组 I/O 引脚可供使用不需要其他外部硬件,品牌 ABC 有一个 3 美元的部件,需要一个外部晶体管和电阻器才能使其工作在最低限度。您的 msp430 示例,说它是关于功耗的,A 部分可能只需要用户使用一节 AAA 电池并运行数月,B 部分可能需要两节 AAA 电池并运行数周。
最罕见的情况是实际进行工程设计,调查所有供应商,计算功耗,计算产品的单位价格,我们需要多大的 ROM 以及运行芯片的频率,胶合逻辑,不断。通常有人(老板/客户/高级工程师)会利用他们多年的经验并从臀部(通常使用上述一种或多种方法)来选择路径(通常是一条可以节省大量时间和金钱的好路径)和工程设计完成一次以微调所选平台。
我个人的建议是灵活。大多数形式或时尚的微控制器品牌/系列都可以在评估板上以低于 50 美元的价格购买。Sparkfun、olimex 或直接从供应商处购买(ti 代表 msp430 或 Stellaris 等)。尝试一个或多个,感受一下共同点和不同点,工具,加载程序,拆砖的难度等等。你至少可以从中得到两件事,一是当你被迫走上一条路时从高层或客户开始,您可以开始运行,其次是当轮到您选择平台时,您会更好地了解那里的内容和不存在的内容,并且可以根据问题选择正确的(加载的词)平台得到解决。
即使你不出去或不能出去在硬件上花那么多钱,大多数都有可以下载的工具(免费),在微芯片等情况下,你现在可以获得 C 编译器(曾经是高科技)但是必须订阅(放弃您的电子邮件地址)。gcc 喜欢或讨厌它会在你的未来,桌面或嵌入式,弄脏你的手并学习将它用作交叉编译器。也试试 llvm,它会存在一段时间并给 gcc 一些激烈的竞争。反正写或者找一些模拟器,mame有很多,gdb有一些,等等。我在github写了一个叫thumbulator,只有ARM thumb模式,类似于cortex-m3,除了我不支持thumb2(仍然可以学到很多并在仅切换到硬件之前在两者上运行程序)。我启动了一个 msp430 仿真器,但有点停滞不前。指令集是如此之小,以至于大部分工作都是一个晚上或周六的项目。PIC 也是如此,一个漫长的下午,你有一个指令集模拟器来练习嵌入式。如果不出意外,您可以编写程序编译和链接,以了解如何执行此操作以及程序最终有多大,如何调整程序以生成更紧凑的代码等。
就 C 与汇编程序而言,一些指令集对 C 友好,而另一些则不是。有些编译器是中等的,有些非常糟糕,只有少数是非常好的(通常使用一次或每年花费几千美元)。与任何地方的性能一样,如果你想真正推动它,可能需要高级语言(比如说 C)和汇编程序的混合。因此,技能不是用汇编程序编写整个应用程序,而是确定哪些代码导致您无法满足时序/性能,然后知道如何通过 C、编译器选项、选择正确的编译器或编写汇编程序来解决这个问题。
我建议您了解您选择使用的所有平台的汇编程序,如果没有其他与嵌入式一样的可读知识,我建议您经常反汇编(同时找出性能问题所在)。许多平台无论如何都需要或需要一些汇编程序来启动代码。
如果您想在每单位价格上节省 10-20%,并想购买更便宜/更慢的微控制器或振荡器,或者 32Kb 闪存部分而不是 64KB 闪存部分,并且可以通过销售量来支付开发成本,并且也许一长串其他东西,你可能会选择用汇编程序编写整个东西,速度快,功耗低,成本低,客户满意。
根据你目前的背景,也许你不应该担心在所有汇编程序中编写,也许你不应该担心嵌入微控制器的电气工程方面,阅读原理图,知道什么是集电极开路、三态、推挽、pwm、adc、dac 和一长串其他术语以及如何使用它们。bit banging i2c、spi、mdio、dallas one wire 等。使用示波器作为软件调试器。即使示波器今天可以为您突出显示某些内容(额外费用项目),您应该能够关注 i2c 和 spi 以及其他一些没有突出显示的协议。
我还建议对于您使用的每个平台,都不要使用其他人的沙箱(例如 Arduino ide/编程环境)。将处理器从复位状态写入您的 main() 程序的引导代码,尽可能多地了解如何加载/编程闪存到可能涉及编写您自己的加载程序的程度,即使货架上的加载程序是那里。这完全是关于个人教育的,你知道的越多,越能从你的口袋里掏出来,使用你对你的职业生涯的更多控制,你的薪水数字末尾的零就越多。
无论你做什么,都不要,尝试学习 x86 作为你在桌面上的第一个汇编程序,选择几乎任何其他东西并交叉编译和模拟,ARM、THUMB、MSP430、PIC、AVR,甚至 6502、8051。x86 是一个可怕的指令集并因此以多种方式变形和成形,微编码,非微编码,多核,等等。将 x86 保留为高级语言和庞大的操作系统。将它用于您的文本编辑器和编译器,并针对其他目标。
抱歉,答案很长……希望对您有所帮助。