【OrangePi Zero2的系统移植】OrangePi Zero2 SDK说明

news2025/1/20 3:52:04

一、使用环境要求
二、获取Linux SDK
三、首次编译完整SDK

基于OrangePi Zero2的系统移植

之前我们讲解香橙派的使用时, 都是直接在香橙派上进行代码编译, 但在实际的项目开发过程中,更多
的还是使用交叉编译环境进行代码的编译。再编译完成之后再把代码放到香橙派等ARM开发板上运行。
因此这章节专门讲解下交叉编译环境的搭建、Uboot移植和内核移植内容

OrangePi Zero2 SDK说明

SDK 全称 Software Development Kit,即软件开发工具包。一般包括了一些工具(如交叉编译工具
链)、库、文档和示例代码。香橙派的Linux SDK其实指的就是 orangepi-build 这套代码集,orangepibuild 在脚本和配置文件中会指定 u-boot、Linux内核和交叉编译工具链的地址,运行 orangepi-build
时,当其发现本地没有这些东西,会自动去相应的地方下载的。使用 orangepi-build 可以编译出多个版
本的 Linux 镜像。

一、使用环境要求

新版本的orangepi-build对编译主机(也就是搭建的vmware 虚拟机)的要求:新版本的orangepibuild是在Ubuntu22.04的x64电脑或者虚拟机上运行的。
1、 确认自己的虚拟机或者Ubuntu实体机是不是22.04的方法如下:

test@test:~$ lsb_release -a
No LSB modules are available. Distributor ID: Ubuntu
Description: Ubuntu 22.04 LTS
Release: 22.04
Codename: jammy

2、 如果不是,可从ubuntu官网重新下载ubuntu 22.04 x64镜像,重新更新下虚拟机,ubuntu 22.04
X64镜像下载地址:

http://releases.ubuntu.com/22.04/ubuntu-22.04.3-desktop-amd64.iso

3、 编译出来的完整SDK大概有16 G大小,因此建议在创建虚拟机时,至少分配50G的存储给虚拟机使
用。

二、获取Linux SDK

  1. 方法一:从 github 下载 orangepi-build(要求网络要好,因此当前不是特别推荐)
    搭建完虚拟机后, 从github下载香橙派Linux SDK:
test@test:~$ sudo apt update
test@test:~$ sudo apt install git
test@test:~$ git clone https://github.com/orangepi-xunlong/orangepi-build.git -b next

当然,如果git clone失败, 也可以直接访问该网址https://github.com/orangepi-xunlong/orangepi-build/tree/next, 把orangepi-build的压缩包下载下来后,再放到编译主机里。
在这里插入图片描述
然后解压下载下来的压缩包:

unzip orangepi-build-next.zip

4、 orangepi-build 下载完后会包含下面的文件和文件夹
a. build.sh: 编译启动脚本, 我们可以通过build.sh编译uboot、内核、根文件系统甚至完整的img
b. external: 包含编译镜像需要用的配置文件、特定的脚本以及部分程序的源码等
c. LICENSE: GPL 2 许可证文件
d. README.md: orangepi-build 说明文件
e. scripts: 编译 linux 镜像的通用脚本
在这里插入图片描述
5、 解压完后,需要去修改orangepizero2的配置脚本

vi ./external/config/sources/families/sun50iw9.conf

修改nex)分支里的内核配置版本(默认是6.1.y这里改成5.16.y版本),不然6.1.y默认编译出来的内核
默认没有无线网卡、I2C也不支持。

## For Linux5.16.y
KERNELBRANCH="branch:orange-pi-5.16-sunxi64"
LINUXCONFIG="linux-5.16-sun50iw9-current"
## For Linu6.1.y
#KERNELBRANCH="branch:orange-pi-6.1-sun50iw9"
#LINUXCONFIG="linux-6.1-sun50iw9-next"

在这里插入图片描述
方法二:从百度网盘下载(推荐使用该方法, 就不用考虑github下载过程中出现下载失败导致最后编译出
来的系统可能是异常的)
从下面的百度网盘链接下载提前编译好的oragepi-build SDK包:

链接:https://pan.baidu.com/s/1y3db5GZFPZSnyYOCrKQcmQ
提取码:92gt

下载下来后是几个拆分好的压缩包, 如下所示:

test@test:~/orangepi-build$ ls
orangepi-build-ok.tar.gz_00 orangepi-build-ok.tar.gz_01 orangepi-buildok.tar.gz_02

这个时候可以用如下的命令进行合并解压:

cat orangepi-build-ok.tar.gz_0* > orangepi-build-ok.tar.gz
tar -xvf orangepi-build-ok.tar.gz

三、首次编译完整SDK

下载完源码后, 即可用build.sh进行首次编译.(注:如果是从 方法二:从百度网盘下载后, 由
于已经缓存了交叉编译工具链、uboot和内核源码, 可以不运行build.sh脚本 )

  1. 运行 build.sh 脚本,记得加 sudo 权限
cd orangepi-build-next/
sudo ./build.sh
  1. 选择Full OS image for flashing 进行完整镜像的编译
    在这里插入图片描述
  2. 选择不修改配置:
    在这里插入图片描述
  3. 根据实际的香橙派派开发版的型号, 选orangepizero2,
    在这里插入图片描述
  4. 选择根文件系统类型, 这边选择ubuntu 22.04 的根文件系统, 也就是jammy:
    在这里插入图片描述
  5. 选择带桌面环境,即接入HDMI显示器后,是有桌面显示的:
    在这里插入图片描述
  6. 最后选择桌面环境,这边选择xfce:
    在这里插入图片描述
    在这里插入图片描述
  7. 这里的软件主要是一些额外第三方软件包的安装, 都不选择,直接ok开始编译
    在这里插入图片描述
  8. 如果是第一次运行 orangepi-build 中的 build.sh 脚本时会自动下载交叉编译工具链、 u-boot 和
    linux 内核源码,成功编译完一次 linux 镜像后在 orangepi-build 中可以看到 的文件和文件夹有:
a. build.sh: 编译启动脚本

  b. external: 包含编译镜像需要用的配置文件、特定功能的脚本以及部分程序 的源码,编译镜像过
程中缓存的 rootfs 压缩包也存放在 external 中
  c. kernel: 存放 linux 内核的源码,内核源码的文件夹的名字请不要手动修改,如 果修改了,编译系
统运行时会重新下载内核源码
  d. LICENSE: GPL 2 许可证文件
  e. README.md: orangepi-build 说明文件
  f. output: 存放编译生成的 u-boot、linux 等 deb 包、编译日志以及编译生成的 镜像等文件
  g. scripts: 编译 linux 镜像的通用脚本
  h. toolchains: 存放交叉编译工具链
  i. u-boot: 存放 u-boot 的源码,u-boot 源码的文件夹的名字请不要手动修改,如果修改了,编译系
统运行时会重新下载 u-boot 源码
  j. userpatches: 存放编译脚本需要用到的配置文件。

  1. 经过漫长等待编译完成后, 会在orangepibuild/output/images/Orangepizero2_3.1.0_ubuntu_jammy_desktop_xfce_linux5.16.17/
    下Orangepizero2_3.1.0_ubuntu_jammy_desktop_xfce_linux5.16.17.img镜像。 可以直接拿这个
    img 烧入到SD卡中运行

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

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

相关文章

学习Android的第八天

目录 Android ImageView 图像视图 ImageView 的基本使用 src属性和background属性的区别 范例 解决 anndroid:blackground 属性拉伸导致图片变形的方法 设置透明度的问题 范例 android:src 和 android:background 结合 范例 Java 代码中设置 blackground 和 src 属性…

【C语言自定义类型详解进阶】结构体(补充结构体的对齐和位段,一口气看完系列,央妈都点赞的博文)

目录 1.结构体 1.1 结构的基础知识 1.2 结构的声明 1.2.1特殊的声明(匿名结构体类型) 1.3结构体变量的定义 1.4关于匿名结构体类型的补充 1.5结构体的自引用 1.6结构体变量的初始化 2.结构体内存对齐(重点) 2.1偏移量补…

B2080 计算多项式的值(洛谷)

题目描述 假定多项式的形式为 … x1,请计算给定单精度浮点数 x 和正整数 n 值的情况下这个多项式的值。多项式的值精确到小数点后两位,保证最终结果在 double 范围内。 输入格式 输入仅一行,包括 x 和 n,用单个空格隔开。 输…

数据结构 - 线索树

一、 为什么要用到线索二叉树? 我们先来看看普通的二叉树有什么缺点。下面是一个普通二叉树(链式存储方式): 乍一看,会不会有一种违和感?整个结构一共有 7 个结点,总共 14 个指针域&#xff0c…

Web前端框架-Vue(初识)

文章目录 web前端三大主流框架**1.Angular****2.React****3.Vue**什么是Vue.js 为什么要学习流行框架框架和库和插件的区别一.简介指令v-cloakv-textv-htmlv-pre**v-once**v-onv-on事件函数中传入参数事件修饰符双向数据绑定v-model 按键修饰符自定义按键修饰符别名v-bind(属性…

速过计算机二级python——第9讲 详解第 2 套真题

第9讲 详解第 2 套真题 基本编程题【15 分】简单应用题【25 分】综合应用题【20 分】**问题 1**【10 分】:**问题 2【10 分】:**基本编程题【15 分】 考生文件夹下存在一个文件 PY101.py,请写代码替换横线,不修改其他代码,实现以下功能:【5 分】题目: import __________ b…

【数据结构与算法】力扣刷题记之 稀疏数组

🎉🎉欢迎光临🎉🎉 🏅我是苏泽,一位对技术充满热情的探索者和分享者。🚀🚀 🌟特别推荐给大家我的最新专栏《数据结构与算法:初学者入门指南》📘&am…

手把手教你开发Python桌面应用-PyQt6图书管理系统-图书添加模块UI设计实现

锋哥原创的PyQt6图书管理系统视频教程: PyQt6图书管理系统视频教程 Python桌面开发 Python入门级项目实战 (无废话版) 火爆连载更新中~_哔哩哔哩_bilibiliPyQt6图书管理系统视频教程 Python桌面开发 Python入门级项目实战 (无废话版) 火爆连载更新中~共计24条视频&…

ClickHouse的优缺点和应用场景

当业务场景需要一个大批量、快速的、可支持聚合运算的数据库,那么可选择ClickHouse。 选择ClickHouse 的原因: 记录类型类似于LOG,读取、运算远远大于写入操作选取有限列,对近千万条数据,快算的运算出结果。数据批量…

LiteFlow规则引擎框架

LiteFlow规则引擎框架 Hi,我是阿昌,今天介绍一个规则引擎框架,LiteFlow; 一、前言 那首先得知道什么是规则引擎?规则引擎是 一种用于自动化处理业务规则的软件组件。 在软件行业中,规则引擎通常用于解决…

HTML+CSS+JS网页设计

文章目录 作品介绍一、代码演示1.登录、注册,获取当前时间2.轮播图3.家乡简介4.热门景点5.特色美食6.页尾 二、效果图总结 作品介绍 HTML页面主要由:登录、注册跳转页面,轮播图,家乡简介,热门景点,特色美食…

js中new操作符详解

文章目录 一、是什么二、流程三、手写new操作符 一、是什么 在JavaScript中,new操作符用于创建一个给定构造函数的实例对象 例子 function Person(name, age){this.name name;this.age age; } Person.prototype.sayName function () {console.log(this.name) …

NOVATEK显示技术系列之CEDSCHPI Training差异简介

CEDS的数据封包格式:首先CEDS数据封包包括三个部分: Training Pattern即Phase1Control Data 即 Phase2RGB Data 即Phase3 Power on Timing: 工作原理: Power ON时,TCON会发Training Pattern,当COF接受Tr…

springboot-web服务迁移Kubernetes

1、搞定基础镜像 docker pull openjdk:8-jre-alpine docker tag openjdk:8-jre-alpine 10.204.82.15/kubernetes/openjdk:8-jre-alpine docker push 10.204.82.15/kubernetes/openjdk:8-jre-alpine 2、springboot-web应用服务打包 3、编写Dockerfile构建镜像 FROM 10.204.82.…

Vue源码系列讲解——虚拟DOM篇【二】(Vue中的DOM-Diff)

目录 1. 前言 2. patch 3. 创建节点 4. 删除节点 5. 更新节点 6. 总结 1. 前言 在上一篇文章介绍VNode的时候我们说了,VNode最大的用途就是在数据变化前后生成真实DOM对应的虚拟DOM节点,然后就可以对比新旧两份VNode,找出差异所在&…

uTools工具使用

之前发现一款非常有用的小工具,叫uTools,该软件集成了比如进制转换、json格式化、markdown、翻译、取色等等集插件大成,插件市场提供了很多开源插件工具。可以帮助开发人员节省了寻找各种处理工具的时间,非常推荐。 1、软件官方下…

横扫Spark之 - 22个常见的转换算子

水善利万物而不争,处众人之所恶,故几于道💦 文章目录 1. map()2. flatMap()3. filter()4. mapPartitions()5. mapPartitionsWithIndex()6. groupBy()7. distinct()8. coalesce()9. repartition()10. sortBy()11. intersection()12.union()13.…

Python实现文本情感分析

前言 文本情感分析是一种重要的自然语言处理(NLP)任务,旨在从文本数据中推断出情感信息,例如正面、负面或中性情感。它在社交媒体分析、产品评论、市场调研等领域都有广泛的应用。本文将详细介绍如何使用Python进行文本情感分析,包括基础概念…

07 A B 从计数器到可控线性序列机

07. A.从计数器到可控线性序列机 让LED灯按照亮0.25秒。灭0.75秒的状态循环亮灭让LED灯按照亮0.25秒,灭0.5秒,亮0.75秒,灭1秒的状态循环亮灭让LED灯按照指定的亮灭模式亮灭,亮灭模式未知,由用户随即指定。以0.25秒为一…

前端实现支付跳转以及回跳

// 支付地址 const baseURL http://pcapi-xiaotuxian-front-devtest.itheima.net/ const backURL http://127.0.0.1:5173/paycallback const redirectUrl encodeURIComponent(backURL) const payUrl ${baseURL}pay/aliPay?orderId${route.query.id}&redirect${redirec…