微控制器上C和ASM的替代方案
Alternatives to C and asm on microcontrollers
我的背景就是这样:嵌入/c,然后是c ,然后更高级别的oo语言(java,scala,ruby,groovy等),现在我正在做一个小项目涉及MSP430微控制器。同时,受到此启发,我正在考虑许多潜在的宠物嵌入式系统项目(网格和/或RTL看起来很吸引人)。因此,我的问题现在主要集中在MSP430上
我有些惊讶地发现,经过这么多年,我可能需要带着宏,命名约定以及所有人回到C。我的大脑曾经连接到C,但很多年前。
那么有哪些选择?
-
c 对我来说感觉更加令人愉快,幸运的是,看起来很可行:http://stonepile.fi/object-oriented-eriented-ecprace-to-embed-embedded-programming-with-c/
因此,如果我要编程C ,我只需要在可能的情况下进行介绍,请在可能的情况下避免虚拟功能,我应该很好,对吗?(至少在内存方面;他们在上述链接上没有基准进行性能)。
但是,如果这么简单,人们为什么要编程C?我必须缺少一些东西。
-
上面的链接似乎还为PICO]提供了包装库。有没有人在MSP430上使用过picoos,它的可靠性有多可靠,需要多少资源?
-
简单的MS430项目的Energia的优缺点是什么?我尝试过,它似乎非常直观和自我记录,但是它是否会导致引擎盖下的代码整洁?例如,Energia是否将未使用的GPIO初始化为OFF状态以节省能源?它会初始化未使用的中断吗?在记忆和速度方面的开销是什么?等。
编辑:作为一个长期日食的人,我很想使用CCS。我看到可以将Energia草图进口到CCS。这是否意味着CC对Energia有全部支持,并且可以用作Energia IDE?
-
有人使用Java Grinder http://hackaday.com/2014/02/02/10/java-grinder-pits-spits-un-dspic-and-dspic-and-msp430-semmbly-code/?它似乎很吸引人,但是由于它吐出了一个组装而不是C/C 代码,因此承诺有些恐怖:如果我被锁定在其中,并且还没有准备好黄金时段呢?如果它生成了C代码,如果它不起作用,我很容易将其丢弃。
-
我提到了java,我的问题被删除了,因为不言而喻的是,除了磨碎的句法糖(不是我介意句法糖!)之外,Java无法在MSP430上运行。我想我会问另一个问题,java可以在哪里运行。这已经变得太长了。
-
那里还有哪些其他语言/环境,可以填补低 - 和希格级语言之间的利基?
您似乎在这里有几个问题,所以我将按照您编号的顺序进行。
-
大多数MICROS确实会运行C (假设制造商或开源项目提供了编译器后端),但是您必须警惕许多缺点。C 是不太确定性的,因为它提供了更高的抽象水平,这很可能不想要资源受限的嵌入式系统,而且总的来说,这也不需要,因为嵌入式系统很少有功能足以有效运行该系统非常复杂的算法,保留像C 这样的高级语言。鉴于从具有嵌入式系统调试代码的困难的错误,它的错误很容易且易于跟踪,因此也很可能会引起广泛的难以跟踪错误。但是非常重要的是,C 标准库是巨大的,它们会使用过多的RAM,并且很可能会浪费您有限的记忆空间。因此,即使您确实使用C ,也无法使用任何使其功能强大的技术。
-
简单地说,我没有使用过它,但是像任何RTO一样,如果您想要一个稍高的级别接口,但是对于微观,MSP430的微小尺寸似乎过于杀伤,我无法想象您在做在其中任何需要腐烂的东西,如果您需要多任务处理,最好提供简单的合作任务。
-
不幸的是,我也没有使用该平台,但是鉴于它是基于布线,我猜它不会提供高水平的硬件特定优化,如果我想我建议将其用于大部分您的代码,但请在需要时拨打较低级别的库。但是,除此之外,它确实提供了一个可爱的自我记录界面,我强烈建议您尝试一下。如果您以后切换到另一个微型(许多公司提供接线绑定),它也将使您的代码多次更容易端口。
。 您在这里确实自己回答这个问题,它可能非常强大,但仍然很不成熟,我纯粹是因为这种锁定直到变得更加成熟,因此值得重新评估。<<<<<<<<<<<</p>
Java在更强大的手臂芯片上工作得很好,这是我唯一看到它的地方,并在微型中实现了相当有效的(ARM为Java提供硬件帮助)。除此Java以外,适合微观世界,在某一时刻,它可能会去某个地方,但这在很大程度上是未实现的,因为现在喜欢C而是较小的micros的方法。
不幸的是,除了C.我最好的建议是使用更高级别的LIB,例如接线。这会使您在不杀死效率的情况下稍微更好地接口,否则,如果您需要高水平的抽象,那么使用微小的微观就几乎没有意义。
总而言之,C在这里做得很好,我认为没有任何动力或努力来进行良好的替代。坦率地说,我在很大程度上也有这种感觉,C从来没有成为一种坏语言,它仍然适合小型系统,其原因与以前相同。它提供了功率,效率和可预测性。
我希望这有所帮助,如果您有任何疑问,请对我发表评论,我会看到我可以做些什么来帮助。
- 运行同一解决方案的另一个项目的项目
- Project Euler问题4的错误解决方案
- 计算每个节点的树高,帮助我解释这个代码解决方案
- C++:Application.cpp中抛出了未解析的外部符号(解决方案在问题的末尾,供未来的读者参考)
- visual c++,如何获取解决方案目录中的代码
- 有没有办法在远程设备上打开和编辑visual Studio 2017解决方案
- C++Matching Brackets 2解决方案不起作用
- 在 ubuntu3 上C++ goto 定义有什么解决方案吗16.04?
- C++11 中不同类型的对象的 std::array 的替代方案
- 在 leetcode 上提交解决方案时出现堆栈缓冲区溢出错误
- 别名模板的专业化 C++11 中没有开销的最佳替代方案
- 我的固定时间步长与增量时间和插值的解决方案是错误的吗?
- 无法在问题解决方案中执行输出逻辑
- 使用C++获取程序的 ASM
- 最大的回文产品 - 程序未运行,编写解决方案但无法理解问题
- 从预序遍历构造 bst 的 c++ 和 python 解决方案之间的区别
- 在一个解决方案中针对第三方静态库 (Creo) 的不同版本(版本)进行构建
- 如何巧妙地编写两个函数——一个用于检查是否存在解决方案,另一个用于获取所有解决方案
- 使用 Git 处理 C++ Visual Studio 2019 解决方案的外部依赖项源代码管理的最佳方法是什么?
- 微控制器上C和ASM的替代方案