裸机开发及开发环境搭建

ARM 的裸机开发,也就是不带操作系统开发,就和我们开发 STM32 一样,如果
STM32 开发经验的话学起本篇会很容易
1 、裸机开发是了解所使用的 CPU 最直接、最简单的方法,裸机开发是直接操作 CPU 的寄存器。
Linux 驱动开发最终也是操作的寄存器 ,但 是在操作寄存器之前要先编写一个符合 Linux 驱动的框架 。同样一个点灯驱动,裸机可能只需 要十几行代码,但是 Linux 下的驱动就需要几十行代码。
2.  Linux 驱动开发和 STM32 开发区别 很大,比如 Linux 没有 MDK、IAR 这样的集成开发环境,需要我们自己在 Ubuntu 下搭建交叉编译环境。
3 、裸机开发是连接 Cortex-M (如 STM32 )单片机和 Cortex-A( I.MX6U) 处理器的桥梁

1.开发环境搭建

1.1Ubuntu Windows 文件互传

在 Windwos 下进行 代码编写,然后将编写好的代码拿到 Ubuntu 下进行编译。Windows Ubuntu 下的文件互传我 们需要使用 FTP 服务,设置方法如下:

1.1.1开启ubuntu下的FTP服务

打开 Ubuntu 的终端窗口,然后执行如下命令来安装 FTP 服务:

确保上面两行前面没有“#”,有的话就取消掉

修改完 vsftpd.conf 以后保存退出,使用如下命令重启 FTP 服务: 

sudo /etc/init.d/vsftpd restart

1.1.2windows下FTP客户端安装

Windows FTP 客户端我们使用 FileZilla ,这是个免费的 FTP 客户端软件,可以在 FileZilla
官网下载,下载地址如下: https://www.filezilla.cn/download
安装完毕界面如图
FileZilla 软件设置
Ubuntu 作为 FTP 服务器, FileZilla 作为 FTP 客户端,客户端肯定要连接到服务器上,打开
站点管理器,点击:文件 -> 站点管理器
点击图 中的“新站点 (N)”按钮来创建站点,将新的站点命名为“Ubuntu”
终端窗口输入ifconfig查看地址及参数
然后打开站点管理器,选中要设置的站点“Ubuntu”,选择“字符集”,
设置好字符集以后重新连接到 FTP 服务器上,重新链接到 FTP 服务器以后
Ubuntu 下的文件目录中文显示就正常了就可以直接拖文件过去。

 1.1.3Ubuntu NFS SSH 服务开启

NFS 服务开启
后面进行 Linux 驱动开发的时候需要 NFS 启动,因此要先安装并开启 Ubuntu 中的 NFS
务,使用如下命令安装 NFS 服务:
等待安装完成,安装完成以后在用户根目录下创建一个名为“ linux ”的文件夹,以后所有
的东西都放到这个“ linux ”文件夹里面,在“ linux ”文件夹里面新建一个名为“nfs”的文件夹,
创建的 nfs 文件夹供 nfs 服务器使用,以后我们可以在开发板上通过网络文件系
统来访问 nfs 文件夹,要先配置 nfs ,使用如下命令打开 nfs 配置文件/etc/exports: 重启 NFS 服务,使用命令如下:
SSH 服务开启
开启 Ubuntu SSH 服务以后我们就可以在 Windwos 下使用终端软件登陆到 Ubuntu ,比如
使用 SecureCRT Ubuntu 下使用如下命令开启 SSH 服务: 上述命令安装 ssh 服务, ssh 的配置文件为 /etc/ssh/sshd_config ,使用默认配置即可。

2.Ubuntu 交叉编译工具链安装

ARM 裸机、 Uboot 移植、 Linux 移植这些都需要在 Ubuntu 下进行编译,编译就需要编译
器,而我们现在 要编译的是 ARM 架构的代码,所以我们需要一个在 X86 架构的 PC 上运行,可以编译 ARM 架 构代码的 GCC 编译器,这个编译器就叫做交叉编译器,总结一下交叉编译器就是:
1.它肯定是一个 GCC 编译器。
2 、这个 GCC 编译器是运行在 X86 架构的 PC 上的。
3 、这个 GCC 编译器是编译 ARM 架构代码的,也就是编译出来的可执行文件是在 ARM
片上运行的。
交叉编译器中“交叉”的意思就是在一个架构上编译另外一个架构的代码,相当于两种架
构“交叉”起来了
Linaro GCC 编译器下载地址如下:
https://releases.linaro.org/components/toolchain/binaries/latest-7/arm-linux-gnueabihf/ 我们要先将交叉编译工具拷贝到 Ubuntu 中,我们在当前用户根目录下创建了一个名为“linux”的文件夹,在这个 linux 文件夹里面再创建一个名为“tool”的文件夹,用来存放一些开发工具。使用前面已经安装好的 FileZilla 将交叉编译器拷贝到 Ubuntu 中刚刚新建的“tool”文件夹中,操作如图
Ubuntu 中创建目录:/usr/local/arm,命令如下:
创建完成以后将刚刚拷贝的交叉编译器复制到 /usr/local/arm 这个目录中,在终端使用命令
cd ” 进 入 到 存 放 有 交 叉 编 译 器 的 目 录 , 比 如 我 前 面 将 交 叉 编 译 器 拷 贝 到 了 目 录 “/home/zuozhongkai/linux/tool ”中,然后使用如下命令将交叉编译器复制到/usr/local/arm 中: 拷贝完成以后在/usr/local/arm 目录中对交叉编译工具进行解压,解压命令如下:
等待解压完成,解压完成以后会生成一个名为“ gcc-linaro-4.9.4-2017.01-x86_64_arm-linux
gnueabihf ”的文件夹,这个文件夹里面就是我们的交叉编译工具链。
修改环境变量,使用 VI 打开/etc/profile 文件,命令如下: 打开 /etc/profile 以后,在最后面输入如下所示内容:
添加完成以后的/etc/profile 如图  重启 Ubuntu 系统,交叉编译工具链 ( 编译器 ) 就安装成功
安装相关库
在使用交叉编译器之前还需要安装一下其它的库,命令如下:
交叉编译器验证
首先查看一下交叉编译工具的版本号,输入如下命令:
如果交叉编译器安装正确的话就会显示版本号 可以看出当前交叉编译器的版本号为 4.9.4 ,说明交叉编译工具链安装成功。
arm-linux-gnueabihf
gcc ”的含义如下:
1 arm 表示这是编译 arm 架构代码的编译器。
2 linux 表示运行在 linux 环境下。
3 gnueabihf 表示嵌入式二进制接口。
4 gcc 表示是 gcc 工具

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

js-添加网页快捷方式

title: js-添加网页快捷方式 categories: Javascript tags: [p快捷方式] date: 2024-02-04 15:28:25 comments: false mathjax: true toc: true js-添加网页快捷方式 前篇 谷歌上包困难的情况, 只能通过投放落地页来缓解一下痛苦, web2app 那种形式有几个比较大的缺点就是需要…

多模态融合颠覆式创新!计算成本直降46.5%,准确性损失忽略不计

以往的融合方法从本质上讲是静态的,也就是以相同的计算处理和融合多模态输入,没有考虑不同多模态数据的不同计算需求。而近期,有关动态多模态融合的研究有了新的成果,它能够自适应融合多模态数据并在推理过程中生成数据依赖的前向…

Java学习网络编程

Java学习网络编程 大纲 网络相关概念IP地址网络协议InetAdressSocket 具体案例 1. 网络相关概念 网络 网络通信 2. IP地址 域名 3.网络协议 4. InetAdress 获得本机的名字和IP public static void main(String[] args) throws UnknownHostException {InetAddress inetA…

【PowerShell】修改Windows网络配置的常用命令

PowerShell(PS)是一种强大的任务自动化和管理框架,具有丰富的命令和语法,可以用于编写脚本来管理Windows操作系统和其他应用程序。它的开放式架构和跨平台支持使得它成为一个灵活和可扩展的工具。 在网络配置方面,Powe…

MATLAB计算多边形质心/矩心

前言:不规则四边形的中心 不规则四边形的出心有多种定义,以下是最常见的三种: 1.重心:重心是四边形内部所有顶点连线交点的平均位置。可以通过求解四个顶点坐标的平均值来找到重心。 2.质心:质心是四边形内部所有质点…

2 物理层(二):数据编码和调制

目录 1 数据编码和调制1.1 数字数据的数字信号编码1、常见概念2、二进制数字数据的数字信号编码方法 1.2 模拟数据的数字信号编码1、脉冲振幅调制(PAM)2、脉冲编码调制(PCM)3、采样频率 1.3 数字数据的模拟调制1.4 模拟数据的模拟…

HarmonyOS 鸿蒙应用开发(十、第三方开源js库移植适配指南)

在前端和nodejs的世界里,有很多开源的js库,通过npm(NodeJS包管理和分发工具)可以安装使用众多的开源软件包。但是由于OpenHarmony开发框架中的API不完全兼容V8运行时的Build-In API,因此三方js库大都需要适配下才能用。 移植前准备 建议在适…

深度测评:ONLYOFFICE 桌面编辑器 v8.0新功能

目录 前言 一、PDF表单处理:提升办公效率 二、RTL(从右到左)支持:满足不同语言习惯 三、Moodle集成:教育行业的新助力 四、本地界面主题:个性化办公体验 五、性能优化与稳定性提升 六、性能与稳定性…

《dx12 龙书》第四部分学习笔记——预备知识(下)

7、多重采样技术的原理 由于屏幕中显示的像素不可能是无穷小的,所以并不是任意一条直线都能在显示器上“平滑”而完美地呈现出来。即为以像素矩阵 (matrix of pixels, 可以理解为“像素2D数组”)逼近直线的方法所产生的“阶梯” &…

Linux安全技术与iptables防火墙

一.安全技术: 入侵检测系统(Intrusion Detection Systems):特点是不阻断任何网络访问,量化、定位来自内外网络的威胁情况,主要以提供报警和事后监督为主,提供有针对性的指导措施和安全决策依据,…

【leetcode热题100】搜索二维矩阵

给你一个满足下述两条属性的 m x n 整数矩阵: 每行中的整数从左到右按非严格递增顺序排列。每行的第一个整数大于前一行的最后一个整数。 给你一个整数 target ,如果 target 在矩阵中,返回 true ;否则,返回 false 。…

Java技术栈全解析,选修选课系统新篇章

✍✍计算机编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java实战 |…