14

我是一名软件开发人员。几年来,我一直在使用高级语言进行编程。

我想知道,如何迈出我编程硬件的第一步。不是什么疯狂复杂的东西,但也许是一些普通的 CE 设备?假设我不需要将 PCB 与各种组件放在一起,而只是对微型 cpu 进行编程?

我必须达到多低的水平?ASM?C?操纵寄存器?还是开发套件现在水平很高?Java甚至在图片中吗?OO 硬件编码,这是梦想还是现实?需要现实检查。

我也倾向于通过以教程格式编写的书籍或网站学习得更好。一些东西引导我从简单的东西到更复杂的东西。有什么建议吗?也许有什么东西可以让我了解当今流行的硬件(微处理器/微控制器)?

非常感谢,谢谢大家。

4

6 回答 6

9

实际的编程没什么大不了的。令人沮丧、烦人的部分是设置您的开发环境并让工具正常工作。一旦你这样做了,你就成功了一半。

我建议购买内置 USB 并与您选择的操作系统配合使用的开发套件(“开发套件”)。让它工作,你就完成了一半。

如果您缺少相关知识,了解处理器工作原理的基础知识也很重要。您将在比任何其他编程低得多的水平上进行编程,因此基础知识更为重要。

于 2010-01-25T19:23:34.203 回答
2

如果您了解 C,那么只需学习工具链步骤即可下载代码。

容易上手的地方(便宜的硬件/软件)http://www.arduino.cc/en/Guide/HomePage

于 2010-01-25T19:23:18.727 回答
2

大约 16 年以来,我一直将 C 语言作为业余爱好和专业进行编码,但始终用于用户态代码(即程序,而不是内核或驱动程序)。我的大部分工作都涉及高级语言(我做过很多Perl 和 Ruby 编程,偶尔也会用到 Java、Python 和 shell 脚本)。我确实为 MS-DOS 开发了很多东西(这可能与您在 x86 机器上获得的裸机编程一样接近),但我的上一份工作涉及 5 年的 Perl 和 Ruby on Rails Web 开发。

话虽如此,我现在是嵌入式 Linux 开发的高级工程师,为Blackfin平台上的uClinux开发驱动程序(包括内核模块内的传统简单微处理器的仿真器)。有时我对硬件相关问题的经验不足(即由于引脚上没有上拉/下拉而导致的浮动信号电平)确实妨碍了我,但这主要是一次非常愉快和激动人心的体验。正如其他人所说,了解您的工具是必不可少的——对于 uClinux,这意味着GNU 工具链,幸运的是,由于我在 FOSS 技术方面的背景,我已经熟悉了它。

Blackfin 几乎不是入门级微处理器(特别是它没有MMU,这对 Linux 开发有一些相关影响),但如前所述,您可以花200 美元左右购买Beagleboard以及所有必需的配件并开始在短短几天内就搞砸了。如果你想要更简单的东西,有很多Arduino选项,但如果你有一些真正的开发经验,我相信你会发现他们的开发环境有点限制(我知道我做过)。

在您熟悉了您的工具之后,您可能想花一些钱购买在线仿真器(或 ICE)。这些通常是高度特定于平台的(就目标架构和开发环境而言),但强烈推荐用于通常的按钮按下后闪烁 LED 示例之外的任何内容,我相信您会很快适应。

几个月后,您会发现自己使用Buildroot为可破解的客户设备构建自定义映像并获得很多乐趣。我只能说,去吧,它很容易上瘾,而且现在做起来也不是特别贵。

于 2010-01-25T20:34:33.593 回答
0

还需要研究的是Microsoft Robotics Studio。它们支持相当多的硬件板(包括 CE),并且很容易让小型机器人启动并运行。还有什么更酷的项目来学习嵌入式编程?

这一切都很好地集成在 Visual Studio (express) 中,他们的 devkit 还附带一个免费的 express 版本。

于 2010-01-25T19:29:18.987 回答
0

得到一个比格板。便宜,大量用户(社区支持将是关键),许多操作系统选项。http://beagleboard.org/

于 2010-01-25T19:43:20.527 回答
0

好吧,如果你想知道你在做什么,你需要了解处理器的汇编语言和处理器的架构。

您需要学习 C 才能胜任微控制器。没有办法解决这个问题。

嵌入式系统上有一些 VM 级语言。我不时在手机上看到 Java 内存不足异常(这也有助于让我对 VM 级嵌入式语言有一个强烈的看法)。

ARM 对硬件级 Java 字节码有一些支持。

您最好的选择是拿起 PIC 或 Atmel 芯片之类的东西,然后开始使用它们进行黑客攻击。

如果你想用你现有的硬件来做这件事,为你的 PC 获取一个虚拟机管理程序并开始编写一个基本的内核。

于 2010-01-25T19:46:30.113 回答