低级/嵌入式系统对软件开发人员的编程难度大吗? [英] Is low-level / embedded systems programming hard for software developers?

查看:232
本文介绍了低级/嵌入式系统对软件开发人员的编程难度大吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

鉴于我作为通才的背景,我可以涵盖模拟电子学领域的许多领域,编写与RDBMS后端接口的简单应用程序。



我目前在一家开发硬件以解决行业特定问题的公司。我们有一个有经验的程序员,他们为PC编写了商业应用程序,视频游戏和一大堆其他的东西。但是,当我和他谈论低层次的编程时,他同时表达了对加入项目的兴趣和怀疑/不确定性。



即使在谈论电脑的时候,他似乎在语言层面比较低级别的东西(指令集,ISR)更舒适。不过,他是一个聪明的人,我认为一旦他在最初的学习中就会喜欢这个工作。但是也许这是我自己对低级别的东西的热情,如果他真的有兴趣,也许他已经开始学习这方面的东西?



有经验的软件到硬件(或低级软件)过渡?或者更好的是,只使用一个软件的人,并将他转移到低级别的东西?



编辑:



PS我很乐意听到回应者自己的背景是什么 - EE,CS,两者都是?

解决方案

当然,一切都是API。



需要为单片机内部的SPI外设编写代码?那么,请阅读数据表或硬件手册,并查看SPI外设。这是一个大而复杂的API。



问题是您必须了解硬件和一些基本的EE基础知识,以了解API的意义。数据表不是由SW开发人员编写的,它是为硬件工程师,也许是软件工程师编写的。



所以这一切都是从硬件的角度它 - 微控制器公司是一个硬件公司,硬件/ asic工程师)。



这意味着转换并不简单直接。



但这并不困难 - 它只是一个稍微不同的域。如果您可以实施一个学习计划,请从 Rabbit Semiconductor 的工具包开始。那里有足够的软件,所以一个SW的家伙真的可以很少的努力挖掘,HW很容易处理,因为一切都包裹在漂亮的小图书馆里。当他们想要做一些复杂的事情时,他们可以挖掘直接的硬件访问,并在较低层次上进行调整,但同时他们可以做一些非常酷的事情,比如建立一个小的 webservers pan /倾斜网络摄像机。还有其他类似产品的公司,但是Rabbit真的专注于为软件工程师提供便利的硬件。



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



如果您真的想深入研究,请随身携带 arduino kit - 便宜,免费编译器和图书馆,很容易就可以开始,但是你必须将线路挂钩去做一些有趣的事情,这对于一个不情愿的软件工程师来说可能太大了。但是有一点帮助和一些推动方向正确,他们将非常高兴有一个LED显示屏,像夜生活灯一样,像...一样,

Adam



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


Given my background as a generalist, I can cover much of the area from analog electronics to writing simple applications that interface to a RDBMS backend.

I currently work in a company that develops hardware to solve industry-specific problems. We have an experienced programmer that have written business apps, video games, and a whole bunch of other stuff for PC's. But when I talk to him about doing low-level programming, he simultaneously express interest and also doubt/uncertainty about joining the project.

Even when talking about PC's, he seems to be more comfortable operating at the language level than the lower-level stuff (instruction sets, ISR's). Still, he's a smart guy, and I think he'd enjoy the work once he is over the initial learning hump. But maybe that's my own enthusiasm for low-level stuff talking... If he was truly interested, maybe he would already have started learning stuff in that direction?

Do you have experience in making that software-to-hardware (or low-level software) transition? Or, better yet, of taking a software only guy, and transitioning him to the low-level stuff?

Edit:

P.S. I'd love to hear from the responders what their own background is -- EE, CS, both?

解决方案

At the end of the day, everything is an API.

Need to write code for an SPI peripheral inside a microcontroller? Well, get the datasheet or hardware manual, and look at the SPI peripheral. It's one, big, complex API.

The problem is that you have to understand the hardware and some basic EE fundamentals in order to comprehend what the API means. The datasheet isn't written by and for SW developers, it was written for hardware engineers, and maybe software engineers.

So it's all from the perspective of the hardware (face it - the microcontroller company is a hardware company filled with hardware/asic engineers).

Which means the transition is by no means simple and straightforward.

But it's not difficult - it's just a slightly different domain. If you can implement a study program, start off with Rabbit Semiconductor's kits. There's enough software there so a SW guy can really dig in with little effort, and the HW is easy to deal with because everything is wrapped in nice little libraries. When they want to do something complex they can dig into the direct hardware access and fiddle at the lower level, but at the same time they can do some pretty cool things such as build little webservers or pan/tilt network cameras. There are other companies with similar offerings, but Rabbit is really focused on making hardware easy for software engineers.

Alternately, get them into the Android platform. It looks like a unix system to them, until they want to do something interesting, and then they'll have the desire to attack that little issue and they'll learn about the hardware.

If you really want to jump in the deep end, go with an arduino kit - cheap, free compilers and libraries, pretty easy to start off with, but you have to hook wires up to do something interesting, which might be too big of a hurdle for a reluctant software engineer. But a little help and a few nudges in the right direction and they will be absolutely thrilled to have a little LED display that wibbles* like the nightrider lights...

-Adam

*Yes, that's a technical engineering term.

这篇关于低级/嵌入式系统对软件开发人员的编程难度大吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆