我是一名软件开发人员。我已经用高级语言编程了几年。
我想知道,如何迈出编程硬件的第一步。不是疯狂复杂的东西,但也许是一些普通的CE设备?假设我不需要将PCB与各种组件放在一起,而只是为了编写微小的CPU?
我必须走多低级别? ASM? C?操纵寄存器?或者开发工具包现在相当高水平? Java甚至在图片中吗?硬件中的OO编码,甚至是梦想还是现实?需要现实检查。
我也倾向于使用以教程格式编写的书籍或网站更好地学习。能指引我从简单到复杂的东西的东西。有什么建议?也许会介绍我今天流行的硬件(微处理器/微控制器)的东西?
非常感谢,谢谢大家。
答案 0 :(得分:8)
实际的编程并不是什么大问题。令人沮丧,烦人的部分是让您的开发环境设置并使工具正常工作。一旦你完成了,你就完成了一半。
我建议购买一个内置USB的开发套件('开发套件'),并与您选择的操作系统配合使用。让它工作,你已经完成了一半。
如果您缺少相关知识,了解处理器工作原理的基础知识也很重要。你的编程水平远低于其他任何编程,因此基础知识更为重要。
答案 1 :(得分:2)
如果您了解C,那么只需要学习下载代码的工具链步骤。
易于启动(廉价的硬件/软件)http://www.arduino.cc/en/Guide/HomePage
答案 2 :(得分:2)
我已经用C作为业余爱好和专业编写了大约16年的编码,但总是用户名代码(即程序,而不是内核或驱动程序)。我的大多数工作都涉及高级语言(我已经完成了很多的Perl和Ruby编程,偶尔会有Java,Python和shell脚本)。我确实为MS-DOS开发了很多东西(可能与在x86机器上得到的裸机编程差不多),但我的上一份工作涉及5年的Perl和Ruby on Rails Web开发。
话虽这么说,我现在是嵌入式Linux开发的高级工程师,在uClinux平台上为Blackfin开发驱动程序(包括内核模块中遗留简单微处理器的模拟器)。有些时候,我对硬件相关问题的经验不足(即,由于缺少引脚上拉/下拉引起的浮动信号电平)确实妨碍了,但它主要是一种非常令人愉快且令人兴奋的体验。正如其他人所说,理解你的工具是至关重要的 - 对于uClinux来说,这意味着GNU Toolchain,幸运的是,由于我对FOSS技术的背景,我已经熟悉了。{/ p>
Blackfin几乎不是入门级微处理器(特别是它没有MMU,有一些relevant effects on Linux development),但如前所述,你可以购买{{3}所有必需的配件大约200美元,并在几天内开始搞乱。如果你想要更简单的东西,那里有很多Beagleboard选项,但如果你有一些真正的开发经验,我相信你会发现他们的开发环境有点限制(我知道我做过)。
在您熟悉工具后,您可能希望在Arduino(或ICE)上花一些钱。这些通常是高度平台特定的(在目标架构和开发环境方面),但强烈推荐用于除了通常的眨眼LED之后的任何事情 - 按钮后按下的例子我相信你很快就会长大。
在几个月内,您会发现自己正在使用in-circuit emulator为hackable customer devices构建自定义图像,并且充满乐趣。我只能说,去吧,它很容易上瘾,而且现在也不是特别昂贵。
答案 3 :(得分:0)
另外需要注意的是Microsoft Robotics Studio。它们支持相当多的硬件板(包括CE),并且很容易让小型机器人启动并运行。学习嵌入式编程的项目更酷吗?
这一切都很好地集成在Visual Studio(express)中,而且他们的devkit还附带了免费的快递版。
答案 4 :(得分:0)
获得一个beagleboard。便宜,很多用户(社区支持将是关键),许多操作系统选项。 http://beagleboard.org/
答案 5 :(得分:0)
好吧,如果你想知道你在做什么,你需要了解处理器的汇编语言和处理器的架构。
您需要在微控制器中学习C 称职。没有办法解决这个问题。
嵌入式系统上有一些VM级语言。我不时在手机上看到Java内存异常(这也有助于我对VM级嵌入式语言提供强烈的意见)。
ARM对硬件级Java字节码有一些支持。
你最好的选择就是买一些像PIC或Atmel芯片的东西,并开始用它们进行黑客攻击。
如果您想使用现有硬件,请为您的PC获取虚拟机管理程序并开始编写基本内核。