【rk3568】01-环境搭建
文章目录
- 1.开发板介绍
- 1.1相关资源:
- 1.2接口布局
- 1.3屏幕
- 1.4核心板引脚可复用资源
- 2.环境搭建
- 2.1安装依赖包
- 2.2git配置
- 2.3安装sdk
- 2.4sdk介绍
- 2.5sdk编译
- 3.镜像介绍
1.开发板介绍
开发板
:atk-rk3568开发板
eMMC
:64G
LPDDR4
:4G
显示屏
:5.5寸mipi
u-boot
: 2017.09
kernel
:4.19
1.1相关资源:
cpu
1.2接口布局
1.3屏幕
1.4核心板引脚可复用资源
2.环境搭建
ATK-DLRK3568开发板使用的RK3568芯片为例,瑞芯微提供了全面的Linux SDK 包,Linux SDK 包主要包含了:
app:存放上层应用 app,包括 Qt 应用程序,以及其它的 C/C++应用程序。
buildroot:基于 buildroot 开发的根文件系统。
debian:基于 Debian 开发的根文件系统。
device/rockchip:存放各芯片板级配置文件和 Parameter 文件,以及一些编译与打包固件的脚本和预备文件。
docs:存放芯片模块开发指导文档、平台支持列表、芯片平台相关文档、Linux 开发指南等。
external:存放所需的第三方库,包括音频、视频、网络、recovery 等。
kernel:Linux 4.19 版本内核源码。
prebuilts:存放交叉编译工具链。
rkbin:存放 Rockchip 相关的 Binary 和工具。
rockdev:存放编译输出固件,编译 SDK 后才会生成该文件夹。
tools:存放 Linux 和 Windows 操作系统环境下常用的工具,包括镜像烧录工具、SD 卡升级启动制作工具、批量烧录工具等,譬如前面给大家介绍的 RKDevTool 工具以及Linux_Upgrade_Tool 工具在该目录下均可找到。
u-boot:基于 v2017.09 版本进行开发的 uboot 源码。
yocto:基于 Yocto 开发的根文件系统。
2.1安装依赖包
sudo apt-get update
sudo apt-get install curl git ssh make gcc libssl-dev liblz4-tool expect -y
sudo apt-get install g++ patchelf chrpath gawk texinfo chrpath diffstat binfmt-support qemu-user-static live-build bison -y
sudo apt-get install flex fakeroot cmake gcc-multilib g++-multilib unzip device-tree-compiler python3-pip -y
sudo apt-get install libncurses-dev python3-pyelftools vim mtd-utils -y#安装python2
curl -O https://www.python.org/ftp/python/2.7.18/Python-2.7.18.tar.xz
sudo tar -xf Python-2.7.18.tar.xz -C /usr/local/
cd /usr/local/Python-2.7.18
./configure
make
sudo make install
#sudo apt-get install python2.7 python-pyelftools -y
#sudo rm -rf /usr/bin/python
#sudo ln -s /usr/bin/python2 /usr/bin/pythonmkdir ~/bin
export PATH=~/bin:$PATH
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o ~/bin/repo
chmod a+x ~/bin/repo
2.2git配置
git config --global user.name "your name"
git config --global user.email "your email
2.3安装sdk
mkdir ~/rk3568_linux_sdk
tar xvf atk-rk3568_linux_release_v1.0_20230620.tgz -C ~/rk3568_linux_sdk
tar -xzf dl.tgz -C ~/rk3568_linux_sdk/buildroot/ #第三方软件包
cd ~/rk3568_linux_sdk/
python3 .repo/repo/repo sync -l -j10realpath .repo/manifests/rk3568_linux_release.xml #查看sdk atk版本
ls .repo/manifests/rk356x_linux/rk356x_linux_release* #在 SDK 源码根目录下,查询当前 SDK 的 RK 版本
2.4sdk介绍
SDK 软件框图从下至上分为 Bootloader、Linux Kernel、Libraries、Applications 四个层次,各层次内容如下:
⚫ BootLoader 层主要提供底层系统支持包,如 BootLoader、U-Boot、ATF 相关支持。
⚫ Kernel 层主要提供 Linux Kernel 的标准实现,Linux 也是一个开放的操作系统。Rockchip
平台的 Linux 核心为标准的 Linux4.4/4.19/5.10 内核,提供安全性、内存管理、进程管
理、网络协议栈等基础支持;主要是通过 Linux 内核管理设备硬件资源,如 CPU 调度、
缓存、内存、I/O 等。
⚫ Libraries 层对应一般嵌入式系统,相当于中间件层次,包含了各种系统基础库,以及第
三方开源程序库支持,对应用层提供 API 接口,系统定制者和应用开发者可以基于
Libraries 层的 API 开发新的应用。
⚫ Applications 层主要是实现具体的产品功能及交互逻辑,需要一些系统基础库及第三方
程序库支持,开发者可以开发实现自己的应用程序,提供系统各种能力给到最终用户。
2.5sdk编译
./build.sh lunch #然后输入3
./build.sh all #首次编译,需要全部编译
./build.sh #全部编译+打包
./build.sh firmware #镜像打包到 SDK/rockdev 目录
./mkfirmware.sh #或者直接执行 SDK 源码根目录下的./mkfirmware.sh 脚本./build.sh uboot # 单独编译 U-Boot
./build.sh kernel # 单独编译 Kernel
./build.sh modules # 编译 Linux 内核源码,包括内核设备树、内核模块
./build.sh buildroot #单独编译 rootfs
./build.sh recovery # 单独编译 recovery# 指定编译 buildroot 根文件系统 可以通过 环 境 变 量 RK_ROOTFS_SYSTEM 指 定 需 要 编 译 的 rootfs
(yocto/debian/buildroot):
export RK_ROOTFS_SYSTEM=buildroot
./build.sh rootfs./build.sh updateimg #打包成 update.img 镜像(将 uboot.img、boot.img、MiniLoaderAll.bin、parameter.txt、misc.img、rootfs.img、
oem.img、userdata.img、recovery.img 等)打包成一个 update.img 固件
./build.sh cleanall # 清理 uboot、kernel、buildroot(rootfs、recovery)。
3.镜像介绍
uboot.img
uboot.img 是一种 FIT 格式镜像,它由多个镜像合并而成,其中包括
trust 镜像(ARM Trusted Firmware + OP-TEE OS)、u-boot 镜像、u-boot dtb;编译 U-Boot 时会将这些镜像打包成一个 uboot.img。uboot.img 会烧录到开发板 uboot 分区
boot.img
boot.img 也是一种 FIT 格式镜像,它也是由多个镜像合并而成,其中包括内核镜像、内核 DTB、资源镜像 resource.img。boot.img 会烧录到开发板 boot 分区
MiniLoaderAll.bin
该镜像是运行在 RK3568 平台 U-Boot 之前的一段 Loader 代码(也就是比 U-Boot 更早阶段的 Loader),MiniLoaderAll.bin 由 TPL 和 SPL两部分组成, TPL 用于初始化 DDR,运行在 SRAM;而 SPL 运行在DDR,主要负责加载、引导 uboot.img。
misc.img 包含 BCB(Bootloader Control Block)信息,该镜像会烧写到开发板misc 分区。misc 分区是一个很重要的分区,其中存放了 BCB 数据块,主要用于Android/Linux 系统、U-Boot 以及 recovery 之间的通信
oem.img
给厂家使用,用于存放厂家的 APP 或数据,该镜像会烧写至开发板oem 分区,系统启动之后会将其挂载到/oem 目录。
parameter.txt
一个 txt 文本文件,是 RK3568 平台的分区表文件(记录分区名以及每个分区它的起始地址、结束地址);烧写镜像时,并不需要将parameter.txt 文件烧写到 Flash,而是会读取它的信息去定义分区。
recovery.img
recovery 模式镜像,recovery.img 用于进入 recovery 模式,recovery.img 会烧录到开发recovery 分区。recovery 模式是一种用于对设备进行修复、升级更新的模式。recovery.img 也是 FIT 格式镜像,也是由多个镜像合并而成,其中包括ramdisk(进入 recovery 模式时挂载该根文件系统)、内核镜像(进入recovery 模式时启动该内核镜像)、内核 DTB 以及 resource.img。rootfs.img
正常启动模式下对应的根文件系统镜像,包含有大量的库文件、可执行文件等。rootfs.img 会烧录到开发板 rootfs 分区
userdata.img
给用户使用,可用于存放用户的 App 或数据;该镜像会烧写至开发板 userdata 分区,系统启动之后,会将其挂载到/userdata 目录
参考:
http://www.openedv.com/docs/boards/arm-linux/RK3568Linux.html
http://www.openedv.com/docs/boards/arm-linux/RK3568Linuxhxb.html
相关文章:

【rk3568】01-环境搭建
文章目录 1.开发板介绍1.1相关资源:1.2接口布局1.3屏幕1.4核心板引脚可复用资源 2.环境搭建2.1安装依赖包2.2git配置2.3安装sdk2.4sdk介绍2.5sdk编译 3.镜像介绍 1.开发板介绍 开发板:atk-rk3568开发板 eMMC:64G LPDDR4:4G 显示屏…...
编程笔记 html5cssjs 036 CSS概述
编程笔记 html5&css&js 036 CSS概述 一、什么是 CSS?二、样式非常重要三、CSS 语法四、CSS 注释五、示例 CSS (Cascading Style Sheets,层叠样式表),是一种用来为结构化文档(如 HTML 文档或 XML 应用)添加样式…...

Vue入门七(Vuex的使用|Vue-router|LocalStorage与SessionStorage和cookie的使用)
文章目录 一、Vuex1)理解vuex2)优点3)何时使用?4)使用步骤① 安装vuex② 注册vuex③ 引用vuex④ 创建仓库Store五个模块介绍 5)基本使用 二、Vue-router三、LocalStorage与SessionStorage、cookie的使用 一…...

多级缓存架构(三)OpenResty Lua缓存
文章目录 一、nginx服务二、OpenResty服务1. 服务块定义2. 配置修改3. Lua程序编写4. 总结 三、运行四、测试五、高可用集群1. openresty2. tomcat 通过本文章,可以完成多级缓存架构中的Lua缓存。 一、nginx服务 在docker/docker-compose.yml中添加nginx服务块。…...

写点东西《Docker入门(上)》
写点东西《Docker入门(上)》 环境变量 Docker 镜像 Docker CMD 与 ENTRYPOINT 有什么区别 Docker 中的网络: Docker 存储: Docker 是一个工具,允许开发人员将他们的应用程序及其所有依赖项打包到一个容器中。然后&…...

chatgpt实用技巧之二反问式提示
大家好,今天跟大家讲实用gpt的小技巧二、反问式提示 有时候不知道怎么给 GPT 提示词,这时候,就可以反问 GPT 如何更好地给提示词。如图片所示 更详细内容可以看下这篇: 按照 GPT 给出的:故事设定角色故事发展主题结局…...

【数据结构和算法】奇偶链表
其他系列文章导航 Java基础合集数据结构与算法合集 设计模式合集 多线程合集 分布式合集 ES合集 文章目录 其他系列文章导航 文章目录 前言 一、题目描述 二、题解 2.1 方法一:分离节点后合并 三、代码 3.1 方法一:分离节点后合并 四、复杂度分…...

MVC框架
文章目录 JSP 和 ServletMVC 的演进1. JSP Model 12. JSP Model 23. MVC 的一般化4. MVC 的变体 总结 JSP 和 Servlet 如果你有使用 Java 作为主要语言开发网站的经历,那么你一定听过别人谈论 JSP 和 Servlet。其中,Servlet 指的是服务端的一种 Java 写…...

学习笔记之——3D Gaussian Splatting及其在SLAM与自动驾驶上的应用调研
之前博客介绍了NeRF-SLAM,其中对于3D Gaussian Splatting没有太深入介绍。本博文对3D Gaussian Splatting相关的一些工作做调研。 学习笔记之——NeRF SLAM(基于神经辐射场的SLAM)-CSDN博客文章浏览阅读967次,点赞22次࿰…...
Github Copilot 的使用方法和快捷键
Github Copilot是一个基于人工智能技术的代码自动补全工具,它可以为开发者提供实时的代码建议和自动生成代码片段。本文将详细介绍如何安装、设置和使用Github Copilot,并提供一些常用的快捷键来提高开发效率。 1. 安装和设置 1.1 下载并安装VS Code …...
开源iMES工厂管家 - 详细安装部署指南(图解)- 全网独稿
目录 一、服务器环境: 二、部署构成总览: 三、下载 node-v16.17.1-win-x64:Index of /download/release/v16.17.1/ 四、绿色安装 node-v16.17.1-win-x64 五、配置环境变量 六、检查 node-v16.17.1-win-x64 是否成功 七、执行命令组,安装组库与各种依赖 vue3环境配置…...

Codeforces Round 919 (Div. 2)
Problem - A - Codeforces n个约束条件 a x 求出满足n个约束条件的整数的个数 大于等于x,取最大的 小于等于x,取最小的 然后不等于x的,记录在区间范围内的个数,减去这些 #include<bits/stdc.h> #define endl \n #define …...

面向经验丰富的开发人员的最佳 Linux 发行版
在深入研究最佳 Linux 发行版之前,让我们回顾一下历史。到 2021 年,Linux 操作系统已经有 30 年的历史了,从作为开发者 Linus Torvalds 的个人项目开始,它已经走过了很长一段路。最初发布时,其源代码被分发给用户&…...

Rust-借用检查
Rust语言的核心特点是:在没有放弃对内存的直接控制力的情况下,实现了内存安全。 所谓对内存的直接控制能力,前文已经有所展示:可以自行决定内存布局,包括在栈上分配内存,还是在堆上分配内存;支…...

xcode安装及运行源码
抖音教学视频 目录 1、xcode 介绍 2、xcode 下载 3、xocde 运行ios源码 4、快捷键 1、xcode 介绍 Xcode 是运行在操作系统Mac OS X上的集成开发工具(IDE),由Apple Inc开发。Xcode是开发 macOS 和 iOS 应用程序的最快捷的方式。Xcode 具有…...

x-cmd pkg | czg - git commit 智能生成工具
目录 简介首次用户功能特点竞品和相关作品进一步探索 简介 czg 源于 commitizen/cz-cli 交互插件中 cz-git 的延伸项目,重新使用 TypeScript 编写的零依赖独立的 Node.js 命令行工具。旨在使用交互友好的方式,辅助用户生成规范的 git commit message 约…...
Go的并发练习题目
经典并发题目 现在有4个协程,分别对应编号为1,2,3,4,每秒钟就有一个协程打印自己的编号,要求编写一个程序,让输出的编号总是按照1,2,3,4,1,2,3,4这样的规律一直打印下去 type Token struct { }func newWorker(id int, ch chan Token, nextC…...

Python 网络编程之粘包问题
【一】粘包问题介绍 【1】粘包和半包 粘包: 定义: 粘包指的是发送方发送的若干个小数据包被接收方一次性接收,形成一个大的数据包。原因: 通常是因为网络底层对数据传输的优化,将多个小数据包组合成一个大的数据块一次…...

旧衣回收小程序搭建:降低企业成本,提高回收效率!
在人们环保意识提升下,旧衣回收行业受到了大众的关注,同时旧衣回收具有门槛低、利润大的优势。在我国,回收行业不仅帮助普通人就业获利,还对环保做出了较大贡献。因此,旧衣回收行业成为了当下的热门商业模式࿰…...

Jmeter后置处理器——JSON提取器
目录 1、简介 2、使用步骤 1)添加线程组 2)添加http请求 3) 添加JSON提取器 1、简介 JSON是一种简单的数据交换格式,允许互联网应用程序快速传输数据。JSON提取器可以从JSON格式响应数据中提取数据、简化从JSON原始数据中提取特定…...

家政维修平台实战20:权限设计
目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系,主要是分成几个表,用户表我们是记录用户的基础信息,包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题,不同的角色…...

关键领域软件测试的突围之路:如何破解安全与效率的平衡难题
在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件,这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下,实现高效测试与快速迭代?这一命题正考验着…...

HarmonyOS运动开发:如何用mpchart绘制运动配速图表
##鸿蒙核心技术##运动开发##Sensor Service Kit(传感器服务)# 前言 在运动类应用中,运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据,如配速、距离、卡路里消耗等,用户可以更清晰…...

如何更改默认 Crontab 编辑器 ?
在 Linux 领域中,crontab 是您可能经常遇到的一个术语。这个实用程序在类 unix 操作系统上可用,用于调度在预定义时间和间隔自动执行的任务。这对管理员和高级用户非常有益,允许他们自动执行各种系统任务。 编辑 Crontab 文件通常使用文本编…...
MySQL JOIN 表过多的优化思路
当 MySQL 查询涉及大量表 JOIN 时,性能会显著下降。以下是优化思路和简易实现方法: 一、核心优化思路 减少 JOIN 数量 数据冗余:添加必要的冗余字段(如订单表直接存储用户名)合并表:将频繁关联的小表合并成…...

【C++进阶篇】智能指针
C内存管理终极指南:智能指针从入门到源码剖析 一. 智能指针1.1 auto_ptr1.2 unique_ptr1.3 shared_ptr1.4 make_shared 二. 原理三. shared_ptr循环引用问题三. 线程安全问题四. 内存泄漏4.1 什么是内存泄漏4.2 危害4.3 避免内存泄漏 五. 最后 一. 智能指针 智能指…...
Docker拉取MySQL后数据库连接失败的解决方案
在使用Docker部署MySQL时,拉取并启动容器后,有时可能会遇到数据库连接失败的问题。这种问题可能由多种原因导致,包括配置错误、网络设置问题、权限问题等。本文将分析可能的原因,并提供解决方案。 一、确认MySQL容器的运行状态 …...

uni-app学习笔记三十五--扩展组件的安装和使用
由于内置组件不能满足日常开发需要,uniapp官方也提供了众多的扩展组件供我们使用。由于不是内置组件,需要安装才能使用。 一、安装扩展插件 安装方法: 1.访问uniapp官方文档组件部分:组件使用的入门教程 | uni-app官网 点击左侧…...
Linux安全加固:从攻防视角构建系统免疫
Linux安全加固:从攻防视角构建系统免疫 构建坚不可摧的数字堡垒 引言:攻防对抗的新纪元 在日益复杂的网络威胁环境中,Linux系统安全已从被动防御转向主动免疫。2023年全球网络安全报告显示,高级持续性威胁(APT)攻击同比增长65%,平均入侵停留时间缩短至48小时。本章将从…...

算法—栈系列
一:删除字符串中的所有相邻重复项 class Solution { public:string removeDuplicates(string s) {stack<char> st;for(int i 0; i < s.size(); i){char target s[i];if(!st.empty() && target st.top())st.pop();elsest.push(s[i]);}string ret…...