资料介绍
描述
在 Fibocom NL668-LA 模块上运行的 Rust 程序的简单“Hello World”示例。涵盖 Rust 语言交叉编译的基本概念。
一、简介
如本文所述,可以将您的应用程序嵌入到 Fibocom 的 NL668 CAT4 模块中,该模块运行基于 Linux 的操作系统,称为 OpenLinux。正如您现在可能看到的那样,Rust 正在成为最流行的语言之一,并有望成为 C 和 C++ 语言的继任者。
2.依赖关系
- NL668-LA模块(或任何其他广和通模块)
- 锈
- 海湾合作委员会
- Linux操作系统(可以是虚拟机或WSL)
- VS代码
- ADB(安卓调试桥)
3.安装软件依赖
让我们说明安装所有软件要求......
3.1 铁锈
- 首先必须安装 Rust 和 Cargo,如果没有,如rust 官方页面中所述,可以运行以下命令来完成:
$ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
然后运行完成后:
$ rustc --version && cargo --version
如果 Rust 安装成功,结果将类似于:
Rustc是官方的 Rust 编译器,而Cargo是官方的 Rust 构建工具和包管理器。
3.2 Armv7l 的目标
Rust 有许多目标架构的平台支持,其中之一是 armv7-unknown-linux-gnueabi,NL668 的平台。
要安装目标包运行:
$ rustup target add armv7-unknown-linux-gnueabi
注意:要查看所有可用的架构类型:
$ rustc --print target-list
3.3 安装链接器
Rust 中用于 mdm9607 处理器的链接器与用于的链接器相同,gcc-arm-linux-gnueabi
所以让我们安装它!对于基于 Debian 的发行版运行:
$ sudo apt install gcc-arm-linux-gnueabi
如果运行时安装成功:
$ arm-linux-gnueabi-gcc --version
结果将类似于:
3.4 ADB(安卓设备桥)
ADB(Android Debug Interface)是一个用于与模块通信的工具。在大多数情况下,ADB 用于 Android 开发。
该工具能够向设备发送命令、上传文件并提供对 Linux shell 的访问。
3.4.1 对于 Linux
要在基于 Debian 的Linux 发行版中安装 ADB,请运行:
$ sudo apt-get update
$ sudo apt-get install adb
要启用驱动程序和权限,请遵循Victor 文章的第 3.4.3 节。
3.4.2 对于(Windows WSL)
对于 Windows WSL,可以按照Victor 文章的这一部分中的说明安装以下内容
3.4.3 在 Windows 上从 WSL 使用 ADB
如果你不喜欢在 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命令中的移动网络可能无法正常工作。(我是根据经验说的)。
4. 项目
4.1 创建项目
要开始一个新项目运行:
$ cargo new cross-arm
此命令将创建一个新文件夹,其中包含一个 cargo 项目。让我们来看看。
$ cd cross-arm
$ ls -a
默认情况下,该cargo new
命令会创建一个文件结构,其中包含一些文件和文件夹,让我们了解它们:
- .git - 默认情况下,cargo 会为你的项目初始化一个 git 仓库。如果你熟悉 git,你就会知道这个文件夹是你项目中 git 存储更改的地方。
- .gitignore - 此文件夹包含应忽略哪些文件或目录的信息。默认情况下,它仅忽略目标文件夹。
- Cargo.toml - 在此文件中,您指定您的依赖项和您以后可能在项目中使用的包(包就像 C/C++ 中的库)。
- Cargo.lock - 你不应该编辑这个文件,它是一个自动生成的货物文件,使用映射你的依赖关系的 cargo.toml 上的信息。
- src - 这是您的 main.rs 文件所在的位置,您可能创建的其他源文件也将保留。
- target - 此文件夹是您编译的二进制文件所在的位置。
默认情况下,在src文件夹中,cargo 已经创建了一个带有“Hello World”示例的main.rs :
4.2 安装目标
要进行交叉编译,您必须安装所需的目标。在我们的例子中,我们将安装armv7-unknown-linux-gnueabi:
$ rustup target add armv7-unknown-linux-gnueabi
要验证目标是否已正确安装:
$ rustup target list --installed
4.3 指定链接器
现在是时候为 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:如果它不存在,您可以创建它。
5.静态编译
另一件重要的事情是对您的项目进行静态编译,不要依赖任何其他共享库。可以在您的 .cargo/config.toml 中添加以下行:
rustflags = ["-C", "target-feature=+crt-static"]
6.跑步
现在,编译你的项目运行:
$ 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 来访问一些其他硬件资源,如串行端口等。
玩得开心,再见!
- 基于ARM处理器的TFT-LCD显示系统 34次下载
- 基于ARM处理器的禽舍环境监控系统 31次下载
- uCOS II在ARM处理器上移植过程中的中断处理及三个要点资料下载
- ARM处理器内核的详细资料概述 15次下载
- OMAPL138B C6-Integra™ DSP+ARM® 处理器 6次下载
- 51单片机和ARM处理器的比较及ARM处理器相关知识的详解 66次下载
- 初识ARM系列处理器 3次下载
- 基于ARM 微处理器的故障记录系统 57次下载
- ARM微处理器的编程模型
- ARM处理器的节能优势
- uc/os-ii在ARM处理器上的移植
- 基于ARM的PC/104处理器模块设计
- UC/OS-Ⅱ操作系统在ARM处理器上的移植
- μC/OS-Ⅱ在ARM处理器上的移植介绍
- ARM微处理器的编程模型
- 什么是ARM处理器?与x86的比较及其优缺点 482次阅读
- ARM处理器如何编写Bootloader 731次阅读
- ARM协处理器接口 1420次阅读
- 各类ARM处理器的区别及应用 6048次阅读
- 嵌入式系统架构之ARM处理器 2211次阅读
- 解答arm处理器的七种工作模式 1.6w次阅读
- 浅谈arm处理器的优势 1.2w次阅读
- 解答arm是什么/arm处理器采用什么技术 8078次阅读
- ARM处理器在节能方面具有哪些优势 1267次阅读
- arm的协处理器有几个?ARM协处理器详解 8823次阅读
- ARM处理器的2种工作状态和7种工作模式及37个寄存器介绍 1.4w次阅读
- 浅谈ARM处理器的特点和体系结构 1.7w次阅读
- ARM处理器简介及RISC特点 1.2w次阅读
- 基于ARM处理器的高效异常处理解决方案 1286次阅读
- 如何在芯片的PL上构建软核处理器? 1068次阅读
下载排行
本周
- 1山景DSP芯片AP8248A2数据手册
- 1.06 MB | 532次下载 | 免费
- 2RK3399完整板原理图(支持平板,盒子VR)
- 3.28 MB | 339次下载 | 免费
- 3TC358743XBG评估板参考手册
- 1.36 MB | 330次下载 | 免费
- 4DFM软件使用教程
- 0.84 MB | 295次下载 | 免费
- 5元宇宙深度解析—未来的未来-风口还是泡沫
- 6.40 MB | 227次下载 | 免费
- 6迪文DGUS开发指南
- 31.67 MB | 194次下载 | 免费
- 7元宇宙底层硬件系列报告
- 13.42 MB | 182次下载 | 免费
- 8FP5207XR-G1中文应用手册
- 1.09 MB | 178次下载 | 免费
本月
- 1OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 2555集成电路应用800例(新编版)
- 0.00 MB | 33566次下载 | 免费
- 3接口电路图大全
- 未知 | 30323次下载 | 免费
- 4开关电源设计实例指南
- 未知 | 21549次下载 | 免费
- 5电气工程师手册免费下载(新编第二版pdf电子书)
- 0.00 MB | 15349次下载 | 免费
- 6数字电路基础pdf(下载)
- 未知 | 13750次下载 | 免费
- 7电子制作实例集锦 下载
- 未知 | 8113次下载 | 免费
- 8《LED驱动电路设计》 温德尔著
- 0.00 MB | 6656次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935054次下载 | 免费
- 2protel99se软件下载(可英文版转中文版)
- 78.1 MB | 537798次下载 | 免费
- 3MATLAB 7.1 下载 (含软件介绍)
- 未知 | 420027次下载 | 免费
- 4OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 5Altium DXP2002下载入口
- 未知 | 233046次下载 | 免费
- 6电路仿真软件multisim 10.0免费下载
- 340992 | 191187次下载 | 免费
- 7十天学会AVR单片机与C语言视频教程 下载
- 158M | 183279次下载 | 免费
- 8proe5.0野火版下载(中文版免费下载)
- 未知 | 138040次下载 | 免费
评论
查看更多