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

RK3506-G2 开箱使用体验

前言

使用淘宝买的99元,制作的瑞芯微RK3506-G2开发板,分享开箱使用体验以及一些及简单的编译、操作等。
如果对开发板感兴趣,可以直接淘宝搜rk3506,下单学习一下,也不是很贵。性价比还是挺高的。

一、开箱

下图是拿到手的样子。

二、上电

拿到手的开发板出厂自带镜像,上电后,电源灯常亮,有LED蓝灯闪烁

我们可以看到使用buildroot 文件系统,使用内核版本为6.1.99

三、开发环境

对SDK进行编译,编译完成后下载到

使用环境为ubuntu 22,编译在docker中进行

检查相关依赖,安装编译所需的软件包,中间可能会停止,选择相应时区,选择Asia-Shanghai即可。

sudo apt-get update && sudo apt-get install git ssh make gcc libssl-dev \
liblz4-tool expect expect-dev 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 libgmp-dev \
libmpc-dev bc python-is-python3 python2 file rsync bsdmainutils

检查相关版本是否符合编译要求

  • python3 >=3.6
  • make >=4.2
  • lz4 版本1.9.3

四、编译SDK

根据提供资料,解压SDK,目录如下。

我们可以根据docs目录中提供的文档资料来进行学习如何编译

我们查看官方文档了解如何编译。

进入SDK/docs/cn目录,查看Rockchip_Developer_Guide_Linux_Software_CN.pdf文档,这个文档是Rockchip Linux 软件开发指南

我们主要查看第8章,SDK编译说明

SDK编译命令

SDK可以通过make./build.sh 后加参数进行相关配置和编译。官方文档说可以参考device/rockchip/common/README.md文档,如下。

建议第一次编译首先,清除SDK相关编译产物,确保编译成功。

# Rockchip Linux SDKRockchip Linux SDK for the Rockchip SOC boards- wiki <http://opensource.rock-chips.com/wiki_Main_Page>.## Quick Start1. Check supported targets:~ $ make help
2. Choose SDK's defconfig:~ $ make rockchip_defconfig
3. Change SDK's configs:~ $ make menuconfig~ $ make savedefconfig
4. Run "make" to build the images, logs saved at "output/log/"
5. Flash the generated "output/firmware/update.img" to your device
6. Boot your device and enjoy it

我们一步一步,根据文档来操作

make help,其下有几个选项。如下:

  • menuconfig,一般是相关配置选项,比如内核配置、文件系统配置图形化配置等。
  • oldconfig,一般是
  • syncconfig,保存相关配置
  • olddefconfig,设置相关配置项为默认值
  • savedefconfig,保存配置
  • clean,清除配置
itrunk@ubuntu22:/work/prj/rk3506/rk3506_mini/rk3506_linux6.1_sdk$ make helpmenuconfig             - interactive curses-based configuratoroldconfig              - resolve any unresolved symbols in .configsyncconfig             - Same as oldconfig, but quietly, additionally update depsolddefconfig           - Same as syncconfig but sets new symbols to their default valuesavedefconfig          - Save current config to $RK_CHIP_DIR/$RK_DEFCONFIG (minimal config)clean                  - Cleanup

make 实际上就是./build.sh,可以通过./build.sh help查看相关命令。在实际开发过程中,还是./build.sh <target>命令用的比较多,所以建议使用这个命令进行开发。当然,这个看个人习惯。

可以看到有几个defcongfig,这是板级配置,即我们第一次开发时,需要配置板级配置选项,来告诉SDK我要编译这个配置项的内容。我们需要关心的只有rockchip_rk3506_g_mini_defconfig,这个是这个开发板对应的板级配置。

itrunk@ubuntu22:/work/prj/rk3506/rk3506_mini/rk3506_linux6.1_sdk$ ./build.sh help############### Rockchip Linux SDK ###############Manifest: rk3506_linux6.1_release_v1.1.0_20241128.xmlLog colors: message notice warning error fatalUsage: build.sh [OPTIONS]
Available options:
chip[:<chip>[:<config>]]                choose chip
defconfig[:<config>]                    choose defconfig*_defconfig                            switch to specified defconfigavailable defconfigs:rockchip_rk3502_robot_defconfigrockchip_rk3506_b_evb1_defconfigrockchip_rk3506_g_demo_defconfigrockchip_rk3506_g_evb1_amp_defconfigrockchip_rk3506_g_evb1_defconfigrockchip_rk3506_g_evb1_smp_defconfigrockchip_rk3506_g_mini_defconfigolddefconfig                           resolve any unresolved symbols in .configsavedefconfig                          save current config to defconfigmenuconfig                             interactive curses-based configurator
config                                  modify SDK defconfig
print-parts                             print partitions
list-parts                              alias of print-parts
mod-parts                               interactive partition table modify
edit-parts                              edit raw partitions
new-parts:<offset>:<name>:<size>...     re-create partitions
insert-part:<idx>:<name>[:<size>]       insert partition
del-part:(<idx>|<name>)                 delete partition
move-part:(<idx>|<name>):<idx>          move partition
rename-part:(<idx>|<name>):<name>       rename partition
resize-part:(<idx>|<name>):<size>       resize partition
misc                                    pack misc image
kernel-6.1[:dry-run]                    build kernel 6.1
kernel[:dry-run]                        build kernel
recovery-kernel[:dry-run]               build kernel for recovery
kernel-modules[:<dst dir>:dry-run]      build kernel modules
modules[:<dst dir>:dry-run]             alias of kernel-modules
linux-headers[:<arch>:dry-run]          build linux-headers
kernel-config[:dry-run]                 modify kernel defconfig
kconfig[:dry-run]                       alias of kernel-config
kernel-make[:<arg1>:<arg2>]             run kernel make
kmake[:<arg1>:<arg2>]                   alias of kernel-make
wifibt[:<dst dir>[:<chip>]]             build Wifi/BT
amp                                     build and pack amp system
buildroot-config[:<config>]             modify buildroot defconfig
bconfig[:<config>]                      alias of buildroot-config
buildroot-make[:<arg1>:<arg2>]          run buildroot make
bmake[:<arg1>:<arg2>]                   alias of buildroot-make
rootfs[:<rootfs type>]                  build default rootfs
buildroot                               build buildroot rootfs
yocto                                   build yocto rootfs
debian                                  build debian rootfs
recovery                                build recovery
security-createkeys                     create keys for security
security-misc                           build misc with system encryption key
security-ramboot                        build security ramboot
security-system                         build security system
loader[:dry-run]                        build loader (u-boot)
uboot[:dry-run]                         build u-boot
u-boot[:dry-run]                        alias of uboot
uefi[:dry-run]                          build uefi
extra-parts                             pack extra partition images
firmware                                pack and check firmwares
edit-package-file                       edit package-file
edit-ota-package-file                   edit package-file for OTA
updateimg                               build update image
ota-updateimg                           build update image for OTA
all                                     build images
release[:<subdir>[:<name>]]             release images and build info
all-release[:<subdir>[:<name>]]         build and release images
shell                                   setup a shell for developing
buildroot-shell                         setup a shell for buildroot developing
bshell                                  alias of buildroot-shell
cleanall                                cleanup all
clean-amp                               cleanup amp
clean-config                            cleanup config
clean-extra-parts                       cleanup extra-parts
clean-firmware                          cleanup firmware
clean-kernel                            cleanup kernel
clean-loader                            cleanup loader
clean-misc                              cleanup misc
clean-recovery                          cleanup recovery
clean-rootfs                            cleanup rootfs
clean-security                          cleanup security
clean-updateimg                         cleanup updateimg
post-rootfs <rootfs dir>                trigger post-rootfs hook scripts
help                                    display this

单独编译uboot、Kernel、Buildroot

单独编译uboot。使用./build.sh uboot

单独编译Kernel。使用./build.sh kernel

单独编译buildroot。使用./build.sh rootfs

SDK编译步骤

经过上述描述,我们知道了,SDK编译的编译命令。下面我们使用命令来编译SDK。

1- 选择板级配置

第一步,选择板级配置。使用make +板级配置或使用./build.sh lunch 来选择板级配置文件。我们上面SDK编译命令章节知道了开发板的板级配置是rockchip_rk3506_g_mini_defconfig下面展示两种命令如何配置,只需要配置一种即可

使用make rockchip_rk3506_g_mini_defconfig命令

itrunk@ubuntu22:/work/prj/rk3506/rk3506_mini/rk3506_linux6.1_sdk$ make rockchip_rk3506_g_mini_defconfig
mkdir -p /work/prj/rk3506/rk3506_mini/rk3506_linux6.1_sdk/output/kconf/lxdialog
make CC="gcc" HOSTCC="gcc" \obj=/work/prj/rk3506/rk3506_mini/rk3506_linux6.1_sdk/output/kconf -C /work/prj/rk3506/rk3506_mini/rk3506_linux6.1_sdk/device/rockchip/common/kconfig -f Makefile.br conf
make[1]: Entering directory '/work/prj/rk3506/rk3506_mini/rk3506_linux6.1_sdk/device/rockchip/common/kconfig'
gcc -D_DEFAULT_SOURCE -D_XOPEN_SOURCE=600 -DCURSES_LOC="<ncurses.h>" -DNCURSES_WIDECHAR=1 -DLOCALE  -I/work/prj/rk3506/rk3506_mini/rk3506_linux6.1_sdk/output/kconf -DCONFIG_=\"\"  -MM *.c > /work/prj/rk3506/rk3506_mini/rk3506_linux6.1_sdk/output/kconf/.depend 2>/dev/null || :
gcc -D_DEFAULT_SOURCE -D_XOPEN_SOURCE=600 -DCURSES_LOC="<ncurses.h>" -DNCURSES_WIDECHAR=1 -DLOCALE  -I/work/prj/rk3506/rk3506_mini/rk3506_linux6.1_sdk/output/kconf -DCONFIG_=\"\"   -c conf.c -o /work/prj/rk3506/rk3506_mini/rk3506_linux6.1_sdk/output/kconf/conf.o
gcc -D_DEFAULT_SOURCE -D_XOPEN_SOURCE=600 -DCURSES_LOC="<ncurses.h>" -DNCURSES_WIDECHAR=1 -DLOCALE  -I/work/prj/rk3506/rk3506_mini/rk3506_linux6.1_sdk/output/kconf -DCONFIG_=\"\"  -I. -c /work/prj/rk3506/rk3506_mini/rk3506_linux6.1_sdk/output/kconf/zconf.tab.c -o /work/prj/rk3506/rk3506_mini/rk3506_linux6.1_sdk/output/kconf/zconf.tab.o
gcc -D_DEFAULT_SOURCE -D_XOPEN_SOURCE=600 -DCURSES_LOC="<ncurses.h>" -DNCURSES_WIDECHAR=1 -DLOCALE  -I/work/prj/rk3506/rk3506_mini/rk3506_linux6.1_sdk/output/kconf -DCONFIG_=\"\"   /work/prj/rk3506/rk3506_mini/rk3506_linux6.1_sdk/output/kconf/conf.o /work/prj/rk3506/rk3506_mini/rk3506_linux6.1_sdk/output/kconf/zconf.tab.o  -o /work/prj/rk3506/rk3506_mini/rk3506_linux6.1_sdk/output/kconf/conf
rm /work/prj/rk3506/rk3506_mini/rk3506_linux6.1_sdk/output/kconf/zconf.tab.c
make[1]: Leaving directory '/work/prj/rk3506/rk3506_mini/rk3506_linux6.1_sdk/device/rockchip/common/kconfig'
#
# configuration written to /work/prj/rk3506/rk3506_mini/rk3506_linux6.1_sdk/output/.config
#

使用./build.sh lunch

itrunk@ubuntu22:/work/prj/rk3506/rk3506_mini/rk3506_linux6.1_sdk$ ./build.sh lunch############### Rockchip Linux SDK ###############Manifest: rk3506_linux6.1_release_v1.1.0_20241128.xmlLog colors: message notice warning error fatalLog saved at /work/prj/rk3506/rk3506_mini/rk3506_linux6.1_sdk/output/sessions/2025-07-30_11-00-25
Pick a defconfig:1. rockchip_rk3502_robot_defconfig
2. rockchip_rk3506_b_evb1_defconfig
3. rockchip_rk3506_g_demo_defconfig
4. rockchip_rk3506_g_evb1_amp_defconfig
5. rockchip_rk3506_g_evb1_defconfig
6. rockchip_rk3506_g_evb1_smp_defconfig
7. rockchip_rk3506_g_mini_defconfig
Which would you like? [1]: 7
Switching to defconfig: /work/prj/rk3506/rk3506_mini/rk3506_linux6.1_sdk/device/rockchip/.chip/rockchip_rk3506_g_mini_defconfig
#
# configuration written to /work/prj/rk3506/rk3506_mini/rk3506_linux6.1_sdk/output/.config
#
Using current kernel version(6.1)
2- 配置menuconfig

使用make menuconig即可进入配置页面。如下图,可以根据自己的需求来编译。

键盘上下左右移动,Enter选中

选择完成后,就可以直接save退出,这样更改的配置项就会保存到配置文件中。

默认配置文件会放在output/.config文件中,这是一个临时文件。

3- 开始编译

使用./build.sh cleanall清除之前编译的产物。

可以使用两种方式,不同就是第一种方式编译完成后,需要执行命令打包

1- ./build.sh all编译uboot、kernel、Rootfs、Recovery。 编译完成后使用./build.sh ./mkfirmware.sh打包固件

2- 直接./build.sh,这种方式和上面基本相同,不同的就是这个命令不需要额外执行命令打包,生成的是update.img,编译信息生成到out目录下。

我直接使用./build.sh进行编译。

itrunk@ubuntu22:/work/prj/rk3506/rk3506_mini/rk3506_linux6.1_sdk$ ./build.sh############### Rockchip Linux SDK ###############Manifest: rk3506_linux6.1_release_v1.1.0_20241128.xmlLog colors: message notice warning error fatalLog saved at /work/prj/rk3506/rk3506_mini/rk3506_linux6.1_sdk/output/sessions/2025-07-30_11-17-30
Using last kernel version(6.1)......................................

接下来就是漫长的编译过程,等待ing。

中间报错过一次,由于是docker环境,重新安装一下curl就行了,最好再使用一下魔法上网,ubuntu设置网络代理。

sudo apt install curl
/work/prj/rk3506/rk3506_mini/rk3506_linux6.1_sdk/device/rockchip/common/scripts/check-network.sh: line 7: curl: command not foundYour network is not able to access sources.buildroot.net!
Please retry later (it could be down for a while) or setup a VPN to bypass the GFW.
Unset RK_NETWORK_CHECK in the SDK config to continue...ERROR: Running /work/prj/rk3506/rk3506_mini/rk3506_linux6.1_sdk/device/rockchip/common/scripts/mk-rootfs.sh - build_buildroot failed!
ERROR: exit code 1 from line 16:"$RK_SCRIPTS_DIR/mk-buildroot.sh" $RK_BUILDROOT_CFG "$IMAGE_DIR"
ERROR: call stack:mk-rootfs.sh: build_buildroot(16)mk-rootfs.sh: build_hook(297)mk-rootfs.sh: main(326)
ERROR: Running /work/prj/rk3506/rk3506_mini/rk3506_linux6.1_sdk/device/rockchip/common/build-hooks/99-all.sh - build_all failed!
ERROR: exit code 1 from line 21:"$RK_SCRIPTS_DIR/mk-rootfs.sh"
ERROR: call stack:99-all.sh: build_all(21)99-all.sh: build_hook(136)build-helper: try_func(63)build-helper: try_hook(96)build-helper: source(165)99-all.sh: main(147)
ERROR: Running /work/prj/rk3506/rk3506_mini/rk3506_linux6.1_sdk/device/rockchip/common/build-hooks/99-all.sh - try_func build_hook all failed!
ERROR: exit code 1 from line 67:build_hook
ERROR: call stack:build-helper: try_func(67)build-helper: try_hook(96)build-helper: source(165)99-all.sh: main(147)

编译完成后,相关的固件在SDK/rockdev目录下。

itrunk@ubuntu22:/work/prj/rk3506/rk3506_mini/rk3506_linux6.1_sdk$ ls
app  buildroot  build.sh  common  device  docs  external  hal  kernel  kernel-6.1  Makefile  output  prebuilts  README.md  rkbin  rkflash.sh  rockdev  rtos  tools  u-boot  yocto
itrunk@ubuntu22:/work/prj/rk3506/rk3506_mini/rk3506_linux6.1_sdk$ cd rockdev
itrunk@ubuntu22:/work/prj/rk3506/rk3506_mini/rk3506_linux6.1_sdk/rockdev$ ls
boot.img  MiniLoaderAll.bin  misc.img  oem.img  parameter.txt  recovery.img  rootfs.img  uboot.img  update.img  userdata.img

对应的文件描述:

  • boot.img Kernel镜像
  • MiniLoaderAll.bin 引导文件
  • misc.img 来自rockchip的自定义文件
  • oem.img oem分区的固件镜像
  • parameter.txt 分区表
  • recovery.img recovery镜像
  • rootfs.img 文件系统镜像
  • uboot.img uboot镜像
  • update.img 总镜像,完整的系统镜像
  • userdata.img 用户空间的镜像

五、SDK固件升级

可以参考瑞芯微,开发工具使用说明文档进行操作。

瑞芯微芯片烧写模式

rockchip芯片,有几种运行模式,Maskrom、Loader、Recovery、Normal Boot模式。如下:

  • Maskrom,Flash 在未烧录固件时,芯片会引导进入 Maskrom 模式,可以进行初次固件的烧写。开发调试过程中若遇到 Loader 无法正常启动的情况,也可进入 Maskrom模式烧写固件。
  • Loader,Loader 模式下,可以进行固件的烧写、升级。可以通过工具单独烧写某一个分区镜像文件,方便调试。
  • Recovery,系统引导recovery启动,主要是升级、恢复出厂等操作。
  • Normal Boot,系统引导rootfs启动,加载rootfs,大多数的开发都是在这个模式。

使用RKDevTool工具烧写固件

我们首先需要下载更新固件所需的软件。根据开发板提供的资料,下载开发工具。具体驱动安装,软件解压过程就不说了,直接上步骤。

使用瑞芯微开发工具RKDevTool进行烧写固件。这个工具使用前需要安装ADB驱动等。

进入烧录模式

我们烧写固件时,开发板需要进入MASKROM模式或者LOADER模式,加载相应的路径,点击执行完成烧写。

如何进入烧写模式。官方文档记录了几种方式:

  1. 未烧录过固件,上电,进入 Maskrom 模式。
  2. 烧录过固件,按住 recovery 按键上电或复位,系统将进入 Loader 固件烧写模式。
  3. 烧录过固件,按住 Maskrom 按键上电或复位,系统将进入 MaskRom 固件烧写模式。
  4. 烧录过固件,上电或复位后开发板正常进入系统后,瑞芯微开发工具上显示“发现一个 ADB设备”或“发现一个 MSC 设备”,然后点击工具上的按钮“切换”,进入 Loader 模式。
  5. 烧录过固件,可在串口或 ADB 命令行模式下,输入 reboot loader 命令,进入 Loader 模式。
导入烧录配置

引导板子进入LOADER模式,这个开发板,长按LOADER,复位重启。系统进入LOADER模式,可以看到第一次解压后进入,下方的配置很奇怪,我们需要导入配置。

第一步,右键清空所有项。

导入烧录配置。烧录配置可以在tools/windows/RKDevTool/RKDevTool_Release中找到。我们选择rk3506-config.cfg配置导入

导入成功后,如下图。

选择自己固件所在的位置,按下执行开始烧录。

烧录成功如下图。

六、读取开发板信息

1- 查看文件系统大小

文件系统好像是只读的,/oem 可读写。

root@rk3506-buildroot:/# df -h
Filesystem                Size      Used Available Use% Mounted on
/dev/root                38.9M     38.9M         0 100% /
devtmpfs                 52.2M         0     52.2M   0% /dev
tmpfs                    52.3M    124.0K     52.2M   0% /var/log
tmpfs                    52.3M      8.0K     52.3M   0% /tmp
tmpfs                    52.3M    164.0K     52.1M   0% /run
tmpfs                    52.3M         0     52.3M   0% /dev/shm
/dev/ubi6_0               9.9M    160.0K      9.7M   2% /oem
/dev/ubi7_0               7.9M    384.0K      7.6M   5% /userdata

2- 查看内存占用情况

这个RK3506-G2 内存还是太小了,128M,不过价格摆在那,性价比还是很高的。

root@rk3506-buildroot:/userdata# free -htotal        used        free      shared  buff/cache   available
Mem:         104.6M       62.9M        9.0M      300.0K       32.6M       36.2M
Swap:             0           0           0

3- 查看CPU信息

这款芯片是三核A7的

root@rk3506-buildroot:/proc# cat cpuinfo
processor       : 0
model name      : ARMv7 Processor rev 5 (v7l)
BogoMIPS        : 40.00
Features        : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae
CPU implementer : 0x41
CPU architecture: 7
CPU variant     : 0x0
CPU part        : 0xc07
CPU revision    : 5processor       : 1
model name      : ARMv7 Processor rev 5 (v7l)
BogoMIPS        : 40.00
Features        : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae
CPU implementer : 0x41
CPU architecture: 7
CPU variant     : 0x0
CPU part        : 0xc07
CPU revision    : 5processor       : 2
model name      : ARMv7 Processor rev 5 (v7l)
BogoMIPS        : 40.00
Features        : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae
CPU implementer : 0x41
CPU architecture: 7
CPU variant     : 0x0
CPU part        : 0xc07
CPU revision    : 5Hardware        : Generic DT based system
Revision        : 0000
Serial          : b610aaef9f86385d

4- 查看内核版本

内核版本6.1,文件系统使用buildroot文件系统

root@rk3506-buildroot:/# uname -a
Linux rk3506-buildroot 6.1.99 #1 SMP PREEMPT Wed Jul 30 11:28:29 CST 2025 armv7l GNU/Linux

吐槽

CSDN的markdown编辑器还是不太行,导入md文件,还是会出现乱码等现象。

http://www.dtcms.com/a/306835.html

相关文章:

  • 【Python】 切割图集的小脚本
  • 【WRF-Chem第五期】自定义字段配置 iofields_filename 详述
  • 红绿多空策略
  • 全包圆230㎡整装案例亮相,空间美学演绎东方韵味
  • Netty是如何解决epoll CPU占用100%问题的
  • 借助 Wisdom SSH AI 助手构建 Linux 容器化开发流水线
  • 构建智能体(Agent)时如何有效管理其上下文
  • 2022 年 NOI 最后一题题解
  • 【Spark征服之路-4.3-Kafka】
  • CMS框架GetShell
  • 2020 年 NOI 最后一题题解
  • Go语言核心知识点补充
  • 【Unity】在构建好的项目里创建自定义文件夹
  • 2.3.1-2.3.5获取资源-建设团队- 管理团队-实施采购-指导
  • solidity 中 Eth 和 Usd 到底如何转换
  • 技术人生——第17集:京城首发,AI叩问
  • C++中sizeof运算符全面详解和代码示例
  • 15.网络编程:让程序学会上网
  • 【读书笔记】设计数据密集型应用 DDIA 第二章
  • RPA软件推荐:提升企业自动化效率
  • 无线土壤水分传感器的结构组成及工作特点
  • Vue 3 入门教程 3- 响应式系统
  • Qt知识点3『自定义属性的样式表失败问题』
  • 飞算JavaAI自动设计表结构:重塑数据库开发新范式
  • 土木工程相关优化的C++实践
  • 《Spring Security源码深度剖析:Filter链与权限控制模型》
  • GitHub 上 Star 数量前 8 的开源 MCP 项目
  • <RT1176系列13>LWIP概念介绍
  • CSS 常用属性汇总
  • Thales靶场通关攻略