firefly3399专题1-uboot2022.10的移植

news2025/4/11 10:34:31

硬件信息: friefly3399一块,2GB内存/16Gemmc。

 

软件信息: ubuntu18.04虚拟机,内部有firefly的SDK包。

参考资料:[ROC-RK3399-PC Pro] 手把手教你移植主线U-Boot(基于v2022.04-rc5版本)_Neutionwei的博客-CSDN博客

目标移植uboot2022.10到firefly3399开发板

 

 

一、下载uboot源码

1.1  git 下载,需要安装git工具!!

git clone git@github.com:u-boot/u-boot.git

1.2 出现问题:

zhi@ubuntu:~/3399/system/2022-11-27$ git clone git@github.com:u-boot/u-boot.git
Cloning into 'u-boot'...
The authenticity of host 'github.com (20.205.243.166)' can't be established.
ECDSA key fingerprint is SHA256:p2QAMXNIC1TJYWeIOttrVc98/R1BUFWu3/LiyKgUfQM.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'github.com,20.205.243.166' (ECDSA) to the list of known hosts.
git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

1.3 解决问题,主要是github账号授权的问题。解决的步骤(参考百度):

1.ssh-keygen -t rsa -C xxxx@qq.com  (注意修改,是自己的github账号的邮箱地址)

2.ssh -v git@github.com

3.ssh-agent -s

4.ssh-add ~/.ssh/id_rsa  (出错(Could not open a connection to your authentication agent.)继续第5步,没错则跳过5,6)

5.eval `ssh-agent -s`

6.ssh-add ~/.ssh/id_rsa

7.cat ~/.ssh/id_rsa.pub  打印出来的数据,贴到github中的账号中去。

8.打开自己的github的账号,在settings下,SSH and GPG keys下new SSH key,title随便取一个名字,然后将id_rsa.pub里的内容复制到Key中,完成后Add SSH Key。

9. 验证:ssh -T git@github.com  提示successfully 即表示成功

1.4 继续下载

git clone git@github.com:u-boot/u-boot.git

1.5 查看版本信息

cd uboot/

git tag   使用空格打印出更多

1.6 切换分支,我这里选项2022.10.rc5

git checkout -b v2022.10-rc5 v2022.10-rc5

二、源码编译

2.1 需要准备交叉编译环境。

我自己的环境有一个编译器,是firefly中自带的。

1.查找一下,发现有该编译器

zhi@ubuntu:~/3399/system/rk3399_linux_release_v2.5.1_20210301$ find -name aarch64-linux-gnu* 

2.没有的话,可以自行下载

git clone https://gitlab.com/firefly-linux/prebuilts/gcc/linux-x86/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu

3.设置环境变量PATH,根据自己的目录更改吧

export PATH=/home/zhi/3399/system/rk3399_linux_release_v2.5.1_20210301/prebuilts/gcc/linux-x86/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin:$PATH

4. 查看命令是否正常

 aarch64-linux-gnu-gcc -v
Using built-in specs.
COLLECT_GCC=aarch64-linux-gnu-gcc
COLLECT_LTO_WRAPPER=/home/zhi/3399/system/rk3399_linux_release_v2.5.1_20210301/prebuilts/gcc/linux-x86/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/../libexec/gcc/aarch64-linux-gnu/6.3.1/lto-wrapper
Target: aarch64-linux-gnu
Configured with: '/home/tcwg-buildslave/workspace/tcwg-make-release/builder_arch/amd64/label/tcwg-x86_64-build/target/aarch64-linux-gnu/snapshots/gcc.git~linaro-6.3-2017.05/configure' SHELL=/bin/bash --with-mpc=/home/tcwg-buildslave/workspace/tcwg-make-release/builder_arch/amd64/label/tcwg-x86_64-build/target/aarch64-linux-gnu/_build/builds/destdir/x86_64-unknown-linux-gnu --with-mpfr=/home/tcwg-buildslave/workspace/tcwg-make-release/builder_arch/amd64/label/tcwg-x86_64-build/target/aarch64-linux-gnu/_build/builds/destdir/x86_64-unknown-linux-gnu --with-gmp=/home/tcwg-buildslave/workspace/tcwg-make-release/builder_arch/amd64/label/tcwg-x86_64-build/target/aarch64-linux-gnu/_build/builds/destdir/x86_64-unknown-linux-gnu --with-gnu-as --with-gnu-ld --disable-libmudflap --enable-lto --enable-shared --without-included-gettext --enable-nls --disable-sjlj-exceptions --enable-gnu-unique-object --enable-linker-build-id --disable-libstdcxx-pch --enable-c99 --enable-clocale=gnu --enable-libstdcxx-debug --enable-long-long --with-cloog=no --with-ppl=no --with-isl=no --disable-multilib --enable-fix-cortex-a53-835769 --enable-fix-cortex-a53-843419 --with-arch=armv8-a --enable-threads=posix --enable-multiarch --enable-libstdcxx-time=yes --enable-gnu-indirect-function --with-build-sysroot=/home/tcwg-buildslave/workspace/tcwg-make-release/builder_arch/amd64/label/tcwg-x86_64-build/target/aarch64-linux-gnu/_build/sysroots/aarch64-linux-gnu --with-sysroot=/home/tcwg-buildslave/workspace/tcwg-make-release/builder_arch/amd64/label/tcwg-x86_64-build/target/aarch64-linux-gnu/_build/builds/destdir/x86_64-unknown-linux-gnu/aarch64-linux-gnu/libc --enable-checking=release --disable-bootstrap --enable-languages=c,c++,fortran,lto --build=x86_64-unknown-linux-gnu --host=x86_64-unknown-linux-gnu --target=aarch64-linux-gnu --prefix=/home/tcwg-buildslave/workspace/tcwg-make-release/builder_arch/amd64/label/tcwg-x86_64-build/target/aarch64-linux-gnu/_build/builds/destdir/x86_64-unknown-linux-gnu
Thread model: posix
gcc version 6.3.1 20170404 (Linaro GCC 6.3-2017.05) 

2.2 查看配置信息,选择firefly-rk3399_defconfig

cd configs

ls | grep 3399

evb-rk3399_defconfig
ficus-rk3399_defconfig
firefly-rk3399_defconfig
khadas-edge-captain-rk3399_defconfig
khadas-edge-rk3399_defconfig
khadas-edge-v-rk3399_defconfig
leez-rk3399_defconfig
nanopc-t4-rk3399_defconfig
nanopi-m4-2gb-rk3399_defconfig
nanopi-m4b-rk3399_defconfig
nanopi-m4-rk3399_defconfig
nanopi-neo4-rk3399_defconfig
nanopi-r4s-rk3399_defconfig
orangepi-rk3399_defconfig
pinebook-pro-rk3399_defconfig
puma-rk3399_defconfig
rock960-rk3399_defconfig
rock-pi-4c-rk3399_defconfig
rock-pi-4-rk3399_defconfig
rock-pi-n10-rk3399pro_defconfig
rockpro64-rk3399_defconfig
roc-pc-mezzanine-rk3399_defconfig
roc-pc-rk3399_defconfig

2.3 使用该配置文件

cd ../

make firefly-rk3399_defconfig

2.4 开始编译

make CROSS_COMPILE=aarch64-linux-gnu-

2.5 出错1.

unable to execute 'swig': No such file or directory
error: command 'swig' failed with exit status 1

2.6 解决错误1

sudo apt install swig

2.7 错误2

scripts/dtc/pylibfdt/libfdt_wrap.c:149:11: fatal error: Python.h: No such file or directory
 # include <Python.h>
           ^~~~~~~~~~

2.8 解决错误2

sudo apt-get install python3-distutils -y

sudo apt install python3-dev -y

2.9 继续编译,编译完成

make CROSS_COMPILE=aarch64-linux-gnu-

./"arch/arm/mach-rockchip/make_fit_atf.py" \
arch/arm/dts/rk3399-firefly.dtb > u-boot.its
WARNING: BL31 file bl31.elf NOT found, resulting binary is non-functional
WARNING: Please read Building section in doc/README.rockchip
  MKIMAGE u-boot.itb
===================== WARNING ======================
This board uses CONFIG_SPL_FIT_GENERATOR. Please migrate
to binman instead, to avoid the proliferation of
arch-specific scripts with no tests.
====================================================
  CFGCHK  u-boot.cfg
  OFCHK   .config
  BINMAN  all

2.10  继续下载bl31.elf

编译完成后打印了一个警告,意思是说没找到 bl31.elf文件

cd ../   (到uboot外面去)

git clone git@github.com:ARM-software/arm-trusted-firmware.git

2.11 编译atf

cd arm-trusted-firmware
make realclean
make CROSS_COMPILE=aarch64-linux-gnu- PLAT=rk3399
 

2.12 出现错误

make[1]: arm-none-eabi-gcc: Command not found

2.13 解决错误

没有命令了,安装就好

sudo apt-get install gcc-arm-none-eabi

2.14 继续,就成功了

make CROSS_COMPILE=aarch64-linux-gnu- PLAT=rk3399

2.15 回到uboot目录,重新编译uboot

cd ../u-boot/
export BL31=/home/zhi/3399/system/2022-11-27/arm-trusted-firmware/build/rk3399/release/bl31/bl31.elf
make CROSS_COMPILE=aarch64-linux-gnu-

没有警告了!!!!

./"arch/arm/mach-rockchip/make_fit_atf.py" \
arch/arm/dts/rk3399-firefly.dtb > u-boot.its
  MKIMAGE u-boot.itb
  BINMAN  all

三、烧录到开发板

3.1 烧录有很多方法,比如tf卡,我这里直接使用usb的工具吧。

需要用到两个文件,我把它们拷贝到windows共享目录中

cp idbloader.img /mnt/hgfs/vm_share/rk3399/

cp u-boot.itb /mnt/hgfs/vm_share/rk3399/

3.2 准备下载,打开AndroidTool_Release_v2.71

3.3 开发板连接usb的type c接口,重新启动进入loader模式,重启的时候按住recovery按键(或者在uboot阶段使用 reboot loader命令,或者linux系统中使用reboot loader命令都是可以进入到loader模式的。)

3.4 准备下载

 3.5 执行,开发板重启,成功

 

四、总结

4.1 以上步骤只是记录我移植的过程,中间的原理没有关注,只能是说移植的步骤基本完成,但是实际每个人每个虚拟机遇到的问题应该会有差异,建议百度解决。

4.2 基本还算是比较顺利,花时2小时左右吧.

4.3 有什么问题也欢迎私信我讨论,但是我本人技术也很渣啦,不一定能帮大家解决。

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

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

相关文章

数据库变更管理:Liquibase or Flyway

《从零打造项目》系列文章 工具 比MyBatis Generator更强大的代码生成器 ORM框架选型 SpringBoot项目基础设施搭建 SpringBoot集成Mybatis项目实操 SpringBoot集成MybatisPlus项目实操 SpringBoot集成Spring Data JPA项目实操 数据库变更管理 数据库变更管理&#xff1a;Li…

ZMQ/ZeroMQ的三种消息模式

一、 Reuqest-Reply(请求-应答模式) 1、使用Request-Reply模式&#xff0c;需要遵循一定的规律。 2、客户端必要先发送消息&#xff0c;在接收消息&#xff1b;服务端必须先进行接收客户端发送过来的消息&#xff0c;在发送应答给客户端&#xff0c;如此循环 3、服务端和客户端…

RabbitMQ(基于AMQP的开源消息代理软件)

一、AMQP高级消息队列协议 &#xff08;1&#xff09;介绍 AMQP&#xff0c;即Advanced Message Queuing Protocol&#xff0c;一个提供统一消息服务的应用层标准高级消息队列协议&#xff0c;是应用层协议的一个开放标准&#xff0c;为面向消息的中间件设计。基于此协议的客…

图神经网络关系抽取论文阅读笔记(四)

1 GDPNet:用于关系提取的潜在多视图图的精炼(GDPNet: Refining Latent Multi-View Graph for Relation Extraction) 论文&#xff1a;GDPNet: Refining Latent Multi-View Graph for Relation Extraction&#xff0c;2021 1.1 引言 由于基于 BERT 等序列模型与基于图模型算法是…

模块首页UX交互升级,接口测试支持禁用本地执行,MeterSphere开源持续测试平台v2.4.0发布

2022年11月28日&#xff0c;MeterSphere一站式开源持续测试平台正式发布v2.4.0版本。 在这一版本中&#xff0c;MeterSphere在测试跟踪和接口测试模块中对首页进行了UX交互升级&#xff0c;将部分指标进行了饼图、柱状图的展示优化&#xff0c;同时根据社区用户的实际使用反馈…

计算机毕业设计【HTML+CSS+JavaScript服装购物商城】毕业论文源码

常见网页设计作业题材有 个人、 美食、 公司、 学校、 旅游、 电商、 宠物、 电器、 茶叶、 家居、 酒店、 舞蹈、 动漫、 服装、 体育、 化妆品、 物流、 环保、 书籍、 婚纱、 游戏、 节日、 戒烟、 电影、 摄影、 文化、 家乡、 鲜花、 礼品、 汽车、 其他等网页设计题目, A…

JS进阶第二篇:函数参数按值传递

文章目录函数参数按值传递按值传递引用传递&#xff1f;应用函数参数按值传递 按值传递 在 JavaScript 中&#xff0c;我们有函数以及传递给这些函数的参数。但是 JavaScript 对如何处理你传递的内容并不总是很清楚。当你开始进入面向对象开发的时候&#xff0c;你可能会发现…

【Hack The Box】Linux练习-- Shibboleth

HTB 学习笔记 【Hack The Box】Linux练习-- Shibboleth &#x1f525;系列专栏&#xff1a;Hack The Box &#x1f389;欢迎关注&#x1f50e;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; &#x1f4c6;首发时间&#xff1a;&#x1f334;2022年11月27日&#x1f334; &#…

3.8 如何在小红书上蹭热点,这里有8个方法【玩赚小红书】

在小红书究竟能不能蹭到热点?有哪些热点可以蹭?怎么蹭?是很多小红书运营者关心的问题。在我看下&#xff0c;小红书热点分为官方热点、事件热点和账号热点三类&#xff0c;用好这8个方法&#xff0c;让笔记获得更多流量。 ​ ​ 一、官方热点 官方热点是小红书推出&#x…

RocketMQ 消费端如何监听消息?

前言 RocketMQ消息消费者是如何启动的&#xff0c;有一个步骤是非常重要的&#xff0c;就是启动消息的监听&#xff0c;通过不断的拉取消息&#xff0c;来实现消息的监听&#xff0c; 那具体怎么做&#xff0c;让我们我们跟着源码来学习一下~ 流程地图 源码跟踪 这一块的代…

ipv6地址概述——配置ipv6

个人简介&#xff1a;云计算网络运维专业人员&#xff0c;了解运维知识&#xff0c;掌握TCP/IP协议&#xff0c;每天分享网络运维知识与技能。个人爱好: 编程&#xff0c;打篮球&#xff0c;计算机知识个人名言&#xff1a;海不辞水&#xff0c;故能成其大&#xff1b;山不辞石…

加拿大留学一定要善用这八个服务系统

加拿大留学之所以如此受大家欢迎&#xff0c;主要也是由于其优质的教育、易移民等优势&#xff0c;而对于学生本人来说&#xff0c;满意的学习体验&#xff0c;也是留学生涯中不可缺少的重要一环。 加拿大大学都拥有成熟完善的学生服务系统&#xff0c;帮助学生们更好的学习、…

Code learning tools

这里写目录标题1. Code learning tools1.1. Chrome Sourcegraph plugin1.2. Print statements never go out of style1.3. When in doubt, PANIC1.4. Visit the past with GitHub blame1. Code learning tools I know what you are thinking. Brad, you are new to Kube and G…

有哪些电容笔值得推荐?值得买的电容笔测评

和苹果原装的电容笔不同&#xff0c;普通电容笔没有苹果电容笔的独特重力压感&#xff0c;只是给人一种倾斜的压感。不过&#xff0c;如果你对画画没有什么特别的需求&#xff0c;也不必买昂贵的Apple Pencil&#xff0c;平替电容笔就足够我们使用了。接下来&#xff0c;我会给…

全球133种语言自动翻译mishop大米外贸商城系统

提示&#xff1a;133种语言自动翻译&#xff0c;开源无加密。 文章目录介绍安装方法部分代码展示学习资料下载地址成品效果图片展示介绍 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 大米外贸商城系统 简称mishop 完全开源版&#xff0c;只需做一种语言一…

JXcore 打包在企业级项目里的合理运用和模块系统以及网络的配置详解【node.js】

文章目录 JXcore 打包模块系统netJXcore 打包 node.Js是面向服务器端和网络应用程序的开源跨平台运行环境。 JXcore是一个支持多线程的节点。对于js发行版,您可以在多个线程中安全运行,而无需对现有代码进行任何更改。 安装命令如下: $ curl https://raw.githubusercontent.…

Java语言学习全笔记保姆级学习

目录 文章目录一、Java基础篇1.接口和抽象类的区别2.重载和重写的区别3.和equals的区别4.异常处理机制5.HashMap原理6.想要线程安全的HashMap怎么办&#xff1f;7.ConcurrentHashMap原如何保证的线程安全&#xff1f;8.HashTable与HashMap的区别9.ArrayList和LinkedList的区别1…

Tauri 入门教程

Tauri入门教程1 简介2 创建Tauri项目(页面基于Vue)2.1 环境准备2.2 创建工程3 Tauri 工程目录介绍4 页面调用rust方法5 事件系统6 HTTP请求7 文件系统8 对话框9 窗口配置10 打包1 简介 Tauri:构建跨平台的快速、安全、前端隔离应用。Tauri 是一个相对较新的框架&#xff0c;允…

Apollo 应用与源码分析:Monitor监控-硬件监控-CAN监控

目录 基本概念 CAN Card CAN - 原始套接字 ESD CAN 监控分析 Socket Can监控分析 基本概念 CAN Card 首先需要直到CAN的一些基本的概念。 CAN 是Controller Area Network 的缩写&#xff08;以下称为CAN&#xff09;&#xff0c;是ISO国际标准化的串行通信协议。在汽车产…

Elastic Stack 环境配置与框架简介

目录 简介 什么是Elastic Stack Elasticasearch Logstash Kibana Beats 框架图 下载 配置 一、安装java环境 启动 Elasticsearch Kibana FileBeat Logstash 测验 简介 什么是Elastic Stack Elastic Stack缩写为elk&#xff0c;它由三个软件组成&#xff1a;E…