embedded - 低级/嵌入式系统编程对于软件开发人员来说很难吗?

标签 embedded hardware firmware

鉴于我作为多面手的背景,我可以涵盖从模拟电子器件到编写连接到 RDBMS 后端的简单应用程序的大部分领域。

我目前在一家开发硬件以解决行业特定问题的公司工作。我们有一位经验丰富的程序员,曾为 PC 编写过商业应用程序、视频游戏和一大堆其他内容。但当我和他谈论进行底层编程时,他同时表达了兴趣,同时也对加入该项目表示怀疑/不确定。

即使在谈论 PC 时,他似乎也比在较低级别的东西(指令集、ISR)上操作语言级别更舒服。尽管如此,他还是一个聪明的人,我认为一旦他克服了最初的学习困难,他就会喜欢这份工作。但也许这就是我自己对低级话题的热情……如果他真的感兴趣,也许他已经开始朝那个方向学习东西了?

您有从软件到硬件(或低级软件)转换的经验吗?或者,更好的是,让一个只做软件的人,并将他转变为低级的东西?

编辑:

附注我很想听听响应者的意见,他们自己的背景是什么——EE、CS,还是两者都有?

最佳答案

归根结底,一切都是 API。

需要为微 Controller 内的 SPI 外设编写代码吗?好吧,获取数据表或硬件手册,然后查看 SPI 外设。这是一个庞大而复杂的 API。

问题是您必须了解硬件和一些基本的 EE 基础知识才能理解 API 的含义。该数据表不是由软件开发人员编写的,也不是为软件开发人员编写的,它是为硬件工程师(也许还有软件工程师)编写的。

所以这都是从硬件的角度来看的(面对现实 - 微 Controller 公司是一家充满硬件/asic 工程师的硬件公司)。

这意味着过渡绝非简单明了。

但这并不困难 - 只是域略有不同。如果您可以实现学习计划,请从 Rabbit Semiconductor 开始的套件。那里有足够的软件,因此软件人员可以毫不费力地深入研究,并且硬件很容易处理,因为所有内容都包含在漂亮的小库中。当他们想做一些复杂的事情时,他们可以深入研究直接硬件访问并在较低级别进行调整,但同时他们可以做一些非常酷的事情,例如构建小webserverspan/tilt network cameras 。还有其他公司也提供类似的产品,但 Rabbit 真正专注于让软件工程师轻松使用硬件。

或者,让它们进入 Android 平台。对他们来说,它看起来像一个unix系统,直到他们想做一些有趣的事情,然后他们就会有解决这个小问题的欲望,他们就会了解硬件。

如果你真的想跳入深渊,请选择 arduino kit - 便宜、免费的编译器和库,很容易上手,但你必须连接起来才能做一些有趣的事情,这对于一个不情愿的软件工程师来说可能是一个太大的障碍。但是只要有一点帮助,并在正确的方向上进行一些插入,他们就会非常高兴拥有一个像夜行者灯一样摆动*的小 LED 显示屏......

-亚当

*是的,这是一个技术工程术语。

关于embedded - 低级/嵌入式系统编程对于软件开发人员来说很难吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/231543/

相关文章:

c - 如何用C语言设计嵌入式软件应用库接口(interface)的通用向后兼容API?

c# - 如何使用c#检查硬盘是Sata设备还是IDE设备

c# - USB显微镜的自动对焦算法

assembly - 编写自己的SVC调用ARM汇编

linker - 当 VMA != LMA 时加载 ELF

嵌入式系统 : last gasp before reboot

c - C中通过JTAG读取STM32L4闪存

c - malloc 是否需要操作系统支持?

c - GPS 模块与 MSP430 的连接

C I2C 代码从 MPU9150 读取传感器数据不工作