我有一个嵌入式项目的想法,我想开始。我有很多问题

时间:2009-10-08 20:21:28

标签: c embedded microcontroller ada opensoundcontrol

这是我关于stackoverflow的第一篇文章,我听说过这个网站,我认为它真棒!让我们看看我是否可以获得一些如何开始我的项目的指导。

理念: 基本上我想构建自己的自定义OSC控制器(OSC是基于UDP的协议,旨在替换MIDI)。有趣的是,我想将控制器构建为吉他,因此我可以将它用作合成器,并在吉他的琴身上包含一些典型的MIDI控制器硬件。这将包括速度敏感垫,光学编码器,LCD面板,速度敏感琴弦和触敏音品。 Here's an example

我的问题:我对如何启动这么大和复杂的项目感到困惑。在基本的低级别,似乎固件只处理基本整数并转换为适当的OSC信号。我不确定如何选择我的硬件和编程语言,甚至不知道如何实现这个协议。也许我咬的比我咀嚼的多,但我认为这是一个很好的项目,可以很好地理解嵌入式硬件的工作原理以及低延迟并发系统的编程。

  1. 什么是基于此设备的良好硬件平台?我认为PIC18会因为它是现代协议而放慢处理OSC的速度。什么类型的微控制器可以处理OSC实现?
  2. 实施此协议的好语言是什么?我知道C通常用于嵌入式软件,但Ada引起了我的兴趣。这里的目标是创建一个低延迟固件,可以处理来自用户的多个输入。我知道Ada在很多这种情况下使用并且“更稳定”吗?你对此有何看法?
  3. 是否可以在没有物理硬件的情况下模拟硬件和微控制器?我有点不太愿意向硬件投入几百美元而不知道这是适合我需求的设置(我是在学生预算中)。如果我能够模拟所有输入并在没有硬件的情况下编写固件,那么我将更有信心完成这个项目。即使能够模拟我的想法的基本版本也会比没有更理想。
  4. 我希望我可以得到一些关于此的信息,如果我对硬件的问题不适合本网站,我理解你们是否会对硬件方面的建议感到犹豫不决。

    再次感谢!

4 个答案:

答案 0 :(得分:2)

  1. 支持以太网和可用网络堆栈的东西似乎是明智的。您是在寻找现成的电路板还是自己开发?许多ARM微控制器都包含片上以太网控制器。您需要考虑对网络硬件的支持以及此类支持(或实际上应用程序本身)是否需要操作系统或RTOS。

  2. C编译器几乎适用于8到64位的所有架构。但是,如果你使用一个具有超过几十千字节RAM的32位部分,C ++是可行的,几乎无处不在。 Ada是一种罕见的不太受支持的野兽,在军事/航空航天之外将是一个不寻常的选择IMO。您可能需要第三方支持,例如网络堆栈和以太网驱动程序 - 这些支持将用于Ada;费用合理吗?

  3. 您可能不需要在指令或循环级别模拟硬件。如果使用C或C ++,您可以在PC上对大部分代码进行原型设计。 PC的优势在于已经拥有网络支持。许多嵌入式开发工具链包括指令模拟器,有些还模拟片上外设,但它们的使用受到限制 - 它们不能实时执行,模拟外部I / O可能很复杂且不切实际。

    < / LI>

    ** [编辑] **关于C ++(回应Jason S的评论)。并不是C ++必然需要更多内存;您支付所使用的功能。但是需要注意,因为C ++容易和有吸引力的东西可能会隐藏资源成本。我在嵌入式系统中使用C ++,但很少使用C ++标准库 - 它很棒并且节省了大量时间,但是在某些系统可能无法承受的资源和确定性方面成本很高。我已经成功地在8位和16位系统上使用了C ++,但是当使用的子集受到高度约束并且代码体很小时,优势并不那么重要。我不会建议您学习C ++只是为了在8位系统上使用它;但如果您已经了解C ++,请继续(小心)。我目前正在研究dsPICF33器件,缺乏C ++支持非常令人沮丧。

答案 1 :(得分:2)

  1. 首先,请看看Arduino和Make Controller。两者都是开源(hw&amp; sw)微控制器模块,可以处理OSC并具有强大的用户社区。您可以在youtube上找到两个示例视频。

  2. C和Ada仍然可以编译成机器代码,因此如果您想要对硬件进行最大程度的控制,您可能需要查看汇编语言 - 但只有当它变得绝对必要时。在那之前,我会坚持使用C.它会带你走很远。

  3. 是的,可以在软件中模拟您的电路。但是,使用实际硬件时,有些事情会更容易。但是,对于一些好的软件示例,请查看Cycling '74网站上的Max / MSP教程。 Max / MSP是一种经常用于计算机/硬件交互的图形编程语言。 This article会给你一些关于它可以做些什么的想法。

  4. 与Max / MSP类似,是一种名为Pd的开源产品。它没有Max / MSP那么精致,但是随时可以免费使用,你可以随时开始搞乱它。

  5. 一些适合初学者的好书是Tom Igoe的物理计算和Paul Scherz的发明实用电子。 Tom Igoe也有一个信息丰富的网站。

  6. 您可能会发现一些有用的好杂志是Make,Circuit Cellar和Nuts&amp;伏。所有这些都与您将用于此类项目的电子类型有关。

  7. 除非您是商业企业的原型,否则您可以考虑启动一个开源项目。这听起来是个好主意,我相信它会引起很大的兴趣。

答案 2 :(得分:1)

您可能希望查看gumstix之类的内容。体积小,功耗低,运行linux,无线又便宜!

看起来有可用的linux OSC库。你绝对可以在linux PC上制作应用程序原型,然后在嵌入式Linux平台上进行交叉编译。

答案 3 :(得分:1)

还有基于MIPS CPU的PIC32。我会说使用Ada来实现它的实时功能,但是你还需要移植运行时才能使它工作,除非你使用的语言是零足迹配置文件运行时,这也是可行的。