微控制器上C和ASM的替代方案

Alternatives to C and asm on microcontrollers

本文关键字:方案 ASM 控制器      更新时间:2023-10-16

我的背景就是这样:嵌入/c,然后是c ,然后更高级别的oo语言(java,scala,ruby,groovy等),现在我正在做一个小项目涉及MSP430微控制器。同时,受到此启发,我正在考虑许多潜在的宠物嵌入式系统项目(网格和/或RTL看起来很吸引人)。因此,我的问题现在主要集中在MSP430上

我有些惊讶地发现,经过这么多年,我可能需要带着宏,命名约定以及所有人回到C。我的大脑曾经连接到C,但很多年前。

那么有哪些选择?

  1. c 对我来说感觉更加令人愉快,幸运的是,看起来很可行:http://stonepile.fi/object-oriented-eriented-ecprace-to-embed-embedded-programming-with-c/

    因此,如果我要编程C ,我只需要在可能的情况下进行介绍,请在可能的情况下避免虚拟功能,我应该很好,对吗?(至少在内存方面;他们在上述链接上没有基准进行性能)。

    但是,如果这么简单,人们为什么要编程C?我必须缺少一些东西。

  2. 上面的链接似乎还为PICO]提供了包装库。有没有人在MSP430上使用过picoos,它的可靠性有多可靠,需要多少资源?

  3. 简单的MS430项目的Energia的优缺点是什么?我尝试过,它似乎非常直观和自我记录,但是它是否会导致引擎盖下的代码整洁?例如,Energia是否将未使用的GPIO初始化为OFF状态以节省能源?它会初始化未使用的中断吗?在记忆和速度方面的开销是什么?等。

    编辑:作为一个长期日食的人,我很想使用CCS。我看到可以将Energia草图进口到CCS。这是否意味着CC对Energia有全部支持,并且可以用作Energia IDE?

  4. 有人使用Java Grinder http://hackaday.com/2014/02/02/10/java-grinder-pits-spits-un-dspic-and-dspic-and-msp430-semmbly-code/?它似乎很吸引人,但是由于它吐出了一个组装而不是C/C 代码,因此承诺有些恐怖:如果我被锁定在其中,并且还没有准备好黄金时段呢?如果它生成了C代码,如果它不起作用,我很容易将其丢弃。

  5. 我提到了java,我的问题被删除了,因为不言而喻的是,除了磨碎的句法糖(不是我介意句法糖!)之外,Java无法在MSP430上运行。我想我会问另一个问题,java可以在哪里运行。这已经变得太长了。

  6. 那里还有哪些其他语言/环境,可以填补低 - 和希格级语言之间的利基?

您似乎在这里有几个问题,所以我将按照您编号的顺序进行。

  1. 大多数MICROS确实会运行C (假设制造商或开源项目提供了编译器后端),但是您必须警惕许多缺点。C 是不太确定性的,因为它提供了更高的抽象水平,这很可能不想要资源受限的嵌入式系统,而且总的来说,这也不需要,因为嵌入式系统很少有功能足以有效运行该系统非常复杂的算法,保留像C 这样的高级语言。鉴于从具有嵌入式系统调试代码的困难的错误,它的错误很容易且易于跟踪,因此也很可能会引起广泛的难以跟踪错误。但是非常重要的是,C 标准库是巨大的,它们会使用过多的RAM,并且很可能会浪费您有限的记忆空间。因此,即使您确实使用C ,也无法使用任何使其功能强大的技术。

  2. 简单地说,我没有使用过它,但是像任何RTO一样,如果您想要一个稍高的级别接口,但是对于微观,MSP430的微小尺寸似乎过于杀伤,我无法想象您在做在其中任何需要腐烂的东西,如果您需要多任务处理,最好提供简单的合作任务。

  3. 不幸的是,我也没有使用该平台,但是鉴于它是基于布线,我猜它不会提供高水平的硬件特定优化,如果我想我建议将其用于大部分您的代码,但请在需要时拨打较低级别的库。但是,除此之外,它确实提供了一个可爱的自我记录界面,我强烈建议您尝试一下。如果您以后切换到另一个微型(许多公司提供接线绑定),它也将使您的代码多次更容易端口。

  4. 您在这里确实自己回答这个问题,它可能非常强大,但仍然很不成熟,我纯粹是因为这种锁定直到变得更加成熟,因此值得重新评估。<<<<<<<<<<<</p>

  5. Java在更强大的手臂芯片上工作得很好,这是我唯一看到它的地方,并在微型中实现了相当有效的(ARM为Java提供硬件帮助)。除此Java以外,适合微观世界,在某一时刻,它可能会去某个地方,但这在很大程度上是未实现的,因为现在喜欢C而是较小的micros的方法。

  6. 不幸的是,除了C.我最好的建议是使用更高级别的LIB,例如接线。这会使您在不杀死效率的情况下稍微更好地接口,否则,如果您需要高水平的抽象,那么使用微小的微观就几乎没有意义。

总而言之,C在这里做得很好,我认为没有任何动力或努力来进行良好的替代。坦率地说,我在很大程度上也有这种感觉,C从来没有成为一种坏语言,它仍然适合小型系统,其原因与以前相同。它提供了功率,效率和可预测性。

我希望这有所帮助,如果您有任何疑问,请对我发表评论,我会看到我可以做些什么来帮助。