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

2024-02-09 18:36

本文主要是介绍【OrangePi Zero2的系统移植】OrangePi Zero2 SDK说明,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、使用环境要求
二、获取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卡中运行

这篇关于【OrangePi Zero2的系统移植】OrangePi Zero2 SDK说明的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/694987

相关文章

Go语言中make和new的区别及说明

《Go语言中make和new的区别及说明》:本文主要介绍Go语言中make和new的区别及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1 概述2 new 函数2.1 功能2.2 语法2.3 初始化案例3 make 函数3.1 功能3.2 语法3.3 初始化

java中新生代和老生代的关系说明

《java中新生代和老生代的关系说明》:本文主要介绍java中新生代和老生代的关系说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、内存区域划分新生代老年代二、对象生命周期与晋升流程三、新生代与老年代的协作机制1. 跨代引用处理2. 动态年龄判定3. 空间分

MySQL之InnoDB存储引擎中的索引用法及说明

《MySQL之InnoDB存储引擎中的索引用法及说明》:本文主要介绍MySQL之InnoDB存储引擎中的索引用法及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录1、背景2、准备3、正篇【1】存储用户记录的数据页【2】存储目录项记录的数据页【3】聚簇索引【4】二

mysql中的数据目录用法及说明

《mysql中的数据目录用法及说明》:本文主要介绍mysql中的数据目录用法及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、版本3、数据目录4、总结1、背景安装mysql之后,在安装目录下会有一个data目录,我们创建的数据库、创建的表、插入的

linux重启命令有哪些? 7个实用的Linux系统重启命令汇总

《linux重启命令有哪些?7个实用的Linux系统重启命令汇总》Linux系统提供了多种重启命令,常用的包括shutdown-r、reboot、init6等,不同命令适用于不同场景,本文将详细... 在管理和维护 linux 服务器时,完成系统更新、故障排查或日常维护后,重启系统往往是必不可少的步骤。本文

Maven中的profiles使用及说明

《Maven中的profiles使用及说明》:本文主要介绍Maven中的profiles使用及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录主要用途定义 Profiles示例:多环境配置激活 Profiles示例:资源过滤示例:依赖管理总结Maven 中的

Mac系统下卸载JAVA和JDK的步骤

《Mac系统下卸载JAVA和JDK的步骤》JDK是Java语言的软件开发工具包,它提供了开发和运行Java应用程序所需的工具、库和资源,:本文主要介绍Mac系统下卸载JAVA和JDK的相关资料,需... 目录1. 卸载系统自带的 Java 版本检查当前 Java 版本通过命令卸载系统 Java2. 卸载自定

Before和BeforeClass的区别及说明

《Before和BeforeClass的区别及说明》:本文主要介绍Before和BeforeClass的区别及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Before和BeforeClass的区别一个简单的例子当运行这个测试类时总结Before和Befor

Python pip下载包及所有依赖到指定文件夹的步骤说明

《Pythonpip下载包及所有依赖到指定文件夹的步骤说明》为了方便开发和部署,我们常常需要将Python项目所依赖的第三方包导出到本地文件夹中,:本文主要介绍Pythonpip下载包及所有依... 目录步骤说明命令格式示例参数说明离线安装方法注意事项总结要使用pip下载包及其所有依赖到指定文件夹,请按照以

基于Python实现一个简单的题库与在线考试系统

《基于Python实现一个简单的题库与在线考试系统》在当今信息化教育时代,在线学习与考试系统已成为教育技术领域的重要组成部分,本文就来介绍一下如何使用Python和PyQt5框架开发一个名为白泽题库系... 目录概述功能特点界面展示系统架构设计类结构图Excel题库填写格式模板题库题目填写格式表核心数据结构