嵌入式编程的替代语言

RHa*_*uda 22 embedded microcontroller

我正在寻找替代编程语言(从汇编,C,C++和基础)到嵌入式(微控制器)编程.

例如,可以用C#或Java编程微控制器吗?也许Ruby或Python?

如果可能,请发布使用的开发工具和硬件.

lhf*_*lhf 9

还有Lua.见eLua.

  • 我希望你不认为在这种情况下"嵌入"与嵌入式系统有任何关系. (2认同)

Ira*_*ter 8

FORTH长期以来在嵌入式系统中很受欢迎.我没有具体的经验,但它非常巧妙地设计,即使在困难的微控制器上,使用线程代码解释方法,在很小的空间内提供了很多功能.对于相当于翻译的人来说甚至相当快.获得FORTH的开发环境很容易,并且很容易将其移植到新系统中.

人们喜欢或讨厌它,因为它坚持你用反向抛光表示法编写代码(基本上它是一个带有大量预定义运算符的堆栈机器).

这个SO线程似乎相关:https://stackoverflow.com/questions/122292/forth-love-if-honk-then


Wil*_*ung 6

FORTH在小型机器上有优点,但有一点学习曲线.

FORTH有许多方面,其中任何一个或全部都可用于嵌入式开发.

与FORTH斗争的部分原因是处理存在的二分法.

在他们为您提供的环境(开发人员)方面,在Z-80 FigForth线程解释器中,您所拥有的小型原始FORTH是非常低级的.它们肯定比装配更高,但可以说,(在某些情况下)比C.

例如,开箱即用,FORTH(这些小的,很多人用小CPU考虑的旧版本)不允许你分配动态内存,或做(简单)指针算法.它甚至没有"结构"作为语言概念.你基本上可以通过常量来玩偏移量.最初,你甚至不能做递归.可以说,它最大的限制是它没有真正的数据类型.它根本没有输入,它的所有数字可能是也可能不是指向内存的指针,可能是也可能不是数据或字符或其他什么.

当然,与此同时,您可以在8K的RAM内获得完整的系统,包括汇编器和编辑器等.

所以,就这样,它是,是的,比汇编更高的水平,但低于C.

但是(这是一个很大但是......)

虽然它可能会从较低级别开始,但作为程序员,您可以将其提升到您满意的任何抽象级别 - 您可以将它放在您想要的范围内.

你想要结构吗?你想从一个堆到malloc?你想要一个对象系统?这些都可以在建筑物的基础上使用.

您希望在语言级别为您的基于ISAM的小型记录系统提供一流的支持吗?简单.

考虑Common Lisp.它最强大的两个功能是宏和Reader,它们让您有机会将任意文本转换为随后编译的代码.

FORTH具有相同的能力,只是它走得更远.在较旧的FORTH中,您甚至可以访问编译器本身,而不仅仅是编译器的输入.线程解释器非常简单,易于修改.您可以对内存映像进行"原始"访问,您可以随心所欲地执行任何操作 - 所有这些都来自FORTH系统本身.

这就是FORTH如何轻松地将自己"移植"到其他架构,如何优化特定的数据结构.许多旧的FORTH都是Threaded Interpreters,但他们没有理由这样做.如果您愿意,可以将FORTH编译为纯机器代码(即根本不需要解释器).

当然,在现代"微型"控制器上,您可能只需将整个开发环境移植到设备上即可.切勿再次将图像复制到电线上(直到您当然备份它为止).

当然,所有这些都需要工作.也许是太多的工作,这取决于设计师/编码员的决定.它是一个原始的工具包,可用于制作非常强大的东西.


Ira*_*ter 5

我在较小的机器上使用自定义pcode解释器来节省代码空间.

大多数嵌入式系统都有一些可能性能很高的部分,而且很多东西很少运行或性能无关紧要.

我已经实现了许多应用程序,其中硬核快速的东西是用汇编语言编写的(因为这是我作为开发工具所能得到的),然后编写了一个pcode解释器,用于我自己的私有指令集,通常具有堆栈机器方向.

几乎所有你需要开始的是PUSH/POP操作数(8或16字节),ADD/SUB/MUL/DIV,CMP,IF/GOTO和调用的操作码,即使在丑陋的指令集中也很容易编码.之后,您尝试使用CALL编写子例程,并且只添加操作码来执行pcode无法执行的操作(设备I/O),或者需要更快的编译.

即使使用汇编程序,在这样的pcode解释器中编码也非常简单; 您只需编写"BYTE"汇编程序指令,其中散布着"WORD"指令,具体取决于操作码所需的内容.

这个答案基本上就是穷人对我之前给出的FORTH答案的变化.