非官方 Numworks 扩展指南/设置开发环境
Numworks 做了一件很棒的事情 - 他们在 GitHub 上发布了计算器的完整源代码和 SDK,并通过最新的发布和错误修复积极地维护它。任何曾经想过为图形计算器编写自己的代码的人都知道,这与典型的计算器制造商相比,是一个惊人的 180° 转变。可以在 Numworks SDK 页面 上找到概述和 GitHub 链接,但文档不可避免地很稀疏,因此让我们帮助你设置一个功能完善的开发环境。
Windows 可能不是理想的开源嵌入式开发平台,但它确实很流行,并且是一个简单的起点。得益于 Msys2 项目,为 Epsilon(Numworks 操作系统)设置一个类似 Linux 的开发环境非常容易。
按照 http://www.msys2.org/ 上的所有说明下载并运行 Msys2 安装程序。本节将假设你将 64 位 Msys2 环境安装在 c:/msys64,如果安装在其他位置,则需要调整列出的路径。这将为你提供一个功能完善的命令行,但没有任何开发工具(甚至没有 vi)。所以接下来是通过输入以下命令来安装开发工具链
pacman -S mingw-w64-x86_64-gcc mingw-w64-x86_64-freetype mingw-w64-x86_64-fltk git make bison python vim
接下来,你需要将 mingw64 工具添加到你的路径中,以及为计算器使用的 ARM M4 处理器添加 ARM 编译器。你将在几个步骤中安装编译器,但我们将在此时添加路径。
分步进行
- 转到 'c:\msys64\etc\skel'。
- 打开 '.bash_profile' 文档。
- 在文档末尾添加以下命令
export PATH=/mingw64/bin:/c/arm/bin:$PATH
。 - 保存文档。
- 转到 'c:\msys64\home\[YOUR USERNAME]'。
- 打开 '.bash_profile' 文档。
- 在文档末尾添加以下命令
export PATH=/mingw64/bin:/c/arm/bin:$PATH
。 - 保存文档。
重新打开 Msys2 终端并键入 echo $PATH
。如果一切正常,你应该在其他几个路径中看到 /mingw64/bin 和 /c/arm/bin 路径。
ARM 编译器不属于 Msys2,但可以在 ARM 下载页面 免费获得。
- 转到 ARM 下载页面 并下载 Windows 32 的 .ZIP 文件(没有 64 位版本)。
- 打开 .ZIP 文件并将所有内容解压缩到一个新的文件夹
C:/arm/
中。 - 你现在应该拥有几个文件夹,其中一个文件夹是
C:/arm/bin
。由于我们之前已经将此目录添加到你的 PATH 中,因此它已准备就绪。
你需要使用 git 从 GitHub 下载 SDK,以及在开发新代码时管理你的版本。
- 安装使用 HTTPS 的 git 所需的 SSL 证书。
pacman -S mingw-w64-x86_64-ca-certificates ca-certificates
- 告诉 git 使用这些证书。
git config --system http.sslcainfo /mingw64/ssl/certs/ca-bundle.crt
- 如果你需要使用代理,则执行
export http_proxy=<在此处插入 http 代理地址:端口>
和export https_proxy=<在此处插入 https 代理地址:端口>
。如果你不确定,请先尝试不使用代理。如果失败,请联系运行网络的人员获取正确的代理信息。 - 克隆 SDK 存储库时,它将被创建在当前目录中的名为
epsilon
的文件夹中,因此请创建你想要从中工作的目录并移动到该目录。例如:mkdir numworks
然后cd numworks
。 - 现在你可以使用
git clone https://github.com/numworks/epsilon.git
克隆 SDK 存储库
终于到了构建固件的时候了!
- 切换到 epsilon 目录
cd epsilon
make MODEL=n01x0 clean
make MODEL=n01x0
其中 x 为 0 或 1。你可以在计算器背面找到你的型号。
你的计算机将花费一段时间来编译所有代码。你可能会在编译期间看到一些警告,但你很可能可以忽略它们。如果你遇到错误,你需要阅读错误消息,看看是否能找出问题所在。如果一切都不奏效,请尝试回到存储库中的最后一个标记版本。
注意:如果你遇到名为“ft2build.h”的文件问题或任何包含“pkg-config”的错误,你应该考虑执行 pacman -S mingw-w64-x86_64-pkg-config
片刻之后,你将使用名为 dfu-util 的程序将新编译的固件下载到你的计算器。但是,你第一次将计算器插入 USB 时安装并绑定到计算器的默认驱动程序将不适用于开发,因此我们将使用名为 Zadig 的程序告诉 Windows 将你的计算器指向标准 Windows USB 驱动程序。
- 在我们开始之前,让我们完成最简单的步骤,使用回形针或铅笔按下计算器背面的复位按钮。不要忘记,这将删除所有自定义脚本!
- 安装驱动程序。
- 在 Google 上搜索 'Numworks Workshop'。
- 官方网站将要求你登录。如果需要,请创建一个帐户并登录。
- 你将看到一个名为 '更新我的设备' 的按钮,请点击它。
- 点击下一页,点击 '下载驱动程序' 按钮并安装驱动程序。
- 下载 Zadig 的最新版本并运行它。
- 将计算器重新插入 USB 并按下 RESET 按钮。(是的,再次按下。在测试代码时,你将经常这样做。)
- 在 Zadig 的选项菜单中,确保选中了 '列出所有设备'。
- 在设备下拉列表中,选择 'NumWorks 计算器'(也可能显示为 'STM32 BOOTLOADER')。
- USB ID 应为 0483 DF11 或 A291,驱动程序可能显示为 STTub30。
- 你需要将 STTub30 替换为 WinUSB,因此请在绿色箭头右侧选择它。
- 点击 '替换驱动程序',Zadig 将安装新的驱动程序。
- 成功消息显示后,你可以关闭 Zadig。
- 从 USB 上拔下计算器并按下 RESET 按钮。
最后,你终于可以将新构建的固件下载到计算器...在我们安装了另一个部分:dfu-util 之后。
- 从 http://dfu-util.sourceforge.net/releases/ 下载最新的 Windows 版本的 .ZIP 文件。
- 解压缩 .ZIP 文件,并将 dfu-util-static.exe 复制到 Msys2 的
/usr/local/bin
目录中。如果需要,请创建bin
目录。 - 将复制的文件重命名为
dfu-util.exe
。 - 将计算器连接到 USB,并按重置按钮。(是的,再次按。我告诉过你,这将经常发生。)
- 现在,您终于可以从 epsilon 目录中运行
make MODEL=n01x0 epsilon_flash
,其中 x 为 0 或 1。您可以在计算器背面找到您的型号编号。
在命令行中,您应该看到一条简短的消息,提示您的设备即将刷入固件,并给出重置设备的说明。然后是有关打开和声明 DFU 设备的几条消息,然后是下载进度条。完成后,计算器将自行重置并启动您新下载的固件!您可能不会看到任何差异,因为您可能已经在运行最新的固件,但是运行在计算器上的固件是在您的计算机上直接从源代码构建的,现在您可以修改它了。
恭喜您!您现在是一位 Epsilon 开发人员。花几分钟时间访问 http://numworks.com 和 https://www.reddit.com/r/numworks,并向 Numworks 表示衷心的感谢,感谢他们让这款伟大的设备真正开源!
ARM 编译器可以在 ARM 下载页面 免费获得。
- 访问 ARM 下载页面 并下载适用于 Linux 64 位的 .tar.bz2 文件(没有 32 位版本)。
- 将所有内容解压缩到
/opt
:sudo tar xvjpf /path/to/downloaded/gcc-arm-none-eabi-6-2017-q2-update-linux.tar.bz2 -C /opt
。如果您没有 sudo 权限,可以解压缩到~
。 - 现在您应该有几个文件夹,其中一个是
/opt/gcc-arm-none-eabi-6-2017-q2-update/bin
。将此文件夹添加到您的 PATH 中:export PATH=$PATH:/opt/gcc-arm-none-eabi-6-2017-q2-update/bin
你需要使用 git 从 GitHub 下载 SDK,以及在开发新代码时管理你的版本。
- 安装 git 和 dfu-util
- 在 Gentoo 和基于 Gentoo 的系统(funtoo、calculate 等)上:
emerge -v git dfu-util freetype bison flex fltk
- 在 Debian 和基于 Debian 的系统(Ubuntu 等)上:
apt-get install git dfu-util build-essential libfreetype6-dev bison flex libfltk1.3-dev
您可能需要安装其他依赖项。 - 在 Arch Linux 上:
sudo pacman -S git dfu-util freetype2 base-devel fltk libpng
- 其他系统...
- 在 Gentoo 和基于 Gentoo 的系统(funtoo、calculate 等)上:
- 克隆 SDK 存储库时,它将被创建在当前目录中的名为
epsilon
的文件夹中,因此请创建你想要从中工作的目录并移动到该目录。例如:mkdir numworks
然后cd numworks
。 - 现在你可以使用
git clone https://github.com/numworks/epsilon.git
克隆 SDK 存储库
终于到了构建固件的时候了!
- 切换到 epsilon 目录
cd epsilon
,其中 x 为 0 或 1,取决于您的型号。型号可以在计算器背面找到。 make MODEL=n01x0 clean
make MODEL=n01x0 USERNAME="yourusername"
用您想要在“关于”屏幕上显示的名称替换用户名。引号是必需的。
你的计算机将花费一段时间来编译所有代码。你可能会在编译期间看到一些警告,但你很可能可以忽略它们。如果你遇到错误,你需要阅读错误消息,看看是否能找出问题所在。如果一切都不奏效,请尝试回到存储库中的最后一个标记版本。
最后,您终于可以将新构建的固件上传到计算器。
- 将计算器连接到 USB,并按重置按钮。
- 从 epsilon 目录运行
make app_flash
。 - 从 epsilon 目录运行
make epsilon_flash
,将新的 SDK 上传到计算器(擦除所有程序和数据 : 首先将您的工作保存在 Numworks 网站上)。
在命令行中,您应该看到一条简短的消息,提示您的设备即将刷入固件,并给出重置设备的说明。然后是有关打开和声明 DFU 设备的几条消息,然后是下载进度条。完成后,计算器将自行重置并启动您新下载的固件!您可能不会看到任何差异,因为您可能已经在运行最新的固件,但是运行在计算器上的固件是在您的计算机上直接从源代码构建的,现在您可以修改它了。
恭喜您!您现在是一位 Epsilon 开发人员。花几分钟时间访问 http://numworks.com 和 https://www.reddit.com/r/numworks,并向 Numworks 表示衷心的感谢,感谢他们让这款伟大的设备真正开源!