【发布时间】:2023-03-29 07:13:01
【问题描述】:
我的背景是这样的:嵌入式/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,可靠性如何,需要多少资源?
-
对于一个简单的 MS430 项目,Energia 的优缺点是什么?我试过了,它看起来非常直观和自我记录,但它是否会在引擎盖下产生整洁的代码?例如,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 可以在哪里运行。这已经太长了。
还有哪些其他语言/环境可以填补低级和高级语言之间的空白?
【问题讨论】:
-
这个问题方式太宽泛了以至于栈溢出。
-
简而言之:可以将 C++ 用于小型控制器并且效果很好。避免使用标准库中可能涉及动态内存分配的任何内容。
-
我应该把它分成多个问题吗?我想过这个,但感觉有点像垃圾邮件/洪水。
-
如果您能找到适合您平台的 Java 虚拟机 (JVM),则可以使用 Java。您可以将 Java 编译为适用于您平台的本机指令。
-
您可能必须禁用垃圾收集器。阅读 JVM 的规范。由于垃圾收集器,许多嵌入式系统不使用 Java;因为动态内存在嵌入式系统中是邪恶的,主要是由于碎片。