当前位置: 首页 > news >正文

armsom产品编译烧录Linux固件

1、开发环境及工具准备

Rockchip Linux 软件包:linux-5.10-gen-rkr4

主机:

  • 安装VMware搭建虚拟机,版本为Ubuntu 20.04 (硬盘容量大于100G)

  • 安装远程连接工具MobaXterm(可连接虚拟机方便文件传输)

2、SDK编译环境搭建

2.1、安装库和工具集:

sudo apt-get install git ssh make gcc libssl-dev liblz4-tool expect g++ patchelf chrpath gawk texinfo chrpath diffstat binfmt-support qemu-user-static live-build bison flex fakeroot cmake gcc-multilib g++-multilib unzip device-tree-compiler ncurses-dev libgucharmap-2-90-dev bzip2 expat gpgv2 cpp-aarch64-linux-gnu time mtd-utils

2.2、创建工作目录

mkdir ~/RK3588

2.3、拷贝SDK至工作目录

可通过MobaXterm实现PC与虚拟机之间传输文件

2.4、解压SDK

解压命令:

cat linux-5.10-gen-rkr4.tar.gzaa* | tar xzvf -

2.5、检查和升级软件包

  • 检查make版本(要求make 4.0及以上版本)
make -v
GNU Make 4.2
Built for x86_64-pc-linux-gnu
  • 升级make版本
git clone https://github.com/mirror/make.git
cd make
git checkout 4.2
git am $BUILDROOT_DIR/package/make/*.patch
autoreconf -f -i
./configure
make make -j8
sudo install -m 0755 make /usr/bin/make
  • 检查lz4版本(要求安装 lz4 1.7.3及以上版本)
lz4 -v
*** LZ4 command line interface 64-bits v1.9.4, by Yann Collet ***
refusing to read from a console
  • 升级lz4版本
git clone https://github.com/lz4/lz4.git
cd lz4
make
sudo make install
sudo install -m 0755 lz4 /usr/bin/lz4
  • 检查和升级git版本
git clone https://github.com/mirror/make.git --depth 1 -b 4.2
cd make
git am $BUILDROOT_DIR/package/make/*.patch
autoreconf -f -i
./configure
make make -j8
install -m 0755 make /usr/local/bin/make

2.6、git配置

在~/RK3588/linux-5.10-gen-rkr4目录下

git config --global user.name "your name"
git config --global user.email "your mail"

2.7、安装repo

mkdir ~/bin
export PATH=~/bin:$PATH
curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o ~/bin/repo
chmod a+x ~/bin/repo

3、编译SDK

可参考 device/rockchip/common/README.md 编译说明。

3.1、SDK编译命令查看

make help

3.2、SDK配置:

可通过make lunch 或者./build.sh lunch 进⾏配置,其他功能的配置可通过make menuconfig 来配置相关属性

3.3、全自动编译

进⼊~/RK3588/linux-5.10-gen-rkr4目录执⾏以下命令⾃动完成所有的编译:

./build.sh all # 只编译模块代码(u-Boot,kernel,Rootfs,Recovery)
# 需要再执⾏./mkfirmware.sh 进⾏固件打包
./build.sh # 编译模块代码(u-Boot,kernel,Rootfs,Recovery)
# 打包成update.img完整升级包
# 所有编译信息复制和⽣成到out⽬录下

默认是 Buildroot,可以通过设置坏境变量 RK_ROOTFS_SYSTEM 指定不同 rootfs。

RK_ROOTFS_SYSTEM ⽬前可设定三种系统:buildroot、debian、 yocto 。

比如需要生成debian的命令如下:

export RK_ROOTFS_SYSTEM=debian
./build.sh

3.4、模块编译

./build.sh uboot
./build.sh kernel
./build.sh recovery
./build.sh rootfs
...

4、烧写固件

4.1、安装烧录工具

  • Windows 驱动安装助手:~/RK3588/linux-5.10-gen-rkr4/tools/windows/DriverAssitant_v5.12.zip

  • Windows 烧写⼯具:~/RK3588/linux-5.10-gen-rkr4/tools/windows/RKDevTool_Release_v3.15

4.2、打包工具

主要⽤于各分⽴固件打包成⼀个完整的update.img固件⽅便升级。

生成固件路径:/tools/linux/Linux_Pack_Firmware/rockdev

./mkupdate.sh

4.3、烧录固件

运行DriverAssitant_v5.12里面的DriverInstall.exe,先选择驱动卸载,然后再选择驱动安装。

打开RKDevTool.exe工具,给开发板上电并且用Type-C线与PC端连接,工具能识别到开发板的三种状态:

  1. MASKROM

    开发板处于裸机状态,没有运行任何程序或者按住板载的maskrom按键上电

  2. LOADER

    开发板在系统、uboot输入命令reboot loader或者按住板载的recovery按键(有些开发板没有引出)上电

  3. ADB

    系统正在运行

4.3.1、烧写完整系统固件

通过Type-C数据线连接开发板与pc,运行RKDevTool.exe。若驱动安装没有问题,工具会识别到两种情况:发现一个MASKROM设备发现一个ADB设备

  1. 自动识别到MASKROM设备,如图:

在这里插入图片描述

按【升级固件】按钮,点击【固件】选择要升级的固件文件(SDK编译的固件是update.img),固件包含完整的分区镜像

在这里插入图片描述

加载固件之后,点击【升级】按钮,等待烧写完成即可

  1. 自动识别到ADB设备,如图:

在这里插入图片描述

​ 注:若显示发现一个ADB设备,则在升级固件界面点击【切换】即可进入loader烧录模式

在这里插入图片描述

  • 按【固件】按钮,选择要升级的固件文件,加载固件之后,点击【升级】按钮,等待烧写完成即可。
4.3.2、烧写分区固件

在开发中会有很多情况遇到只想要烧录uboot、kernel、system分区不想更新完整固件的情况,这个可以借助工具做到

这里以更新kernel分区来举例:
首先让开发板处于loader模式,可以在系统或者uboot输入命令reboot loader

在这里插入图片描述

按照上面的步骤执行。
注意,一定要先点击【设备分区表】,读取设备分区镜像的地址会显示在右边,如上图所示读取内核的地址0x0000C800与配置的一致所以可以直接执行

5、ADB使用

这里主要介绍windows下使用adb进行调试

步骤:

  • 下载windows版本的adb.zip,解压到C:\adb

  • 配置环境变量:

    1、键盘按键:win + r

    2、打开“系统属性”窗口

    3、“高级”→“环境变量”→“系统变量”

    4、找到“Path”双击,新建,复制adb路径进去,点击“确定”按钮,添加成功

  • 常用的adb命令

  adb help            //可查看所有命令adb versionadb start-server     //启动adb服务adb kill-server      //关闭adb服务adb devicesadb shelladb push [-p] <local> <remote>adb pull [-p] [-a] <remote> [<local>]

相关文章:

armsom产品编译烧录Linux固件

1、开发环境及工具准备 Rockchip Linux 软件包&#xff1a;linux-5.10-gen-rkr4 主机&#xff1a; 安装VMware搭建虚拟机&#xff0c;版本为Ubuntu 20.04 (硬盘容量大于100G&#xff09; 安装远程连接工具MobaXterm&#xff08;可连接虚拟机方便文件传输&#xff09; 2、S…...

VSCode:Markdown插件安装使用 -- 最简洁的VSCode中Markdown插件安装使用

VSCode&#xff1a;Markdown插件安装使用 1.安装Marktext2.使用Marktext 本文&#xff0c;将在Visual Studio Code中&#xff0c;安装和使用Markdown插件&#xff0c;以Marktext插件为例。 1.安装Marktext 打开VSCode&#xff0c;侧边栏中找到扩展模块(或CtrlShiftX快捷键)&am…...

AI 行业发展趋势:科技创新引领未来变革

在当今数字化时代,人工智能(AI)行业正以前所未有的速度蓬勃发展,深刻地改变着我们的生活、工作和社会格局。从基础技术的突破到广泛的应用场景拓展,AI 展现出了一系列令人瞩目的发展趋势,预示着一个充满无限可能的未来。 一、技术创新持续突破 模型规模与性能提升 AI 模…...

FB爆款打法实操经验总结

在进行Facebook广告投放时&#xff0c;有效的预算控制、素材测试、广告效果评估和lookalike受众的管理是至关重要的。通过科学的方法和策略&#xff0c;您可以在竞争激烈的市场中实现更好的业绩。 01 预算控制 测试阶段的广告不稳定性&#xff1a;在投放广告的初期&#xff0c…...

微信小程序TTS解决方案

微信小程序原生语音合成 API&#xff08;基础且简单&#xff09; 介绍&#xff1a;微信小程序提供了基础的语音合成能力。通过wx.createInnerAudioContext()等相关API&#xff0c;可以实现简单的语音播放功能。不过它主要是用于音频播放&#xff0c;对于完整的文本到语音&#…...

centos stream 8下载安装遇到的坑

早在2020年12月。CentOS 官方发文宣称&#xff1a;“CentOS项目的未来是 CentOS Stream 明年我们会将重点从CentOS Linux 转移到CentOS Stream 它紧随当前 RHEL 版本之前。CentOS Linux 8 作为 RHEL 8 的重建&#xff0c;将于 2021 年底结束。CentOS Stream 在该日期之后继续&a…...

计算机网络——期末复习(1)背诵

背诵 交换机与路由器&#xff1a;交换机连接同一子网&#xff0c;利用帧中的目的物理地址转发帧&#xff0c;工作在数据链路层&#xff1b;路由器连接不同子网&#xff0c;利用IP数据报中的目的IP地址转发IP数据报&#xff0c;工作在网络层。五层的任务&#xff1a;&#xff0…...

AORO M6 Pro单北斗防爆终端全面国产化,关键技术不再“卡脖子”

全球科技竞争日益激烈&#xff0c;核心技术自主创新已成为国家发展的战略基石。面对关键技术被“卡脖子”的风险&#xff0c;中国科技企业正加速推进信息技术应用创新战略&#xff0c;力求在关键领域实现自主可控。遨游通讯推出的一款融合单北斗、鸿蒙系统、5G国产芯片的防爆终…...

ubuntu 卸载 MySQL

1. 卸载 MySQL 1.1 停止 MySQL 服务 首先&#xff0c;停止 MySQL 服务&#xff1a; sudo systemctl stop mysql 1.2 卸载 MySQL 包 使用 apt-get 命令卸载 MySQL 包&#xff1a; sudo apt-get remove --purge mysql-server mysql-client mysql-common mysql-server-core-* my…...

6、基于SpringBoot的网上购物系统

摘 要 随着我国经济的飞速发展&#xff0c;人们的生活速度明显加快&#xff0c;在餐厅吃饭排队的情况到处可见&#xff0c;近年来由于新兴IT行业的空前发展&#xff0c;它与传统餐饮行业也进行了新旧的结合&#xff0c;很多餐饮商户开始通过网络建设订餐系统&#xff0c;通过专…...

AMS1117芯片驱动电路·降压芯片的驱动电路详解

编写不易&#xff0c;仅供学习&#xff0c;请勿搬运&#xff0c;感谢理解 AMS1117驱动电路 很常用的一种LDO降压芯片&#xff0c;LDO(Low Dropout Regulator)降压芯片是线性稳压器&#xff0c;这种IC因为内部集成的不是开关电路&#xff0c;只能将输入与输出的电压差值通过内部…...

数据仓库工具箱—读书笔记02(Kimball维度建模技术概述02、事实表技术基础)

Kimball维度建模技术概述 记录一下读《数据仓库工具箱》时的思考&#xff0c;摘录一些书中关于维度建模比较重要的思想与大家分享&#x1f923;&#x1f923;&#x1f923; 第二章前言部分作者提到&#xff1a;技术的介绍应该通过涵盖各种行业的熟悉的用例展开&#xff08;赞同…...

SAP ABAP-日期格式问题 SAP内部错误,反序列化JSON字符串时发生异常 值 20241215 不是根据 ABAP 的 XML 格式的有效日期

SAP ABAP-日期格式问题 SAP内部错误,反序列化JSON字符串时发生异常 值 20241215 不是根据 ABAP 的 XML 格式的有效日期 在SAP内部用 YYYYMMDD没有问题 外部传入参数...

Linux-ubuntu点LED灯C语言版

​ 一&#xff0c;C语言点灯 1.寄存器配置 设置为SVC模式&#xff0c;复用寄存器设置GPIO1-IO003,设置电气属性&#xff0c;设置为输出模式。 2.软件 汇编语言对模式设置&#xff0c;并且将堆栈指针指向主程序&#xff1a; .global _start_start: /*设置为svr模式 */mrs …...

ASP.NET|日常开发中数据集合详解

ASP.NET&#xff5c;日常开发中数据集合详解 前言一、数组&#xff08;Array&#xff09;1.1 定义和基本概念1.2 数组的操作 二、列表&#xff08;List<T>&#xff09;2.1 特点和优势2.2 常用操作 三、字典&#xff08;Dictionary<K, V>&#xff09;3.1 概念和用途…...

Pytest-Bdd vs Behave:选择最适合的 Python BDD 框架

Pytest-Bdd vs Behave&#xff1a;选择最适合的 Python BDD 框架 Pytest BDD vs Behave&#xff1a;选择最适合的 Python BDD 框架BDD 介绍Python BDD 框架列表Python BehavePytest BDDPytest BDD vs Behave&#xff1a;关键区别Pytest BDD vs Behave&#xff1a;最佳应用场景结…...

Unity3D Shader变体自定义组合压缩方案详解

前言 在Unity3D中&#xff0c;Shader变体&#xff08;Shader Variants&#xff09;是指根据不同条件生成的Shader版本。这些条件可以包括材质属性、光照模型、阴影选项、渲染队列、纹理类型等。Shader变体允许开发者为同一Shader提供多种实现方式&#xff0c;以满足不同的渲染…...

QT使用promoted后样式(setStyleSheet)不生效问题解决

1.理解promoted&#xff08;提升&#xff09;在 Qt 中的概念 在 Qt Designer 中&#xff0c;“提升&#xff08;Promoted&#xff09;” 是一种机制&#xff0c;它允许你使用自定义的部件类来替代标准的 Qt 部件类。这在你已经创建了一个从标准 Qt 部件&#xff08;如QListWid…...

Vue3有哪些好用的处理大数据量虚拟表格组件呢?

在 Vue 3 中&#xff0c;处理大数据量的虚拟表格&#xff08;Virtual Table&#xff09;通常需要一个专门的组件或库来优化渲染性能&#xff0c;避免一次性渲染过多的 DOM 元素。以下是一些常用的虚拟表格组件&#xff0c;它们可以帮助你有效处理大数据量&#xff1a; 1. Vue …...

Java学习教程,从入门到精通,Java LinkedList(链表)语法知识点及案例代码(62)

Java LinkedList&#xff08;链表&#xff09;语法知识点及案例代码 一、LinkedList概述 LinkedList是Java集合框架中的一个类&#xff0c;位于java.util包中。它实现了List、Deque、Queue等接口&#xff0c;提供了链表数据结构的实现。链表是一种线性数据结构&#xff0c;其…...

web vue 项目 Docker化部署

Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段&#xff1a; 构建阶段&#xff08;Build Stage&#xff09;&#xff1a…...

【kafka】Golang实现分布式Masscan任务调度系统

要求&#xff1a; 输出两个程序&#xff0c;一个命令行程序&#xff08;命令行参数用flag&#xff09;和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽&#xff0c;然后将消息推送到kafka里面。 服务端程序&#xff1a; 从kafka消费者接收…...

Linux云原生安全:零信任架构与机密计算

Linux云原生安全&#xff1a;零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言&#xff1a;云原生安全的范式革命 随着云原生技术的普及&#xff0c;安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测&#xff0c;到2025年&#xff0c;零信任架构将成为超…...

CMake 从 GitHub 下载第三方库并使用

有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...

laravel8+vue3.0+element-plus搭建方法

创建 laravel8 项目 composer create-project --prefer-dist laravel/laravel laravel8 8.* 安装 laravel/ui composer require laravel/ui 修改 package.json 文件 "devDependencies": {"vue/compiler-sfc": "^3.0.7","axios": …...

Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信

文章目录 Linux C语言网络编程详细入门教程&#xff1a;如何一步步实现TCP服务端与客户端通信前言一、网络通信基础概念二、服务端与客户端的完整流程图解三、每一步的详细讲解和代码示例1. 创建Socket&#xff08;服务端和客户端都要&#xff09;2. 绑定本地地址和端口&#x…...

在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案

这个问题我看其他博主也写了&#xff0c;要么要会员、要么写的乱七八糟。这里我整理一下&#xff0c;把问题说清楚并且给出代码&#xff0c;拿去用就行&#xff0c;照着葫芦画瓢。 问题 在继承QWebEngineView后&#xff0c;重写mousePressEvent或event函数无法捕获鼠标按下事…...

如何更改默认 Crontab 编辑器 ?

在 Linux 领域中&#xff0c;crontab 是您可能经常遇到的一个术语。这个实用程序在类 unix 操作系统上可用&#xff0c;用于调度在预定义时间和间隔自动执行的任务。这对管理员和高级用户非常有益&#xff0c;允许他们自动执行各种系统任务。 编辑 Crontab 文件通常使用文本编…...

CRMEB 中 PHP 短信扩展开发:涵盖一号通、阿里云、腾讯云、创蓝

目前已有一号通短信、阿里云短信、腾讯云短信扩展 扩展入口文件 文件目录 crmeb\services\sms\Sms.php 默认驱动类型为&#xff1a;一号通 namespace crmeb\services\sms;use crmeb\basic\BaseManager; use crmeb\services\AccessTokenServeService; use crmeb\services\sms\…...

HubSpot推出与ChatGPT的深度集成引发兴奋与担忧

上周三&#xff0c;HubSpot宣布已构建与ChatGPT的深度集成&#xff0c;这一消息在HubSpot用户和营销技术观察者中引发了极大的兴奋&#xff0c;但同时也存在一些关于数据安全的担忧。 许多网络声音声称&#xff0c;这对SaaS应用程序和人工智能而言是一场范式转变。 但向任何技…...