在 Fibocom NL668-LA 模块上运行的 Rust 程序的简单“Hello World”示例。涵盖 Rust 语言交叉编译的基本概念。
如本文所述,可以将您的应用程序嵌入到 Fibocom 的 NL668 CAT4 模块中,该模块运行基于 Linux 的操作系统,称为 OpenLinux。正如您现在可能看到的那样,Rust 正在成为最流行的语言之一,并有望成为 C 和 C++ 语言的继任者。
让我们说明安装所有软件要求......
- 首先必须安装 Rust 和 Cargo,如果没有,如rust 官方页面中所述,可以运行以下命令来完成:
$ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
然后运行完成后:
$ rustc --version && cargo --version
如果 Rust 安装成功,结果将类似于:
Rustc是官方的 Rust 编译器,而Cargo是官方的 Rust 构建工具和包管理器。
Rust 有许多目标架构的平台支持,其中之一是 armv7-unknown-linux-gnueabi,NL668 的平台。
要安装目标包运行:
$ rustup target add armv7-unknown-linux-gnueabi
注意:要查看所有可用的架构类型:
$ rustc --print target-list
Rust 中用于 mdm9607 处理器的链接器与用于的链接器相同,gcc-arm-linux-gnueabi
所以让我们安装它!对于基于 Debian 的发行版运行:
$ sudo apt install gcc-arm-linux-gnueabi
如果运行时安装成功:
$ arm-linux-gnueabi-gcc --version
结果将类似于:
ADB(Android Debug Interface)是一个用于与模块通信的工具。在大多数情况下,ADB 用于 Android 开发。
该工具能够向设备发送命令、上传文件并提供对 Linux shell 的访问。
要在基于 Debian 的Linux 发行版中安装 ADB,请运行:
$ sudo apt-get update
$ sudo apt-get install adb
要启用驱动程序和权限,请遵循Victor 文章的第 3.4.3 节。
对于 Windows WSL,可以按照Victor 文章的这一部分中的说明安装以下内容
如果你不喜欢在 Powershell 和 Bash 之间切换,可以直接从你的 bash 终端使用 WSL 创建一个符号链接到你在 windows 目录中的可执行文件,如果你将 ADB 安装在C:/platform-tools
文件夹上,命令将是:
$ sudo ln -s /mnt/c/platform-tools/adb.exe /usr/bin/adb
WARN:使用此技术,不建议使用microcom访问/dev/smd7
ADB内部的AT-Commands终端(),因为AT命令中的移动网络可能无法正常工作。(我是根据经验说的)。
要开始一个新项目运行:
$ cargo new cross-arm
此命令将创建一个新文件夹,其中包含一个 cargo 项目。让我们来看看。
$ cd cross-arm
$ ls -a
默认情况下,该cargo new
命令会创建一个文件结构,其中包含一些文件和文件夹,让我们了解它们:
默认情况下,在src文件夹中,cargo 已经创建了一个带有“Hello World”示例的main.rs :
要进行交叉编译,您必须安装所需的目标。在我们的例子中,我们将安装armv7-unknown-linux-gnueabi:
$ rustup target add armv7-unknown-linux-gnueabi
要验证目标是否已正确安装:
$ rustup target list --installed
现在是时候为 arm-gcc 目标指定链接器了。它可以仅针对该项目在本地完成,也可以进行全局配置。
要在本地指定,请在项目文件夹内创建一个.cargo
文件夹并在其中创建一个config.toml
文件:
$ mkdir .cargo
$ cd .cargo
$ touch config.toml
编辑 config.toml 文件插入:
[target.armv7-unknown-linux-gnueabi]
linker = "arm-linux-gnueabi-gcc"
如果您希望对任何其他项目进行全局更改,请在 ~/.cargo/config.toml
文件中插入这些相同的两行。OBS:如果它不存在,您可以创建它。
另一件重要的事情是对您的项目进行静态编译,不要依赖任何其他共享库。可以在您的 .cargo/config.toml 中添加以下行:
rustflags = ["-C", "target-feature=+crt-static"]
现在,编译你的项目运行:
$ cargo build --target armv7-unknown-linux-gnueabi
您编译的二进制文件将在里面target/armv7-unknown-linux-gnueabi/debug/
Let's
推送到 NL668 并运行:
$ cd target/armv7-unknown-linux-gnueabi/debug/
$ adb push cross-arm /data
$ adb shell
# cd /data
# chmod +x cross-arm
# ./cross-arm
完成了!恭喜,您已经在 NL668 Fibocom 模块上创建了第一个 Rust 应用程序。接下来的步骤是尝试一些 crate 来访问一些其他硬件资源,如串行端口等。
玩得开心,再见!
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !