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端连接,工具能识别到开发板的三种状态:
-
MASKROM
开发板处于裸机状态,没有运行任何程序或者按住板载的maskrom按键上电
-
LOADER
开发板在系统、uboot输入命令
reboot loader
或者按住板载的recovery按键(有些开发板没有引出)上电 -
ADB
系统正在运行
4.3.1、烧写完整系统固件
通过Type-C数据线连接开发板与pc,运行RKDevTool.exe。若驱动安装没有问题,工具会识别到两种情况:发现一个MASKROM设备
和发现一个ADB设备
- 自动识别到MASKROM设备,如图:
按【升级固件】按钮,点击【固件】选择要升级的固件文件(SDK编译的固件是update.img),固件包含完整的分区镜像
加载固件之后,点击【升级】按钮,等待烧写完成即可
- 自动识别到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 软件包:linux-5.10-gen-rkr4 主机: 安装VMware搭建虚拟机,版本为Ubuntu 20.04 (硬盘容量大于100G) 安装远程连接工具MobaXterm(可连接虚拟机方便文件传输) 2、S…...

VSCode:Markdown插件安装使用 -- 最简洁的VSCode中Markdown插件安装使用
VSCode:Markdown插件安装使用 1.安装Marktext2.使用Marktext 本文,将在Visual Studio Code中,安装和使用Markdown插件,以Marktext插件为例。 1.安装Marktext 打开VSCode,侧边栏中找到扩展模块(或CtrlShiftX快捷键)&am…...
AI 行业发展趋势:科技创新引领未来变革
在当今数字化时代,人工智能(AI)行业正以前所未有的速度蓬勃发展,深刻地改变着我们的生活、工作和社会格局。从基础技术的突破到广泛的应用场景拓展,AI 展现出了一系列令人瞩目的发展趋势,预示着一个充满无限可能的未来。 一、技术创新持续突破 模型规模与性能提升 AI 模…...

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

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

centos stream 8下载安装遇到的坑
早在2020年12月。CentOS 官方发文宣称:“CentOS项目的未来是 CentOS Stream 明年我们会将重点从CentOS Linux 转移到CentOS Stream 它紧随当前 RHEL 版本之前。CentOS Linux 8 作为 RHEL 8 的重建,将于 2021 年底结束。CentOS Stream 在该日期之后继续&a…...
计算机网络——期末复习(1)背诵
背诵 交换机与路由器:交换机连接同一子网,利用帧中的目的物理地址转发帧,工作在数据链路层;路由器连接不同子网,利用IP数据报中的目的IP地址转发IP数据报,工作在网络层。五层的任务:࿰…...

AORO M6 Pro单北斗防爆终端全面国产化,关键技术不再“卡脖子”
全球科技竞争日益激烈,核心技术自主创新已成为国家发展的战略基石。面对关键技术被“卡脖子”的风险,中国科技企业正加速推进信息技术应用创新战略,力求在关键领域实现自主可控。遨游通讯推出的一款融合单北斗、鸿蒙系统、5G国产芯片的防爆终…...
ubuntu 卸载 MySQL
1. 卸载 MySQL 1.1 停止 MySQL 服务 首先,停止 MySQL 服务: sudo systemctl stop mysql 1.2 卸载 MySQL 包 使用 apt-get 命令卸载 MySQL 包: sudo apt-get remove --purge mysql-server mysql-client mysql-common mysql-server-core-* my…...

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

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

数据仓库工具箱—读书笔记02(Kimball维度建模技术概述02、事实表技术基础)
Kimball维度建模技术概述 记录一下读《数据仓库工具箱》时的思考,摘录一些书中关于维度建模比较重要的思想与大家分享🤣🤣🤣 第二章前言部分作者提到:技术的介绍应该通过涵盖各种行业的熟悉的用例展开(赞同…...

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

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

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

Pytest-Bdd vs Behave:选择最适合的 Python BDD 框架
Pytest-Bdd vs Behave:选择最适合的 Python BDD 框架 Pytest BDD vs Behave:选择最适合的 Python BDD 框架BDD 介绍Python BDD 框架列表Python BehavePytest BDDPytest BDD vs Behave:关键区别Pytest BDD vs Behave:最佳应用场景结…...
Unity3D Shader变体自定义组合压缩方案详解
前言 在Unity3D中,Shader变体(Shader Variants)是指根据不同条件生成的Shader版本。这些条件可以包括材质属性、光照模型、阴影选项、渲染队列、纹理类型等。Shader变体允许开发者为同一Shader提供多种实现方式,以满足不同的渲染…...
QT使用promoted后样式(setStyleSheet)不生效问题解决
1.理解promoted(提升)在 Qt 中的概念 在 Qt Designer 中,“提升(Promoted)” 是一种机制,它允许你使用自定义的部件类来替代标准的 Qt 部件类。这在你已经创建了一个从标准 Qt 部件(如QListWid…...
Vue3有哪些好用的处理大数据量虚拟表格组件呢?
在 Vue 3 中,处理大数据量的虚拟表格(Virtual Table)通常需要一个专门的组件或库来优化渲染性能,避免一次性渲染过多的 DOM 元素。以下是一些常用的虚拟表格组件,它们可以帮助你有效处理大数据量: 1. Vue …...
Java学习教程,从入门到精通,Java LinkedList(链表)语法知识点及案例代码(62)
Java LinkedList(链表)语法知识点及案例代码 一、LinkedList概述 LinkedList是Java集合框架中的一个类,位于java.util包中。它实现了List、Deque、Queue等接口,提供了链表数据结构的实现。链表是一种线性数据结构,其…...

GC1808高性能24位立体声音频ADC芯片解析
1. 芯片概述 GC1808是一款24位立体声音频模数转换器(ADC),支持8kHz~96kHz采样率,集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器,适用于高保真音频采集场景。 2. 核心特性 高精度:24位分辨率,…...
C++.OpenGL (14/64)多光源(Multiple Lights)
多光源(Multiple Lights) 多光源渲染技术概览 #mermaid-svg-3L5e5gGn76TNh7Lq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3L5e5gGn76TNh7Lq .error-icon{fill:#552222;}#mermaid-svg-3L5e5gGn76TNh7Lq .erro…...

从“安全密码”到测试体系:Gitee Test 赋能关键领域软件质量保障
关键领域软件测试的"安全密码":Gitee Test如何破解行业痛点 在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的"神经中枢"。从国防军工到能源电力,从金融交易到交通管控,这些关乎国计民生的关键领域…...

Scrapy-Redis分布式爬虫架构的可扩展性与容错性增强:基于微服务与容器化的解决方案
在大数据时代,海量数据的采集与处理成为企业和研究机构获取信息的关键环节。Scrapy-Redis作为一种经典的分布式爬虫架构,在处理大规模数据抓取任务时展现出强大的能力。然而,随着业务规模的不断扩大和数据抓取需求的日益复杂,传统…...

相关类相关的可视化图像总结
目录 一、散点图 二、气泡图 三、相关图 四、热力图 五、二维密度图 六、多模态二维密度图 七、雷达图 八、桑基图 九、总结 一、散点图 特点 通过点的位置展示两个连续变量之间的关系,可直观判断线性相关、非线性相关或无相关关系,点的分布密…...
Windows 下端口占用排查与释放全攻略
Windows 下端口占用排查与释放全攻略 在开发和运维过程中,经常会遇到端口被占用的问题(如 8080、3306 等常用端口)。本文将详细介绍如何通过命令行和图形化界面快速定位并释放被占用的端口,帮助你高效解决此类问题。 一、准…...

【工具教程】多个条形码识别用条码内容对图片重命名,批量PDF条形码识别后用条码内容批量改名,使用教程及注意事项
一、条形码识别改名使用教程 打开软件并选择处理模式:打开软件后,根据要处理的文件类型,选择 “图片识别模式” 或 “PDF 识别模式”。如果是处理包含条形码的 PDF 文件,就选择 “PDF 识别模式”;若是处理图片文件&…...
初级程序员入门指南
初级程序员入门指南 在数字化浪潮中,编程已然成为极具价值的技能。对于渴望踏入程序员行列的新手而言,明晰入门路径与必备知识是开启征程的关键。本文将为初级程序员提供全面的入门指引。 一、明确学习方向 (一)编程语言抉择 编…...

Gitlab + Jenkins 实现 CICD
CICD 是持续集成(Continuous Integration, CI)和持续交付/部署(Continuous Delivery/Deployment, CD)的缩写,是现代软件开发中的一种自动化流程实践。下面介绍 Web 项目如何在代码提交到 Gitlab 后,自动发布…...
JS的传统写法 vs 简写形式
一、条件判断与逻辑操作 三元运算符简化条件判断 // 传统写法 let result; if (someCondition) {result yes; } else {result no; }// 简写方式 const result someCondition ? yes : no;短路求值 // 传统写法 if (condition) {doSomething(); }// 简写方式 condition &…...