学习嵌入式编程的最佳平台?
我想学习嵌入式编程(主要是C语言,但我希望也能复习我的ASM),我想知道最好的平台是什么。我在使用Atmel AVR并使用stk500进行编程方面有一些经验,发现这相对容易。我特别喜欢AVR Studio和调试器,它使我们可以查看寄存器的状态。
但是,如果我想花时间学习,我宁愿了解一些行业中普遍存在的知识。我在想ARM,除非有人有更好的建议。
我还将寻找一些参考资料,我已经在ARM网站上找到了"书籍"部分,如果一本在技术上比另一本更好,我将不胜感激。
我要寻找的最后一件事是原型/编程板,例如STK500,它带有一些按钮等。
谢谢=]
解决方案
为了测试一个有趣的项目,请看看xgamestation
但是对于更工业化的单芯片解决方案编程,请看PIC
如果我们只是想玩转它,我建议我们使用Arduino平台(http://www.arduino.cc)。它基于ATmega168或者ATmega8,具体取决于版本。它使用类似C的语言,并具有自己的IDE。
一个不错的选择是Microchip的PIC18
- 它在互联网上有很多资料,文档,教程和项目
- 免费的IDE和编译器。
- 我们可以在几分钟内拉出自己的Flash编写器。 (尽管要使调试器正常工作,我们需要更加努力地工作)
- 如果我们是学生(或者有学生电子邮件地址),Microchip将向我们发送免费的样品芯片。因此,基本上,我们可以拥有几乎没有任何东西的完整开发环境。
- PIC在行业中非常普遍。出于某些原因,特别是作为机器人的控制器,尽管它们可以做更多的事情。
"嵌入式编程"是一个非常宽泛的术语。 AVR在该类别中相当不错,但它比ARM低了一步,因为它既易于使用,功能也不强。
如果我们只想使用ARM,请购买Nintendo DS或者Gameboy Advance。与内部硬件(大量生产的奇迹)相比,它们非常便宜,并且它们都具有基于gcc的免费开发工具链,可以对其进行编译。
如果我们想玩嵌入式Linux,BeagleBoard似乎是一个不错的选择,价格仅为150美元,并且具有大量功能。
我个人认为AVR最适合较小的8位平台,ARM最适合较大,功能更强大的32位平台。像许多AVR粉丝一样,我不喜欢PIC。在几乎所有方面,它似乎都变得更糟。也要避免任何需要我们编写任何类型的BASIC的事情。
ARM具有广泛使用的嵌入式平台中最好的指令集,使我们可以自由选择嵌入式平台的软件编写一般原理,而不会陷入诸如非正交寄存器或者分支延迟槽之类的怪异细节中。 ARM拥有许多仿真器,尽管它们不是免费的,但它们都是周期精确的。而且,各种基于ARM的可编程硬件价格便宜,并且容易获得。
问题已在此问题中得到解答。
除此之外,嵌入式处理器行业非常细分,它没有像"台式机"处理器行业那样的主要竞争对手Intel / x86. 我相信ARM处理器的份额很大,我相信MIPS也会占有很大份额,并且还有许多更小的,更具体的微控制器,例如芯片(如TI的MSP430等)。
至于文档,我从事嵌入式开发工作,而我们(作为软件开发人员)可以访问的文档很少。最好的选择是使用处理器制造商网站上的文档。
如今,Arduino似乎是初学者的首选平台,尽管还有很多其他平台。我个人喜欢Olimex板,但是它们并不是真的适合初学者。
Microchip的PIC系列CPU也非常适合初学者,尤其是如果我们要使用汇编器编程时。
顺便说一句,汇编程序不像以前那样被广泛使用。嵌入式的一般规则是,如果我们有4k或者更多的内存,请使用C。我们将获得可移植性,并且可以更快地开发代码。
我想这取决于技能水平以及我们想对芯片进行什么操作。我通常会通过可用的外围设备选择要使用的嵌入式芯片。如果需要USB端口,请找到一个内置USB的端口,如果要模数转换,请找到一个具有ADC的端口等。如果我们有简单的应用程序,请使用8位,但如果我们需要一个严肃的数字,则可以使用它。紧缩,走32位。
在我的计算机体系结构课程中,我必须同时使用PIC和AVR。我认为与PIC的合作更容易,但这也许是因为这是我们最努力的工作,并且我们有最多的时间去适应。我们可能只使用过AVR几次,所以我无法完全掌握它,但也没有什么过分复杂的,或者至少没有比这更令人沮丧的了。
我认为我们也可以从Microchip网站订购微处理器样品,这样我们也可以开始使用吗?
看一下Processing以及相关的Arduino和Wiring板。
ADI的Blackfin是另一种选择,因为它是一种非常简单的编程架构,但是如果我们选择沿这条路线走,它也可以做一些相当繁琐的DSP工作。汇编语言也非常理智也有帮助。
Blackfin STAMP板价格便宜(我上次检查的价格约为100美元),并且它们支持免费的GCC工具和uClinux。
无论我们选择哪种架构,我都绝对建议我们首先下载工具链\ SDK,然后浏览示例项目和教程,这些教程和教程通常会发挥作用。我们通常可以通过仿真完全熟悉该体系结构,而无需动用任何硬件。
TI MSP430是学习如何对微控制器进行编程的绝佳平台。 TI提供了多种免费工具和一些廉价的评估板(起价为20美元)。另外,它是一种低功耗的现代微控制器。
我想向我们推荐TI的Beagleboard。它上面有一个Omap3. 那就是Cortex-A8 ARM11 CPU,C64x + DSP和视频加速器。
该板不需要昂贵的jtag设备。我们只需开始使用串行电缆和SD卡即可。董事会仅需150美元,而且社区非常活跃。
www.beagleboard.org
如果我们只是想找乐子,请尝试使用Parallax Propeller芯片。 HYDRA游戏平台看起来像爆炸。现在有一个100美元的C编译器。
我开始使用BASIC邮票,然后通过SX芯片和PIC进入了8051、68332,各种DSP,FPGA软处理器等。
8051在现实世界中更有用……事情不会消失。有大量的衍生品和疯狂的东西。 (仅远离DS80C400)能源行业绝对是其中的一员。
从微小的东西开始。如果我们有外部RAM和大量寄存器,那与SBC有什么区别?
其次:
Arduino平台http://www.arduino.cc
高温超导
我本人已经从事嵌入式编程工作已有9年了,并且在TI MSP430,Atmel AVR(有两种功能)上有丰富的经验,并将很快使用ARM。
我的建议是选择处理器中具有某些额外功能的产品,例如以太网控制器和CAN控制器,如果可以的话,甚至购买两个或者三个。嵌入式设备非常适合使用,但是一旦它们可以通过CAN与其他类似设备通信或者进入网络,它们的使用就会变得更加有趣。
很多个月以前,我曾使用过68HC05和Z80等8位处理器,后来使用过AVR和MSP430(16位)。但是,最近的项目是在ARM7上。一些制造商提供了所有颜色和尺寸(嗯,不是真的颜色)的ARM控制器。
ARM(7)正在取代8位体系结构:它具有更高的性能(比大多数8位寄存器具有更快的指令周期的32位RISC),更多的内存以及几种IO配置可用。
我使用的是NXP LPC2000控制器,该控制器也很便宜(32位设备的价格不到1美元!)。
如果我们在欧洲,http://www.olimex.com/dev/index.html有一些不错的低成本开发板。也可以在世界其他地方使用:-)
为了学习,我们不能超越AVR。这些芯片很便宜,并且将使用零外部组件运行,它们还提供足够的电流以直接从端口驱动LED。
我们可以从廉价的编程器开始,例如lady-ada的USBTinyISP(套件为22美元),它可以通过USB端口以5V的电压为电路板供电。获得免费工具WinAVR(基于GCC)和AVRStudio,并立即获得一个小型项目。
是的,AVR有局限性,但是为微控制器开发软件主要是关于管理资源和解决这些问题。当我们为功能强大的ARM平台制作业余项目时,我们不太可能会遇到诸如堆栈空间不足,RAM或者ROM不足之类的问题。
话虽如此,ARM还是一个在行业中广泛使用的出色平台,但是,为了学习,我强烈推荐AVR。
我建议使用Microchip的PIC18F系列。我刚刚开始使用RealICE在线仿真器为其开发产品,但是pickit2是价格合适的调试器。我们也可以在AVR上这样说,但是整个网络上的设备都有大量关注者。由于所有与PIC相关的问题,我能够在几天之内运行有故障但功能正常的嵌入式USB设备。
我对PIC唯一不满意的是,很多示例代码都非常缠绕在演示板上。这可能会使我们很难删除需要的部分,并且仍然有一个将为应用程序生成并运行的应用程序。
德州仪器(TI)以非常低的价格发布了一个非常有趣的开发套件:eZ430-Chronos开发工具包含带显示屏和MSP430的运动手表中的MSP430,其中包括一个USB调试编程器和一个价格为50美元的USB无线电接入点
还有一个包含大量信息的Wiki。
我已经为eZ430-Chronos套件创建了一个stackexchange提案。