我看到很多关于嵌入式开发人员职位的职位描述,例如要求了解ARM微控制器上的嵌入式C编程。
对我来说不太清楚的是,了解为特定ARM处理器开发C,或为PowerPC或其他类型的处理器开发C之间的区别是什么。使用C进行开发我们从实际的指令中抽象出来,这些指令将被编译和体系结构,为什么它真的重要?
我猜想主要是了解嵌入式开发,了解内存限制等,以及实际的目标处理器并不重要。例如,一位为PowerPC MCU编写代码多年的开发人员不如为基于ARM或其他类型的MCU开发代码一样好吗?
也许我在这里遗漏了一些明显的东西。请有人举例说明为一种处理器和另一种处理器编写C / C ++代码之间可能存在的主要区别。谢谢
答案 0 :(得分:2)
所有关于Linux和内核的文章,但99%的嵌入式工作纯粹是裸机。因此,核心和外围设备的知识是必不可少的。
在大多数情况下,在Linux程序员学习如何编写裸机之前,它们都没用。
这次需要花费你的雇主钱。
答案 1 :(得分:1)
好吧,我自己还没有编写任何ARM代码,但我认为特定于ARM的经验(没有特别的顺序):
答案 2 :(得分:1)
答案是肯定的,不是。
如果某项工作更多地与应用程序相关,那么MCU特定知识将无济于事
如果软件开发是在内核/ BSP /驱动程序或硬件相关,那么MCU / CPU硬件的知识是至关重要的。
请详细查看职位描述以了解预期的工作类型。
答案 3 :(得分:1)
像往常一样,这取决于。
如果您要在深层C级开发,最好了解架构,以便根据速度或/和内存(数据总线大小,每个时钟的指令等)优化代码。
如果你要在更深层次上发展(如果我们谈论ARM及其拇指,拇指2和ARM ......那就是疯狂),这是必须的。
此外,由于遗留原因或使我们的生活更美好,每个架构都增加了一些技巧。例如,ARM PC指向下一个要执行的指令,这在PowerPC或RH850或其他任何情况下都是完全不同的。
在上面(我的意思是,在OS之上或接近OS),编译器使用比我们更好,但无论如何,知道它是如何工作是一件好事(并且它肯定会使调试更容易)< / p>