为什么大多数程序员都不喜欢硬件嵌入式编程?
0 1128
2
该提问暂无详细描述
收藏
2021-01-19 16:45 更新 蝈蝈 •  224
共 1 个回答
高赞 时间
0

我个人一直很喜欢对嵌入式系统进行编程。也许是因为在我第一次学习在早期的微型计算机上编程之后不久,我在硬件上有了坚实的基础,这些微型计算机通常很慢(按照今天的标准)并且受内存限制。我也很早就学习了多种汇编语言,并且一直在该级别上感到舒适。

我认为许多程序员可能不喜欢或不喜欢这种编程水平的原因有以下几个。当今许多软件开发人员:

  • 从未有过需要压缩代码以适合256字节,512字节,1K,2K或4K RAM的经验。它们习惯于拥有巨大的,平坦的地址空间以及虚拟内存,从而使它们的程序和数据超过物理RAM的大小。
  • 对硬件的了解还不够。他们可能尚未接触过引脚的定义,引脚,寄存器和时序图的读取和解释芯片的数据手册。或者,他们可能不必编写代码来驱动尚未有文档的全新专有芯片,而要求他们向芯片的设计者询问正确的问题。
  • 尚未了解内存映射的I / O,基于端口的I / O,以及它们与CPU的地址总线,数据总线和控制线的关系。这实际上只是一般的计算机体系结构,但是直到你必须直接使用它之前,它似乎有些神秘而令人生畏。
  • 尚未学习或尚未完全理解一种或多种汇编语言。尽管嵌入式系统项目并不总是需要汇编语言,但当你处理时间紧迫的代码,在机器指令级别进行调试,需要执行不可用的指令/操作时,汇编语言确实有帮助如今,大多数嵌入式工作都使用C语言,有些使用C ++,甚至有些使用C#(NETMF或TInyCLR)。但是我多年来从事的许多项目至少需要某种汇编语言。
  • 没有它们下面的操作系统“网络”,它永远都无法工作。当没有OS API,没有内存保护,没有虚拟内存,没有文件系统,没有控制台等时,一些程序员会暂时迷失方向。嵌入式编程与过去的编程有很大不同。
  • 过于依赖嵌入式环境中可能不可用的功能。例如,某些环境可能根本没有可用的动态内存管理。
  • 发现学习诸如SPI,I2C,CAN,USB等通用外设协议的前景令人生畏。

我于1977年以计算机爱好者的身份入职,最初在高中毕业之前就学会了使用BASIC,Fortran和几种汇编语言进行编程。我的大学培训是计算机科学的,但是由于它是在工程部门下的,所以我对硬件也有很好的了解。然后,在离开学校的第一份工作中,我很幸运地被投入了一个项目,在该项目中,我负责开发固件以使用全新的CPU来驱动全新的专有I / O总线接口芯片,我从未见过的汇编语言。我喜欢那时(1983年)的作品,从那时起我就真正享受了这种编程技术。

本回答来自Ken Gregg, developing compilers, Decades developing compilers, OSs, drivers, embedded systems

收藏
2021-01-19 16:45 更新 我爱喝牛奶G •  2074