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