编译FriendlyDesktop的Uboot源码、内核,修改开机图片logo

2023-10-26

 

1. 安装依赖包

参照官网wiki教程 - 12章节:Nanopi 教程wiki

安装以下依赖包。

sudo apt-get -y install bison g++-multilib git gperf libxml2-utils make python-networkx zip
sudo apt-get -y install flex curl libncurses5-dev libssl-dev zlib1g-dev gawk minicom
sudo apt-get -y install openjdk-8-jdk
sudo apt-get -y install exfat-fuse exfat-utils device-tree-compiler liblz4-tool
sudo apt-get -y install android-tools-fsutils
sudo apt-get -y install swig
sudo apt-get -y install python-dev python3-dev

 

 

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

安装aarch64-linux-gcc 6.4,用来编译Linux系统的内核和u-boot。

git clone https://github.com/friendlyarm/prebuilts.git -b master --depth 1
sudo mkdir -p /opt/FriendlyARM/toolchain
之后按照其中的README.md进行安装
cd prebuilts/gcc-x64
cat toolchain-4.9.3-armhf.tar.gz* | sudo tar xz -C /
cat toolchain-6.4-aarch64.tar.gz* | sudo tar xz -C /

看下工具链中都有啥:4.9.3是cortex-A9的,6.4-aarch64是cortex-A53的。

 

交叉编译工具链已经被解压到根目录中,接着将编译器的路径加入到PATH中。

用vi编辑,vi ~/.bashrc,在末尾加入以下内容:

export PATH=/opt/FriendlyARM/toolchain/6.4-aarch64/bin:$PATH
export GCC_COLORS=auto

 

Esc,:wq。保存退出。

关闭当前终端重新打开,使 ~/.bashrc 生效。验证工具链是否安装成功:

aarch64-linux-gcc -v

验证成功后就可以把 prebuilts 文件夹都删掉了。

 

 

3. 编译FriendlyDesktop的Uboot源码

参照官网wiki教程,编译FriendlyDesktop的Uboot源码。

git clone https://github.com/friendlyarm/uboot-rockchip --depth 1 -b nanopi4-v2014.10_oreo
cd uboot-rockchip
export PATH=/opt/FriendlyARM/toolchain/6.4-aarch64/bin/:$PATH
make CROSS_COMPILE=aarch64-linux- rk3399_defconfig
make CROSS_COMPILE=aarch64-linux-

 

编译完成后会生成 uboot.img、trust.img 和 rk3399_loader_v1.22.119.bin这3个文件,将其拷贝到eflasher系统的SD卡覆盖旧文件:

路径中的 liang 是我的登陆用户名,要根据个人电脑修改。

cp uboot.img trust.img /media/liang/FriendlyARM/friendlydesktop-arm64
cp rk3399_loader_v1.22.119.bin /media/liang/FriendlyARM/friendlydesktop-arm64/MiniLoaderAll.bin

 

 

 

4. 编译FriendlyDesktop的内核源码

参照官网wiki教程,编译FriendlyDesktop的内核源码。

git clone https://github.com/friendlyarm/kernel-rockchip --depth 1 -b nanopi4-linux-v4.4.y kernel-rockchip
cd kernel-rockchip
export PATH=/opt/FriendlyARM/toolchain/6.4-aarch64/bin/:$PATH
make ARCH=arm64 CROSS_COMPILE=aarch64-linux- nanopi4_linux_defconfig
make ARCH=arm64 CROSS_COMPILE=aarch64-linux- nanopi4-images

 

编译完成后会生成 kernel.img resource.img 这2个文件,将其拷贝到eflasher系统的SD卡覆盖旧文件:

路径中的 liang 是我的登陆用户名,要根据个人电脑修改。

cp kernel.img resource.img /media/liang/FriendlyARM/friendlydesktop-arm64/

 

 

5. 修改开机logo

一开始以为它的开机图片在它的Uboot中,因为串口终端调试时发现:开机logo在内核启动前就已经显示出来了。

查看 /tools/logos ,并没有发现 FriendlyARM 的logo。

 

后来编译 内核时发现,开机logo就在 内核的根目录下,并没有在 linuxsrc/drivers/video/logo下。

用自己的logo(分辨率不限),重命名替换掉以前的logo。重新编译内核,再将生成的镜像拷贝到eflasher系统的SD卡覆盖旧文件,重新烧录系统。开机图片修改成功。

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

编译FriendlyDesktop的Uboot源码、内核,修改开机图片logo 的相关文章

  • 当我尝试在 Armv8 程序集中分配数组时,执行冻结

    所以我正在用汇编语言进行编程 这只是一个简单的代码 这样我就可以学习如何分配数组 以便稍后在 NEON 编程中使用它们 ASM FUNC FPE data balign 8 array skip 80 array1 word 10 20 3
  • Qt 嵌入式触摸屏 QMouseEvents 在收到 MouseButtonRelease 之前未收到

    我在带有触摸屏的小型 ARM 嵌入式 Linux 设备上使用 Qt 4 8 3 我的触摸屏配置了 tslib 并对其进行了校准 因此 etc 中有一个 pointcal 文件 我的触摸事件的位置工作得很好 但无论如何我都会在鼠标按下或鼠标释
  • 如何通过 makefile 在 Linux 上安装程序? [复制]

    这个问题在这里已经有答案了 可能的重复 Linux Unix make install 应该包含什么 https stackoverflow com questions 528399 what should linux unix make
  • 在LPC2148 ARM处理器上创建中断向量的汇编代码

    我最近刚刚开始使用 LPC2148 ARM 处理器 我试图理解一些有关创建中断向量的汇编代码 这是代码 Runtime Interrupt Vectors Vectors b start reset start ldr pc undf un
  • 如何在Linux上用C/C++编写Web服务器[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在考虑在 Linux 平台上开发一个小型 阅读 初级 Web 服务器 但我不知道从哪里开始 我希望它能够做的是 监听特定端口 接受
  • 对于任何真实数据集,数据压缩比的最小可能值是多少

    我在写信ZLIB类似于嵌入式硬件压缩器的 API 它使用 deflate 算法来压缩给定的输入流 在进一步讨论之前 我想解释一下数据压缩率 数据压缩率定义为未压缩大小与压缩大小之间的比率 压缩比通常大于一 这意味着压缩数据通常比未压缩数据小
  • 如何获取与 shell 中的文件名模式匹配的所有文件的总文件大小?

    我正在尝试仅使用 shell 来计算与文件名模式匹配的所有文件 在目录树中 的总大小 以字节为单位 这是我到目前为止所拥有的 find name undo exec stat c s awk 总计 1 END 打印总计 有没有更简单的方法来
  • 如何在C(Linux utf8终端)中打印“盒子抽屉”Unicode字符?

    我正在尝试显示 方框图范围 2500 257F 中的 Unicode 字符 它应该是标准 utf8 Unicode 标准 版本 6 2 我根本做不到 我首先尝试使用旧的 ASCII 字符 但 Linux 终端以 utf8 显示 并且没有显示
  • Vagrant 遇到问题 - “404 - 未找到”

    我正在尝试使用 Vagrant 制作一个 LAMP 盒子 有人告诉我它使用起来非常简单 我对网络和虚拟机完全陌生 对 Linux Ubuntu 的经验也很少 我目前已尝试按照官方文档页面上的教程进行操作 http docs vagrantu
  • 如何从 Bash 命令行在后台 Vim 打开另一个文件?

    我正在从使用 Gvim 过渡到使用控制台 Vim 我在 Vim 中打开一个文件 然后暂停 Vim 在命令行上运行一些命令 然后想返回到 Vim Ctrl Z 在正常模式下 暂停 Vim 并返回到控制台 fg可用于将焦点返回到 Vim job
  • “git add”返回“致命:外部存储库”错误

    我刚刚进入 git 的奇妙世界 我必须提交我对程序所做的一系列更改 位于名为的目录中 var www myapp 我创建了一个新目录 home mylogin gitclone 从这个目录中 我做了一个git clone针对公共回购 我能够
  • 如何并行执行4个shell脚本,我不能使用GNU并行?

    我有4个shell脚本dog sh bird sh cow sh和fox sh 每个文件使用 xargs 并行执行 4 个 wget 来派生一个单独的进程 现在我希望这些脚本本身能够并行执行 由于某些我不知道的可移植性原因 我无法使用 GN
  • 嵌入清单文件以要求具有 mingw32 的管理员执行级别

    我正在 ubuntu 下使用 i586 mingw32msvc 交叉编译应用程序 我很难理解如何嵌入清单文件以要求 mingw32 具有管理员执行级别 对于我的例子 我使用了这个hello c int main return 0 这个资源文
  • 如何在用户空间程序中使用内核 libcrc32c (或相同的函数)?

    我想在我自己的用户空间程序中进行一些 CRC 检查 我发现内核加密库已经在系统中 并且支持 SSE4 2 我尝试直接 include
  • 什么是 .axf 文件?

    我是arm架构的新手 我从事嵌入式软件工作 并试图了解我的项目二进制文件的调试文件夹中存在的 axf文件 发现它是链接器在构建过程中生成的arm可执行格式文件 用于调试崩溃 所以很明显它包含了一些调试信息 但不清楚具体是什么信息 而且deb
  • grep 排除文件的数组参数

    我想从我的文件中排除一些文件grep命令 为此我使用参数 exclude excluded file ext 为了更容易阅读 我想使用包含排除文件的 bash 数组 EXCLUDED FILES excluded file ext 然后将
  • 在 docker 中重定向命令输出

    我想为我的服务器做一些简单的日志记录 它是一个在 Docker 容器中运行的小型 Flask 应用程序 这是 Dockerfile Dockerfile FROM dreen flask MAINTAINER dreen WORKDIR s
  • vmsplice() 和 TCP

    在原来的vmsplice 执行 有人建议 http lwn net Articles 181169 如果您的用户态缓冲区是管道中可容纳的最大页面数的 2 倍 则缓冲区后半部分成功的 vmsplice 将保证内核使用缓冲区的前半部分完成 但事
  • 找不到包“gdk-pixbuf-2.0”

    我正在尝试在 Amazon Linux 发行版实例上构建 librsvg 我已经通过 yum 安装了大部分依赖项 其中一些在实例上启用的默认 yum 存储库中不可用 因此必须从头开始构建它们 我已经走了很远 但还停留在最后一点 跑步时sud
  • 执行命令而不将其保留在历史记录中[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 在进行软件开发时 经常需要在命令行命令中包含机密信息 典型示例是将项目部署到服务器的凭据设置为环境变量 当我不想将某些命令存储在命令历史记

随机推荐

  • 2.2 Fabric核心配置文件的理解

    目标 了解Hyperledger Fabric对Peer节点的核心配置信息 了解Hyperledger Fabric对orderer节点的核心配置信息 任务实现 在Hyperledger Fabric中 有两个示例配置文件 一个为Peer节
  • GDB调试工具命令速查

    1 生成调试信息 一般来说GDB主要调试的是C C 的程序 要调试C C 的程序 首先在编译时 我们必须要把调试信息加到可执行文件中 使用编译 gcc g 的 g 参数可以做到这一点 gcc g test c g g test cpp 如果
  • 节点重要性评估方法

    SIR Kendall correlation coefficient k shell领域中心度论文中的指标 数据集信息 A novel weight neighborhood centrality algorithm for identi
  • qt中设置文件保存的几种方式

    归纳总结4种qt常用的文件保存的方式 1 需要用到的头文件 include
  • [1007]python3安装geohash

    Geohash是一个可以对地理位置信息进行加密和解密的系统 https en wikipedia org wiki Geohash Python安装geohash库后 可调用decode 和encode 函数 按照一般的步骤进行安装pip
  • jQuery基础使用

    什么是 jQuery jQuery是一个JavaScript函数库 jQuery是一个轻量级的 写的少 做的多 的JavaScript库 所以jQuery库本质上还是JavaScript代码 它只是对JavaScript语言进行包装处理 通
  • ../lib/crt1.o: In function `_start':

    出现以上错误是因为你改变了 gcc 或者是 arm gcc xxx的 sysroot gcc v 看一下 把默认sysroot下面的库拷贝到你指定的sysroot即可
  • JSBox 移动端 JavaScript 编程环境

    什么是 JSBox JSBox 是一个 JavaScript 的集成开发环境 你可以在这里学习如何编写 JavaScript 我们提供了一系列的工具来增强你的开发体验 JSBox 对编程新手和有经验的工程师都是非常友好的 你不想试试吗 别再
  • 【Spring】RestTemplate访问https

    文章目录 1 概述 1 概述 今天要对接华为的环境 然后我们要使用https连接对方的yarn环境 对方的访问地址如下 https xxx port Yarn ResourceManager 33 proxy application 165
  • MOS管的电路设计的经典应用(2)-开关电路设计

    上一节 我们讲了MOS管做双向电平转换中的应用 这一应用可以说是非常的经典 今天给大家讲讲MOS管作为开关使用 硬件人都知道MOS管属于电压控制型元器件 即在MOS管的栅极加上电压时 当栅 源电压压差大于Vgs th 时 MOS管即可导通
  • 【精品课设】经典PID与专家PID控制的对比与分析(二)

    精品课设 经典PID与专家PID控制的对比与分析 二 目录 精品课设 经典PID与专家PID控制的对比与分析 二 1经典PID控制的设计与仿真 1 1 被控对象传递函数的设计 1 2 经典PID控制的仿真 2专家PID控制的设计 2 1 专
  • sqli-labs:less-4(双引号报错注入)

  • php 代码分析软件,代码分析工具PhpStorm基本介绍

    PhpStorm 1 0版本已经推出后 都有不少人关注这款代码分析工具对Php的支持情况 本文将做一个基本的介绍 让大家能够快速了解该工具 方便日常开发 本文主要是针对Windows 其他的操作系统做一下相应改变即可 首先我们要设置php的
  • Kotlin快速入门(3) -- 其他常用新特性

    1 空值检查 空安全 Kotlin 是空指针安全的 如果一个变量可能为空 必须在定义的时候显式地指定出来 在类型后面加上 如 var a String 666 a null 可以编译通过 var b String 666 b null 无法
  • 解决“创建或打开C++浏览数据库文件*.sdf时发生错误”问题的过程

    Win7系统的电脑上安装了VS2013和SQL Server 2012 想用VS进行一些简单的C语言开发 网上搜索了常见的VS中建C语言工程的帖子 Visual C gt Win32控制台 gt 空工程 去掉预编译头和安全开发 OK后 程序
  • xp系统链接不上宽带连接服务器,XP系统网络连接正常却上不了网怎么解决

    有XP用户遇到了无法上网的现象 网络却已连接 一切都正常 但是 网页就是无法打开 有时甚至会出现时连时断网的现象 XP系统网络连接正常却上不了网怎么解决 现小编介绍解决办法 具体步骤如下 1 打开 运行 对话框 或按Win R组合键 输入命
  • dlib 人脸识别原理详细讲解

    dlib 是一个 C 库 提供了许多机器学习算法和工具 其中包括人脸识别 dlib 的人脸识别算法基于深度学习技术 使用卷积神经网络 Convolutional Neural Network CNN 进行训练 dlib 的人脸识别算法主要分
  • L2-042 老板的作息表

    新浪微博上有人发了某老板的作息时间表 表示其每天 4 30 就起床了 但立刻有眼尖的网友问 这时间表不完整啊 早上九点到下午一点干啥了 本题就请你编写程序 检查任意一张时间表 找出其中没写出来的时间段 输入格式 输入第一行给出一个正整数 N
  • android.app包---------ActivityManager类介绍

    ActivityManager类介绍 ActivityManager与系统与所有正在运行Activity进行交互 相关方法介绍 getDeviceConfigurationInfo 获取设备配置属性值 getMemoryClass 返回当前
  • 编译FriendlyDesktop的Uboot源码、内核,修改开机图片logo

    1 安装依赖包 参照官网wiki教程 12章节 Nanopi 教程wiki 安装以下依赖包 sudo apt get y install bison g multilib git gperf libxml2 utils make pytho