如何为 Arduino 或类似的微控制器编写 JavaScript 编译器? [关闭]

2024-04-07

我意识到这个问题会引起一些人的注意,并且我意识到 JavaScript 传统上是一种解释性语言,请让我解释一下:

我是一名专门从事 Web 应用程序(特别是 .NET 堆栈)的软件工程师。作为一种爱好,我喜欢创造RC UAVs https://www.youtube.com/watch?v=H42tvqSrFyg在基于 Arduino 的组件上运行。

我还想用 Arduino 做其他一些事情,但坦率地说,C / C++ 不是我最强的语言,我不想花有限的业余时间阅读 C 书籍。

我(以及我确信的许多其他人)想到,如果用于与其交互的语言是一种更常见的语言,那么 Arduino / 嵌入式生态系统将会更加丰富。 JavaScript 对我来说似乎是一个很好的候选者,因为大多数软件开发人员都知道它,并且构建开源框架和插件的文化在 JavaScript 世界中非常强大。

那么,回到我的第一个问题:如果我想能够用 JavaScript 为 Arduino 编写和编译代码,我该如何开始?我当然正在设想一个开源项目,但我需要一些帮助来获得关注。我从未编写过编译器,因此非常感谢您的帮助。


这是一个很大的要求,Arduino UNO、LEO 等中的微控制器是 ATmega328p,它具有 32K 的闪存用于程序存储、2K 的 RAM 和 2K 的 EEPROM(用于持久存储)。对于像 Javascript 这样的语言来说,这是相当严格的。

现在有人写了一个ATmega128 的 Javascript 编译器 https://code.google.com/p/talktic/,您可以在 Arduino Mega 中找到它,它具有 4K RAM 和更多闪存。

如果您升级到 Arduino DUE、Arduino Zero 或 Teensy 3.x(所有这些都是基于 ARM 的),那么您可以查看Espruino http://www.espruino.com/这是适用于 ARM 的 JavaScript 版本,但您仍然需要将其移植到 Arduino 硬件。

因此,如果您真正想要的是可以运行 JavaScript 的嵌入式板,那么我只想看看 Esprino 板本身。

最后,如果您仍然选择使用 ATmega328p 的 JavaScript,那么您应该考虑为 JavaScript 语言的子集编写一个 JavaScript 到 C++ 的转换器。这样做的范围远远超出了 SO 回复的范围,所以我建议从著名的开始龙书 https://rads.stackoverflow.com/amzn/click/com/0201100886因为它仍然可能是学习如何编写编译器的最佳资源。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何为 Arduino 或类似的微控制器编写 JavaScript 编译器? [关闭] 的相关文章

随机推荐

  • 我的 Azure VM 管理员用户名是什么

    我的笔记本电脑无法工作 因此我尝试在另一台计算机上创建到我的 azure VM 的 rdp 连接 我记得密码 但不记得用户名 我在哪里可以找到它 更新 2020 年 3 月 26 日 现在 有了更新的 Azure 屏幕和视图 我们无法选择从
  • 在 Java 中启动进程?

    有没有办法在Java中启动一个进程 在 Net 中 这是通过以下方式完成的 System Diagnostics Process Start processname Java 中是否有等效项 以便我可以让用户找到该应用程序 然后它适用于任何
  • 为什么这个 CSS :not() 声明没有被过滤掉?

    我想选择不是特定类的后代的跨度 我们称之为 否 这是我的 CSS div not no span background color 00f 这是 HTML div span yes 1 span div div class no span
  • 申请 DUNS 号码:“Apple 追踪号码”和“目的”

    建立 Apple 开发者帐户需要申请 DUNS 编号 我正在申请 需要帮助解决 DUNS 申请表中的两个问题 苹果追踪号码 目的 请提及您的目的 我应该在这些字段中输入什么 您无需通过 dnb co in 网站获取 DUNS 编号 而是可以
  • 关于数组reduce函数中初始值的问题

    我实际上遇到了一个问题 更多的是这个作业问题的说明 如下所示 将collection减少为一个值 该值是通过iteratee运行collection中每个元素的累积结果 其中每个连续调用都会提供前一个调用的返回值 如果未提供累加器 则集合的
  • 使用 Moq 对 LINQ to SQL CRUD 操作进行单元测试

    我已经查看了其他问题 但没有什么真正符合我正在寻找的内容 主要是因为我不能 100 确定我正在寻找什么 基本上我现在正在开发一个新项目 我已经为数据库实体创建了抽象层并将 DAC 设置为存储库 我想使用 Mock 对象对此进行单元测试 但是
  • 每个 AT&T 语法操作数访问内存或寄存器中的什么值?

    假设以下值存储在指定的内存地址和寄存器中 Address Value Register Value 0x100 0xFF eax 0x100 0x104 0xAB ecx 0x1 0x108 0x13 edx 0x3 0x10C 0x11
  • DateTime 对象不受其时间戳的约束?

    Is a DateTime object 不受其时间戳的约束 或者确实getTimestamp 有某种副作用使用时关于夏令时的变化 Details设置时间戳时DateTime开启的对象DST 意味着格式化时间在更改时钟之前 之后都存在 返回
  • SVN:是否可以获取分支的给定修订号的 svn 信息

    是否可以获取特定修订号的分支的 svn 信息 例如 如果分支的最新工作副本的修订号为 56 我可以获取修订号为 32 的同一分支的信息吗 有两个选项可用于获取有关过去修订的信息 svn log r
  • 使用字符的 for 循环绘制具有特定颜色的多条线

    我想在一张图表上绘制 13 条线 每行代表我的数据的一个子集 按 盆地 列中的字符分组 我所拥有的有效 但我想使用 for 循环使其更有效 输出如下所示 https i stack imgur com gTapP png 可使用的简化数据框
  • getelementsbyclassname 而不是 getelementbyid 不起作用

    我已经读过很多次 您现在可以获取 getElementsByClassName 如果我用 Id 替换 ClassName 下面的代码就可以正常工作 但是使用 ClassName 这个词不起作用 有人知道为什么吗 我在 Chrome 和 Fi
  • MVC4 从服务器到客户端的回调

    我正在使用 ASP NET MVC 4 应用程序 我需要通过从控制器向客户端发送消息来在客户端中显示消息 我需要将文件上传到服务器并在 Foreach 循环中进行一些处理 并且每次 foreach 后我需要在 UI 中显示消息 目前我有 f
  • 使用 ViewContext 获取视图的 VirtualPath

    是否可以找出当前 ViewContext 的 VirtualPath 例如 视图 公司 Create aspx 我想这就是你所追求的 WebFormView ViewContext View ViewPath 显然 这只有在您使用标准网络表
  • 当查询字符串不存在时,RouteData.Values 返回 NullReferenceException

    如果在使用 URL 路由时查询字符串中不存在以下语句 我将收到 null 异常错误 如何处理以下语句的 NullReferenceException string lang RouteData Values Language ToStrin
  • Flutter CircularProgressIndicator() 动画在 Riverpod 的 ref.watch().when 内不起作用

    圆形进度指示器屏幕截图 我在用着Riverpod https pub dev packages flutter riverpod用于状态管理 CircularProgressIndicator任何条件下仅占用4个像素 我在物理设备和模拟器上
  • 将 NSCFString 转换为 NSString

    我正在从服务器获取一本字典 myDictionary rank 1 color red position middle 现在我想检查 if 条件中键 position 的值 我正在这样做 if myDictionary valueForKe
  • 从 Java 6 升级到 Java 7 后 Kerberos 损坏

    我有一个使用 spring security kerberos 扩展的工作应用程序 在 jboss 上运行 运行 java 6 我正在将 jvm 从 java 6 升级到 java 7 当我这样做时 使用与 java 6 相同的代码库和相同
  • 为什么 Laravel / Eloquent 的 fresh 函数返回一个对象,但调用它的属性返回 0?

    我的代码有一个地址Model在 Eloquent 中 它看起来像这样 值得注意的是 我的所有模型都使用 uuid 作为主键 它是由 MySQL 数据库中的触发器生成的 这本身就很有效
  • 非法参数异常?为什么?

    谁能向我解释为什么会出现此错误 或者更好的是我该如何处理它 我无法重现它 这是千分之一发生一次的错误之一 背景 用户正在尝试登录 显示进度对话框 在异步任务中发送http请求 进度对话框被关闭 发生错误 应用程序 FC 登录活动 java
  • 如何为 Arduino 或类似的微控制器编写 JavaScript 编译器? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我意识到这个问题会引起一些人的注意 并且我意识到 JavaScript 传统上是一种解释性语言 请让我解释一下 我是一名专门从事 We