【北京迅为】《STM32MP157开发板嵌入式开发指南》-第二十七章 交叉编译器的安装和使用

iTOP-STM32MP157开发板采用ST推出的双核cortex-A7+单核cortex-M4异构处理器,既可用Linux、又可以用于STM32单片机开发。开发板采用核心板+底板结构,主频650M、1G内存、8G存储,核心板采用工业级板对板连接器,高可靠,牢固耐用,可满足高速信号环境下使用。共240PIN,CPU功能全部引出:底板扩展接口丰富底板板载4G接口(选配)、千兆以太网、WIFI蓝牙模块HDMI、CAN、RS485、LVDS接口、温湿度传感器(选配)光环境传感器、六轴传感器、2路USB OTG、3路串口,CAMERA接口、ADC电位器、SPDIF、SDIO接口等


第三部分 嵌入式平台入门实操

第二十七章 交叉编译器的安装和使用

本章内容对应视频讲解链接(在线观看):https://www.bilibili.com/video/BV1M7411m7wT?p=29

前面我们写了linux上第一个c程序 heollo world ,我们是使用gcc 编译器进行代码的编译,编译得到的可执行文件只能在X86结构的PC上运行,我们来看下,在我的ubuntu下有一个 hello.c ,这个程序也非常简单,就是一个 hello world ,我们来编译一下,然后我们运行下可执行文件,这个可执行文件是可以在PC上运行的。如下图所示。

然后我们使用 file 命令来看下这个文件,这个文件是可以在X86上运行的,但是它不能在ARM上运行,因为它这里写的是X86。如下图所示。 

如果我们想在ARM上运行,就要使用ARM的编译器,然后在X86上进行编译。因为我们使用 ARM 的编译器编译完了之后,是把我们的可执行程序放到开发板上来运行,而不是在PC上运行的,这个过程大家可以把它理解成交叉,然后再和我们的编译器结合起来就叫做交叉编译器。编译器在用户网盘资料"iTOP-STM32MP157开发板光盘资料\04_TF-A、uboot和内核源码\交叉编译器” 路径下的gcc-arm-10.3-2021.07-x86_64-arm-none-linux-gnueabihf.tar.xz”,如下图所示。 

接着通过 ssh 工具,将“iTOP-STM32MP157开发板光盘资料\04_TF-A、uboot和内核源码\交叉编译器” 路径下的gcc-arm-10.3-2021.07-x86_64-arm-none-linux-gnueabihf.tar.xz”编译器拷贝到“/usr/local/arm/”目录下。注意:此编译器用来编译uboot和kernel,编译应用程序的交叉编译器应与文件系统的编译器保持一致。

使用如下命令解压编译器,如下图所示,

tar -vxf gcc-arm-10.3-2021.07-x86_64-arm-none-linux-gnueabihf.tar.xz

 

解压完成,会得到“gcc-arm-10.3-2021.07-x86_64-arm-none-linux-gnueabihf”文件夹。

使用命令“cd ~”进入文件系统根目录下(一定要使用 root 账户),接着使用“vi .bashrc”命令,打开环境变量配置文件,如下图所示。

 

在环境变量配置文件最底行,添加以下内容。

export PATH=$PATH:/usr/local/arm/gcc-arm-10.3-2021.07-x86_64-arm-none-linux-gnueabihf/bin

如下图所示,然后保存退出。

 

接着还需要更新一下环境变量,如下图所示,使用命令“source .bashrc”。 

最后做一下环境变量测试,Ubuntu 控制台中输入“arm-”,然后按键盘上的“Tab” 键,会出现如下图所示内容。 

至此我们的编译环境就搭建完成了。

然后我们进到test目录下,我们使用交叉编译器来编译下 hello.c ,编译方法和我们之前使用gcc 编译方法是一样的,gcc加 hello.c这个源文件,然后后边跟上-o 指定的文件名称,格式是一摸一样的,只不过把gcc编译器换成了交叉编译器,使用 arm-none-linux-gnueabi- 后边跟上gcc 和我们要编译的原文件的名字,-o指定下我们要生成的可执行文件,在此我们还要在设置一下环境变量,这样我们就编译成功了,如下图所示。

arm-none-linux-gnueabihf-gcc hello.c -o hello -static

 

然后我们可以来运行下这个 hello ,大家看他这里是提示错误的,我们不能执行,如下图所示。 

 

使用file 命令来看下,这里显示的架构是arm ,说明我们这个可执行文件是在开发板上运行的而不是在X86上运行的,可以看到,使用gcc 编译器编译出来的可执行文件,它的架构是X86的,所以我们使用 gcc编译器编译完的可执行程序只能在X86的 ubuntu上运行,不能在arm上运行。大家通过file 命令就可以区分了,大家可以自己安装下。如下图所示。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1560469.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

STM32 实现 TCP 服务器与多个设备通信

目录 一、引言 二、硬件准备 三、软件准备 四、LWIP 协议栈的配置与初始化 五、创建 TCP 服务器 1.创建 TCP 控制块 2.绑定端口 3. 进入监听状态 4.设置接收回调函数 六、处理多个客户端连接 七、数据处理与通信管理 八、错误处理与资源管理 九、总结 一、引…

【STM32单片机_(HAL库)】4-5-2【定时器TIM】【感应开关盖垃圾桶项目】HC-SR04超声波模块实验

1.硬件 STM32单片机最小系统HC-SR04超声波模块 2.软件 hcsr04驱动文件添加main.c程序 #include "sys.h" #include "delay.h" #include "led.h" #include "uart1.h" #include "hcsr04.h"int main(void) {HAL_Init(); …

华为云应用侧Android Studio开发

本文将介绍如何使用AndroidStudio开发APP完成与接入华为云IoTDA设备的对接,包括属性参数获以及取命令下发。 一、鉴权认证 应用侧需要通过IAM服务鉴权,获取token,华为账号创建 IAM 用户, 可以为创建的用户分配权限 认证鉴权_设…

CSS @规则(At-rules)系列详解___@charset规则使用方法

CSS 规则(At-rules)系列详解 ___charset规则使用方法 本篇目录: 零、时光宝盒 一、charset规则定义和用法 二、CSS charset语法 三、charset 使用方法例子 1、正确使用方法 2、无效的,错误的使用方法 零、时光宝盒 (https://blog.csd…

C++ | Leetcode C++题解之第472题连接词

题目&#xff1a; 题解&#xff1a; struct Trie {bool isEnd;vector<Trie *> children;Trie() {this->children vector<Trie *>(26, nullptr);this->isEnd false;} };class Solution { public:Trie * trie new Trie();vector<string> findAllConc…

C语言 | Leetcode C语言题解之第472题连接词

题目&#xff1a; 题解&#xff1a; typedef struct Trie {struct Trie * children[26];bool isEnd; }Trie;#define TRIE_INITIAL(node) do { \for (int i 0; i < 26; i) { \(node)->children[i] NULL; \} \(node)->isEnd false; \ }while(0);static void freeTri…

第二阶段:mysql(学完就隐藏版)

第一章&#xff1a;部署数据库系统&#xff08;注意关闭防火墙&#xff0c;selinux安装&#xff09; 安装mysql配置的相关文件&#xff1a;yum install https://dev.mysql.com/get/mysql80-community-release-el7-5.noarch.rpm&#xff08;centos9&#xff1a;yum install http…

iOS--理解MVC与MVVM

MVC MVC 是一种将应用程序分为三部分的架构模式&#xff1a;Model&#xff08;模型&#xff09;、View&#xff08;视图&#xff09;、Controller&#xff08;控制器&#xff09;。每部分负责不同的职责&#xff0c;使代码更加模块化、易于维护。 • Model&#xff1a;负责业…

jmeter入门:脚本录制

1.设置代理。 网络连接-》代理-》手动设置代理. ip&#xff1a; 127.0.0.1&#xff0c; port&#xff1a;8888 2. add thread group 3. add HTTP(s) test script recorder, target controller chooses Test plan-> thread Group 4. click start. then open the browser …

Java | Leetcode Java题解之第472题连接词

题目&#xff1a; 题解&#xff1a; class Solution {Trie trie new Trie();public List<String> findAllConcatenatedWordsInADict(String[] words) {List<String> ans new ArrayList<String>();Arrays.sort(words, (a, b) -> a.length() - b.length(…

PyQt 的Tree Widget中拖放和点击的异常行为

在 PyQt 的 QTreeWidget 中&#xff0c;如果你遇到 拖放 和 点击 的异常行为&#xff0c;可能是由于信号处理、事件拦截、拖放设置或树结构配置等问题导致的。以下是一些可能的常见问题和解决方案。 1、问题背景 一个 PyQt 应用程序中包含两个 Tree Widget&#xff0c;当用户从…

QUUID 使用详解

UUID 通常由 128 位&#xff08;16 字节&#xff09;组成&#xff0c;通常表示为 32 个十六进制数字&#xff0c;分为五个部分&#xff0c;格式如下&#xff1a; QUuid 是 Qt 框架中用于生成和处理 UUID&#xff08;通用唯一标识符&#xff09;的类。UUID 是一种标准的标识符格…

(27)QPSK信号在非相关平坦莱斯(Rician)衰落信道上的误码率性能MATLAB仿真

文章目录 前言一、Rician衰落信道模型的MATLAB代码二、在非相关的平坦Rician衰落信道上传输QPSK符号模型1.MATLAB仿真代码2.仿真结果 前言 本文首先给出莱斯衰落信道的建模函数&#xff0c;然后基于该函数给出在非相关的平坦Rician衰落信道上传输QPSK数字调制符号的MATLAB仿真…

6. 继承、重写、super、final

文章目录 一、重新定义需求二、继承1. 继续分析2. 概念3. 代码① 父类② 子类③ 测试结果 4. 饿狼传说之多层继承① 概念② 代码 5. 多继承 三、方法的重写1. 情境2. 代码① 吃什么② 怎么叫(Override重写) 3. 小结 四、super1. 啃老2. 啃老啃到底 五、final1. 用途及特征2. 举…

快速解决urllib3.exceptions.MaxRetryError: HTTPSConnectionPool

正题 使用pip命令查看urllib3版本 pip list发现版本为 1.26.9 urllib3 v1.26.9此时如下报错&#xff0c;无法正常使用&#xff08;使用了代理&#xff09; urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(hostxxx.xxxxx.com, port443): Max retries exceeded wit…

智能的三大问题:何以、所以、可以

智能具有三大问题&#xff0c;即何以、所以、可以。“何以&#xff08;Why&#xff09;”涉及探讨智能的本质及其产生的原因。智能是什么&#xff1f;它的定义和特征是什么&#xff1f;为什么人类或机器需要智能&#xff1f;它如何帮助我们解决复杂问题、做出决策和适应环境&am…

(五)Proteus仿真STM32单片机串口数据流收发

&#xff08;五&#xff09;Protues仿真STM32单片机串口数据流收发 – ARMFUN 1&#xff0c;打开STM32CubeMX&#xff0c;找到USART1,配置模式Asynchronous&#xff0c;此时PA9、PA10自动变成串口模式 串口默认参数:115200bps 8bit None 1stop 2&#xff0c;NVIC Settings使能…

【Ubuntu】在Ubuntu上安装IDEA

【Ubuntu】在Ubuntu上安装IDEA 零、前言 最近换了Ubuntu系统&#xff0c;但是还得是要写代码&#xff0c;这样就不可避免地用到IDEA&#xff0c;接下来介绍一下如何在Ubuntu上安装IDEA。 壹、下载 这一步应该很容易的&#xff0c;直接打开IDEA的下载页面&#xff0c;点击下…

科研绘图系列:R语言绘制SCI文章图2

文章目录 介绍加载R包导入数据图a图b图d系统信息介绍 文章提供了绘制图a,图b和图d的数据和代码 加载R包 library(ggplot2) library(dplyr) library(readxl) library(ggpmisc)导入数据 数据可从以下链接下载(画图所需要的所有数据): 百度网盘下载链接: https://pan.baid…

2024年软件设计师中级(软考中级)详细笔记【3】数据结构(下)(分值5分)

上午题第3章数据结构下部目录 前言第3章 数据结构【下】(5分)3.5 查找3.5.1 查找的基本概念【考点】3.5.2 静态查找表的查找方法3.5.3 动态查找表3.5.4 哈希表3.5.4.1 哈希表的定义3.5.4.2 哈希函数的构造方法3.5.4.3 处理冲突的方法 3.6 排序3.6.1 排序的基本概念3.6.2 简单排…