我的背景是这样的:embedded / C,然后是C ++,然后是更高级的OO语言(Java,Scala,Ruby,Groovy等),现在我正在做一个涉及MSP430微控制器的小项目。同时,受此启发,我正在考虑一些潜在的宠物嵌入式系统项目(网格和/或RTLS看起来很吸引人)。所以我现在的问题主要集中在MSP430上,但是,除此之外,我也希望能够更广泛地了解其他微控制器。
我有点惊讶地发现,经过这么多年,我可能需要回到C,用它的宏,命名约定等等。我的大脑曾经用于连接C,但那是很多年前的事了。
那么有哪些替代品?
C ++对我更加满意,幸运的是,似乎可行:http://stonepile.fi/object-oriented-approach-to-embedded-programming-with-c/
因此,如果我要编写C ++程序,我只需要内联很多,尽可能避免使用虚函数,我应该很好,对吧? (至少在内存方面;他们没有在上述链接中对性能进行基准测试)。
然而,如果它如此简单,为什么人们会编程C?我一定错过了什么。
以上链接似乎也为pico] OS提供了一个包装库。有没有人在MSP430上使用picoOS,它有多可靠,需要多少资源?
Energia在简单的MS430项目中有哪些优点和缺点?我尝试过,它看起来非常直观并且自我记录,但它是否会在引擎盖下产生整齐的代码?例如,Energia是否将未使用的GPIO初始化为关闭状态以节省能源?它是否初始化未使用的中断?内存和速度方面的开销是多少?等
编辑:作为一个长期的Eclipse人,我喜欢使用CCS。我看到Energia草图可以导入CCS。这是否意味着CCS完全支持Energia并且可以用作Energia IDE?
有没有人使用过Java Grinder http://hackaday.com/2014/02/10/java-grinder-spits-out-dspic-and-msp430-assembly-code/?它看起来很吸引人,但是因为它吐出了汇编而不是C / C ++代码,所以承诺它有点可怕:如果我被锁定它并且它还没有准备好在黄金时间怎么办?如果它生成了C代码,如果它不起作用,我可以轻松删除它。
我提到了Java并且我的问题被删除了,因为它不言而喻,除了类似于研磨器的语法糖(我不介意语法糖!),Java无法运行MSP430。我想我会问另一个问题,即Java可以运行的问题。这已经变得太长了。
还有哪些其他语言/环境可以填补低级和高级语言之间的空白?
答案 0 :(得分:1)
你似乎在这里有几个问题所以我将按照你编号的顺序进行。
大多数微软确实会运行C ++(假设制造商或开源项目提供编译器后端),但是你必须警惕许多缺点。 C ++不那么具有确定性,因为它提供了更高级别的抽象,人们可能不希望资源受限的嵌入式系统,并且大体上也不需要它,因为嵌入式系统很少有足够强大的功能来运行非常复杂的算法,保证像C ++这样的高级语言。考虑到从具有简单且易于跟踪的错误的嵌入式系统调试代码的难度很大,它也可能导致大量难以跟踪的错误。然而非常重要的是,C ++标准库非常庞大,它们会使用过多的ram,很可能会浪费大量有限的内存空间。因此,即使您使用C ++,也无法使用任何使其强大的技术。
简单地说,我没有使用它,但是就像任何RTOS一样,如果你想要一个稍微高一些的接口它是有用的,但是对于微型MSP430的小尺寸看起来有点过分,我无法想象你在做什么那里有保证ROTS的任何东西,如果你需要多任务处理,最好自己提供简单的合作任务。
不幸的是我也没有使用过那个平台,但是鉴于它是基于布线的,我猜它没有提供高水平的硬件特定优化,如果你想要我推荐使用它的大部分您的代码,但在需要时调用较低级别的库。除此之外,它确实提供了一个可爱的自我记录界面,我强烈建议您尝试一下。如果你以后切换到另一个微处理器,它也会使你的代码容易多次移植(许多公司的许多系统提供布线绑定)。
你真的在这里回答这个问题,它可能非常强大,但仍然非常不成熟,我会完全避免它,因为这个锁定直到它变得更加成熟,然后值得重新评估。 / p>
Java在更强大的ARM芯片上工作得很好,这是我在广泛使用中看到它的唯一地方,并且在微控制中相当有效地实现(ARM提供专门针对Java的硬件辅助)。除此之外,Java还不适合微观世界,有一点似乎它可能会出现在某个地方,但这在很大程度上是未实现的,因为现在C类似乎是采用更小微处理器的方法。
不幸的是,除了C之外,没有太多的选择。我最好的建议是使用更高级别的库,比如布线。这样可以在不破坏效率的情况下为您提供更好的界面,否则如果您需要高级抽象,那么使用微型微处理器几乎没有意义。
总之,C在这方面做得相当不错,我认为没有任何动力或努力来做出更好的替代。坦率地说,我也基本上也有这种感觉,C从未成为一种糟糕的语言,它仍然非常适合小型系统,其原因与之前相同。它提供了力量,效率和可预测性。
我希望这有点帮助,如果您有任何疑问请评论我,我会看到我能做些什么来帮助。