电子发烧友App

硬声App

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

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

3天内不再提示
创作
电子发烧友网>电子资料下载>电子资料>在ARM处理器上运行Rust

在ARM处理器上运行Rust

2023-06-13 | zip | 0.00 MB | 次下载 | 2积分

资料介绍

描述

在 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 安装成功,结果将类似于:

pYYBAGPXI_SAU0PoAAAfoEIWLTs996.png
打印 rustc 和 cargo 版本
 

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

结果将类似于:

pYYBAGPXI_aAZyDgAABHCegw3Es934.png
arm-gcc 的输出
 

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/smd7ADB内部的AT-Commands终端(),因为AT命令中的移动网络可能无法正常工作。(我是根据经验说的)。

4. 项目

4.1 创建项目

要开始一个新项目运行:

$ cargo new cross-arm

此命令将创建一个新文件夹,其中包含一个 cargo 项目。让我们来看看。

$ cd cross-arm
$ ls -a
poYBAGPXI_iAQiO2AAAaLEuhKPE075.png
 

默认情况下,该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 :

pYYBAGPXI_uAKGlKAAAe3R4fF94787.png
 

4.2 安装目标

要进行交叉编译,您必须安装所需的目标。在我们的例子中,我们将安装armv7-unknown-linux-gnueabi:

$ rustup target add armv7-unknown-linux-gnueabi

要验证目标是否已正确安装:

$ rustup target list --installed
poYBAGPXI_2Ae3F3AAAX7AMPbLw029.png
安装目标
 

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
pYYBAGPXJACAQJ6yAAAxZ8xEQBY691.png
建筑输出
 

您编译的二进制文件将在里面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
pYYBAGPXJAKAUW7cAAAxLgd_QvE674.png
使用 ADB 推送到模块
 
poYBAGPXJASAR_79AAAQNa77ky4065.png
亚行外壳内部
 

完成了!恭喜,您已经在 NL668 Fibocom 模块上创建了第一个 Rust 应用程序。接下来的步骤是尝试一些 crate 来访问一些其他硬件资源,如串行端口等。

玩得开心,再见!


下载该资料的人也在下载 下载该资料的人还在阅读
更多 >

评论

查看更多

下载排行

本周

  1. 1山景DSP芯片AP8248A2数据手册
  2. 1.06 MB  |  532次下载  |  免费
  3. 2RK3399完整板原理图(支持平板,盒子VR)
  4. 3.28 MB  |  339次下载  |  免费
  5. 3TC358743XBG评估板参考手册
  6. 1.36 MB  |  330次下载  |  免费
  7. 4DFM软件使用教程
  8. 0.84 MB  |  295次下载  |  免费
  9. 5元宇宙深度解析—未来的未来-风口还是泡沫
  10. 6.40 MB  |  227次下载  |  免费
  11. 6迪文DGUS开发指南
  12. 31.67 MB  |  194次下载  |  免费
  13. 7元宇宙底层硬件系列报告
  14. 13.42 MB  |  182次下载  |  免费
  15. 8FP5207XR-G1中文应用手册
  16. 1.09 MB  |  178次下载  |  免费

本月

  1. 1OrCAD10.5下载OrCAD10.5中文版软件
  2. 0.00 MB  |  234315次下载  |  免费
  3. 2555集成电路应用800例(新编版)
  4. 0.00 MB  |  33566次下载  |  免费
  5. 3接口电路图大全
  6. 未知  |  30323次下载  |  免费
  7. 4开关电源设计实例指南
  8. 未知  |  21549次下载  |  免费
  9. 5电气工程师手册免费下载(新编第二版pdf电子书)
  10. 0.00 MB  |  15349次下载  |  免费
  11. 6数字电路基础pdf(下载)
  12. 未知  |  13750次下载  |  免费
  13. 7电子制作实例集锦 下载
  14. 未知  |  8113次下载  |  免费
  15. 8《LED驱动电路设计》 温德尔著
  16. 0.00 MB  |  6656次下载  |  免费

总榜

  1. 1matlab软件下载入口
  2. 未知  |  935054次下载  |  免费
  3. 2protel99se软件下载(可英文版转中文版)
  4. 78.1 MB  |  537798次下载  |  免费
  5. 3MATLAB 7.1 下载 (含软件介绍)
  6. 未知  |  420027次下载  |  免费
  7. 4OrCAD10.5下载OrCAD10.5中文版软件
  8. 0.00 MB  |  234315次下载  |  免费
  9. 5Altium DXP2002下载入口
  10. 未知  |  233046次下载  |  免费
  11. 6电路仿真软件multisim 10.0免费下载
  12. 340992  |  191187次下载  |  免费
  13. 7十天学会AVR单片机与C语言视频教程 下载
  14. 158M  |  183279次下载  |  免费
  15. 8proe5.0野火版下载(中文版免费下载)
  16. 未知  |  138040次下载  |  免费