0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何实现对TS-7680硬件的支持

星星科技指导员 来源:嵌入式计算设计 作者:Michael Schmidt 2022-06-29 14:20 次阅读

该项目建立在文章“使用 Node.js 加快嵌入式系统上市时间”的基础上,提供并展示了如何为简单的 Web 服务器实现代码。Web 服务器提供了控制板的能力,例如通过获取和设置数字 I/O (DIO) 值(或打开和关闭 LED)。它还提供了一个简单的客户端网页来访问此功能,使其成为一个独立的解决方案,用于通过电路板本身提供的网页来控制电路板。

在“在运行 Linux嵌入式单板计算机上开始使用 node.js ”中,我们展示了如何在Technologic Systems TS-7680等单板计算机 (SBC) 上安装 node.js。在这个示例项目中,我们展示了如何实现对 TS-7680 硬件的支持,并提供一个简单的网页来控制板。DIO 控制通过可视化界面进行说明,该界面可以显示和更改板上四个 LED 的状态。板上的模数转换器ADC) 的当前状态也会定期显示和更新。最后,提供了一个按钮,该按钮对加速度计进行一秒钟的采样并显示其数据图表。

该项目由两部分组成:

在用户(客户端)网络浏览器中运行的 JavaScript 和 HTML

用于直接硬件接口(服务器)的 Node.js 项目文件(包括 JavaScript、包文件和 C++ 源代码)。

这将在支持 ARMv5 CPU、使用节点 0.10 的 Technologic Systems TS-7680 上进行演示。

注意:正确安装此演示需要具有 256 MB 板载 RAM 的 TS-7680。如果您想在只有 128 MB RAM 的板上运行此演示,请从该 ftp 服务器下载包含 service-mx28adc 模块的压缩包, 并通过解压缩包含您的 node_modules 目录的目录来安装它。之后apt install命令将识别该模块已经安装并且不会尝试编译它。

让我们看看我们将要创建的文件。

对于客户:

ts7680.js –这是 TS-7680 用户界面的实际实现。它将显示 LED 和 ADC 的当前状态,并提供对加速度计进行采样的接口。

index.html –这是显示用户界面的 HTML 代码。

7680-0000.JPG 至 7680-1111.JPG –这些图像文件将在 Web 界面中显示 TS-7680 的板载 LED 状态。LED 上的每个位组合(0000、0001、0010 等)都存在一个文件。

服务器上有几个 Node.js 包,每个包执行特定的功能:

ts7680-demo-server –这是顶级服务器,用于指定和控制服务器组件的实例化。它还包含使整个项目成为独立包所需的所有客户端文件。

server.js –实现

package.json –清单

README.md – Markdown格式的自述文件

file/ –包含客户端文件的子目录

express-modular-server –这是一个模块化框架,用于从 Node.js 提供 HTTP 和 HTTPS 网页。

server.js –实现

package.json –清单

README.md – Markdown格式的自述文件

service-app –服务于 Web 应用程序(app.html + app.js + 应用程序特定模块)的插件,用于在其中实现的默认文件处理。

default-file.js -静态文件服务的实现

package.json –清单

README.md – Markdown格式的自述文件

app.js –应用处理的实现(本项目中未使用)

service-mma8451 –为 TS-7680 上的NXP MMA8451 3 轴加速度计实现应用程序编程接口 (API) 支持的插件。

mma8451.js –实施

package.json –清单

README.md – Markdown格式的自述文件

service-mx28adc –实现对TS-7680 上i.MX28 CPU 低分辨率模数转换器 (LRADC)外围设备的支持的插件。

mx28adc.js –实现 API 支持的插件

mx28adc.cc –实施

package.json –清单

Binding.gyp –构建文件

README.md – Markdown格式的自述文件

service-gpio –通过 Linux /sys 文件系统实现对 GPIO 的 API 支持的插件。

gpio.js –实现

package.json –清单

README.md – Markdown格式的自述文件

现在,进入代码。

ts7680-演示服务器

首先,让我们看看我们将调用以运行我们的服务器的顶级 JavaScript 文件:server.js。

express-modular-server 软件包使创建 Web 服务器变得容易。我们为每个服务编写一个插件,用于初始化 API 端点和服务请求。然后我们配置服务器,指定每个所需的端点,并启动服务器。

对上面的代码逐段剖析,我们首先将当前工作目录更改为安装包的目录。这是因为我们的包将所有静态提供的文件封装在file/相对于该目录的子目录中。

process.chdir(__dirname)

接下来,我们需要 express-modular-server:

var server = require(“express-modular-server”)

这将返回一个函数,我们使用初始化数据作为同一表达式的一部分调用该函数:

({

http:true

})

在这里,我们传递一个包含初始化参数的对象。我们感兴趣的唯一参数是运行 HTTP 服务器。参数http:true指定了这一点,尽管我们也可以提供一个数字端口而不是 true。默认使用端口 8080。

然后我们将每个 API 添加到服务器,从包名称中省略“service-”前缀。初始化返回模块对象,该对象具有添加与关键 API 关联的 API 的功能。

.API(“gpio”)

当这个函数返回时,gpio 插件(来自 service-gpio 包)被加载。此函数返回模块对象本身,因此我们可以链接另一个调用以添加任意数量的 API 端点:

.API(“mma8451”)

.API(“mx28adc”)

.API(“app”)

现在我们为加速度计、ADC 和服务 Web 应用程序添加了端点。添加完端点后,我们再调用一次来启动服务器:

.start()

而已!这是我们的代码的样子:

poYBAGK774OAV_kBAACIiwacH7s782.png

在安装演示之前需要运行一些命令才能使安装和构建过程正常工作。首先,由于 Debian 中缺少标头,我们需要升级 npm 并设置一个符号链接来指向它:

poYBAGK7742ATI2qAABQwTFpthM870.png

一旦 npm 升级,任何时候它运行都会返回一个错误,说 npm 不支持 node.js v0.10.29,你应该升级到更新的版本。忽略此警告,因为 v0.10.29 是 TS-7680 支持的最新版本,因为较新的版本缺少 ARM v5 支持。

您可以使用单个命令安装整个演示:

npm install ts7680-demo-server

我们的下一部分将从 GPIO 模块开始详细检查服务器使用的模块。

审核编辑:郭婷

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • led
    led
    +关注

    关注

    237

    文章

    22350

    浏览量

    645538
  • adc
    adc
    +关注

    关注

    95

    文章

    5629

    浏览量

    538900
  • 服务器
    +关注

    关注

    12

    文章

    8013

    浏览量

    82208
收藏 人收藏

    评论

    相关推荐

    在电路中使用AD7680检测一个电压值,AD7680的数据输出管脚一直为低电平是为什么?

    我在电路中使用AD7680检测一个电压值,大楖5秒检测一次,使用CPLD对AD7680进行控制,现在AD7680芯片的SCLK设置为1MHZ,AD7680的数据输出管脚一直为低电平,没
    发表于 12-15 08:08

    基于ADSP-TS201的着陆雷达恒虚警电路实现

    电子发烧友网站提供《基于ADSP-TS201的着陆雷达恒虚警电路实现.pdf》资料免费下载
    发表于 10-23 09:59 0次下载
    基于ADSP-<b class='flag-5'>TS</b>201的着陆雷达恒虚警电路<b class='flag-5'>实现</b>

    如何实现硬件断点呢?

    我想问一下如何实现硬件断点呢,我在底层debug模块中定义了如下寄存器 但是在顶层运行硬件断点的时候依旧会提示报错 请问这种情况是顶层编译器没有支持吗?还是说要在其他的模块中再次
    发表于 08-11 12:54

    求助,TD支持哪些硬件描述语言,支持混合语言吗?

    TD支持哪些硬件描述语言,支持混合语言吗?
    发表于 08-11 08:21

    RD151TS3316ARP RD151TS3326ARP 数据表

    RD151TS3316ARP RD151TS3326ARP 数据表
    发表于 06-27 18:31 0次下载
    RD151<b class='flag-5'>TS</b>3316ARP RD151<b class='flag-5'>TS</b>3326ARP 数据表

    RD151TS3315ARP RD151TS3325ARP 数据表

    RD151TS3315ARP RD151TS3325ARP 数据表
    发表于 06-27 18:31 0次下载
    RD151<b class='flag-5'>TS</b>3315ARP RD151<b class='flag-5'>TS</b>3325ARP 数据表

    RD151TS3314ARP RD151TS3324ARP 数据表

    RD151TS3314ARP RD151TS3324ARP 数据表
    发表于 06-27 18:31 0次下载
    RD151<b class='flag-5'>TS</b>3314ARP RD151<b class='flag-5'>TS</b>3324ARP 数据表

    RD151TS3313ARP RD151TS3323ARP 数据表

    RD151TS3313ARP RD151TS3323ARP 数据表
    发表于 06-27 18:30 0次下载
    RD151<b class='flag-5'>TS</b>3313ARP RD151<b class='flag-5'>TS</b>3323ARP 数据表

    RD151TS3312ARP RD151TS3322ARP 数据表

    RD151TS3312ARP RD151TS3322ARP 数据表
    发表于 06-27 18:30 0次下载
    RD151<b class='flag-5'>TS</b>3312ARP RD151<b class='flag-5'>TS</b>3322ARP 数据表

    RD151TS3316ARP RD151TS3326ARP 数据表

    RD151TS3316ARP RD151TS3326ARP 数据表
    发表于 05-08 18:50 0次下载
    RD151<b class='flag-5'>TS</b>3316ARP RD151<b class='flag-5'>TS</b>3326ARP 数据表

    RD151TS3315ARP RD151TS3325ARP 数据表

    RD151TS3315ARP RD151TS3325ARP 数据表
    发表于 05-08 18:49 0次下载
    RD151<b class='flag-5'>TS</b>3315ARP RD151<b class='flag-5'>TS</b>3325ARP 数据表

    RD151TS3314ARP RD151TS3324ARP 数据表

    RD151TS3314ARP RD151TS3324ARP 数据表
    发表于 05-08 18:49 0次下载
    RD151<b class='flag-5'>TS</b>3314ARP RD151<b class='flag-5'>TS</b>3324ARP 数据表

    RD151TS3313ARP RD151TS3323ARP 数据表

    RD151TS3313ARP RD151TS3323ARP 数据表
    发表于 05-08 18:49 0次下载
    RD151<b class='flag-5'>TS</b>3313ARP RD151<b class='flag-5'>TS</b>3323ARP 数据表

    RD151TS3312ARP RD151TS3322ARP 数据表

    RD151TS3312ARP RD151TS3322ARP 数据表
    发表于 05-08 18:49 0次下载
    RD151<b class='flag-5'>TS</b>3312ARP RD151<b class='flag-5'>TS</b>3322ARP 数据表

    硬件实现

    如何挑选硬件接口,实现多功能测试板对外部板实现各类测试功能,有推荐的吗
    发表于 04-19 15:54