服务于中小企业建网站,提供网站设计方案公司,响应式网站cms,建立什么本地网站赚钱开发板#xff1a;ROC-RK3588S-PC
官方链接#xff1a;Welcome to ROC-RK3588S-PC Manual — Firefly Wiki (t-firefly.com)
串口调试配置
一、产品介绍 — Firefly Wiki (t-firefly.com)#xff0c;可以按照官方链接的说明在个人PC上使用串口。这个串口会输出rk3588的日…开发板ROC-RK3588S-PC
官方链接Welcome to ROC-RK3588S-PC Manual — Firefly Wiki (t-firefly.com)
串口调试配置
一、产品介绍 — Firefly Wiki (t-firefly.com)可以按照官方链接的说明在个人PC上使用串口。这个串口会输出rk3588的日志信息同时也可以允许用户输入shell命令进行调试。但是还不能互相传文件。 我们使用串口可以查询到包括内核名称、节点名称、内核发行版本、内核版本、机器类型、处理器类型、硬件平台和操作系统。aarch64是ARMv8架构下的64位指令集架构的官方名称有时也被人们称为ARM64。
注作者在使用过程中碰到过串口不能输入shell命令的情况只能查看日志信息。最终发现是USB转串口模块的问题更换一个就好了。作者使用的是CH340型号的不是开发板随带的。
ADB调式配置
除了上述使用串口调试外我们还可以使用ADB它是Android的命令行调试工具但是我们编译的是buildroot系统其实也可以使用ADB这一点后面再解释。
连接OTG端口也就是Type-C的USB口这一个端口在烧录固件的时候也会用到
安装RK-USB驱动。注意如果正确进入loader模式但一直找不到设备可以尝试更换USB线。下载安装ADB工具。
打开命令行窗口进入ADB根目录。执行adb shell命令即可输入shell命令了。 交叉编译环境
通常情况下我们会把编译环境搭建在Linux服务器或者虚拟机上在那个上面进行编译然后把编译的文件用在RK3588平台上。显然Linux服务器或者虚拟机肯定不是和RK3399平台使用相同的架构。例如我们使用的服务器为 服务器上是x86架构RK3588是ARM64架构。这个时候就需要交叉编译其实就是在x86机器上编译的东西放在arm64机器上用。所以后需的代码工作都是在x86服务器上展开的。关于怎么登录访问服务器这里就不展开了。。。
服务器环境啥的都提前配置好了这里暂时不介绍。
获取SDK
1. 编译 Linux 固件 — Firefly Wiki (t-firefly.com)
我们的计划是编译buildroot系统那么需要厂商的Linuxsdk压缩包文件为rk3588_firefly-1.4.0b.tar.gz我们使用的是方式一首先获取的是SDK repo压缩包将该包解压后再使用命令 .repo/repo/repo sync -l导出源代码。 解压之后其实就一个 .repo的隐藏文件夹。然后执行导出源代码命令。 最后还需要同步代码 以后我们就可以使用第二个命令进行代码更新了。 Linux SDK 配置介绍
配置文件介绍
在 device/rockchip/rk3588/ 目录下有不同板型的配置文件(xxxx.mk)用于管理 SDK 每个环节的编译配置可以查看一下 显然根据名称我们要使用的是roc-rk3588s-pc-buildroot.mk因为我们要编译buildroot系统。
#**roc-rk3588s-pc-buildroot.mk**文件内容如下CMDrealpath $BASH_SOURCE
CUR_DIRdirname $CMDsource $CUR_DIR/itx-3588j-buildroot.mk# Kernel dts
export RK_KERNEL_DTSroc-rk3588s-pc-mipi101-M101014-BE45-A1# PRODUCT MODEL
export RK_PRODUCT_MODELROC_RK3588S_PC前3行代码使用 source 命令来执行位于当前脚本同一目录下的 itx-3588j-buildroot.mk 文件。该文件内容如下
CMDrealpath $BASH_SOURCE
CUR_DIRdirname $CMDsource $CUR_DIR/BoardConfig.mk# Kernel defconfig fragment
export RK_KERNEL_DEFCONFIG_FRAGMENT$RK_KERNEL_DEFCONFIG_FRAGMENT firefly-linux.config# Uboot_defconfig_fragment
export RK_UBOOT_DEFCONFIG_FRAGMENTfirefly-linux.config# parameter for GPT table
export RK_PARAMETERparameter-ubuntu-fit.txt# Kernel dts
export RK_KERNEL_DTSrk3588-firefly-itx-3588j-mipi101-M101014-BE45-A1# Set userdata partition type
export RK_USERDATA_FS_TYPEext4# Set extboot
export FF_EXTBOOTtrueexport FF_EXTBOOT_SIZE256M# PRODUCT MODEL
export RK_PRODUCT_MODELITX_3588J# recovery ramdisk
export RK_RECOVERY_RAMDISKrk3588-recovery-arm64.cpio.gz# Recovery config
export RK_CFG_RECOVERY# Buildroot config
export RK_CFG_BUILDROOTfirefly_rk3588export RK_EXTRA_PARTITIONS# packagefile for make update image
export RK_PACKAGE_FILErk3588-ubuntu-package-file前3行代码使用 source 命令来执行位于当前脚本同一目录下的 BoardConfig.mk 文件该文件内容如下
#!/bin/bash# Target arch
export RK_ARCHarm64
# Uboot defconfig
export RK_UBOOT_DEFCONFIGrk3588
# Uboot image format type: fit(flattened image tree)
export RK_UBOOT_FORMAT_TYPEfit
# Kernel defconfig
export RK_KERNEL_DEFCONFIGrockchip_linux_defconfig
# Kernel defconfig fragment
export RK_KERNEL_DEFCONFIG_FRAGMENTrk3588_linux.config
# Kernel dts
export RK_KERNEL_DTSrk3588-evb3-lp5-v10-linux
# boot image type
export RK_BOOT_IMGboot.img
# kernel image path
export RK_KERNEL_IMGkernel/arch/arm64/boot/Image
# kernel image format type: fit(flattened image tree)
export RK_KERNEL_FIT_ITSboot.its
# parameter for GPT table
export RK_PARAMETERparameter.txt
# Buildroot config
export RK_CFG_BUILDROOTrockchip_rk3588
# Recovery config
export RK_CFG_RECOVERYrockchip_rk3588_recovery
# Recovery image format type: fit(flattened image tree)
export RK_RECOVERY_FIT_ITSboot4recovery.its
# ramboot config
export RK_CFG_RAMBOOT
# Pcba config
export RK_CFG_PCBArockchip_rk3588_pcba
# Build jobs
export RK_JOBS12
# target chip
export RK_TARGET_PRODUCTrk3588
# Set rootfs type, including ext2 ext4 squashfs
export RK_ROOTFS_TYPEext4
# debian version (debian10: buster, debian11: bullseye)
export RK_DEBIAN_VERSIONbullseye
# yocto machine
export RK_YOCTO_MACHINErockchip-rk3588-evb
# rootfs image path
export RK_ROOTFS_IMGrockdev/rootfs.${RK_ROOTFS_TYPE}
# Set ramboot image type
export RK_RAMBOOT_TYPE
# dev:mount point:fs type:mount flags:source dir:image size(M|K|auto):[options]
export RK_EXTRA_PARTITIONS \oem:/oem:ext2:defaults:oem_normal:auto:resizeuserdata:/userdata:ext2:defaults:userdata_normal:auto:resize# OEM build on buildroot
#export RK_OEM_BUILDIN_BUILDROOTYES
#misc image
export RK_MISCwipe_all-misc.img
#choose enable distro module
export RK_DISTRO_MODULE
# Define pre-build script for this board
export RK_BOARD_PRE_BUILD_SCRIPTapp-build.sh
# Define package-file
export RK_PACKAGE_FILErk3588-package-file
# Define WiFi BT chip
# Compatible with Realtek and AP6XXX WiFi : RK_WIFIBT_CHIPALL_AP
# Compatible with Realtek and CYWXXX WiFi : RK_WIFIBT_CHIPALL_CY
# Single WiFi configuration: AP6256 or CYW43455: RK_WIFIBT_CHIPAP6256
export RK_WIFIBT_CHIPALL_AP
# Define BT ttySX
export RK_WIFIBT_TTYttyS8
配置文件指定了DTS文件和分区表文件等其他文件。上述配置文件中是
RK_KERNEL_DTS roc-rk3588s-pc-mipi101-M101014-BE45-A1
RK_PARAMETER parameter-ubuntu-fit.txt
分区说明
parameter.txt 文件中包含了固件的分区信息以 parameter-ubuntu-fit.txt 为例
路径device\rockchip\rk3588\parameter-ubuntu-fit.txt
FIRMWARE_VER: 1.0
MACHINE_MODEL: RK3588
MACHINE_ID: 007
MANUFACTURER: RK3588
MAGIC: 0x5041524B
ATAG: 0x00200800
MACHINE: 0xffffffff
CHECK_MASK: 0x80
PWR_HLD: 0,0,A,0,1
TYPE: GPT
CMDLINE: mtdpartsrk29xxnand:0x000040000x00004000(uboot),0x000020000x00008000(misc),0x000800000x0000a000(boot:bootable),0x000400000x0008a000(recovery),0x000100000x000ca000(backup),0x00c000000x000da000(rootfs),-0x00cda000(userdata:grow)
uuid:rootfs614e0000-0000-4b53-8000-1d28000054a9
CMDLINE 属性是我们关注的地方以 misc 为例 0x000020000x00008000(uboot) 中 0x00008000 为uboot 分区的起始位置0x00002000 为分区的大小以此类推。
package-file 文件用于打包固件时确定需要的分区镜像和镜像路径同时它需要与 parameter.txt 文件保持一致。
路径tools/linux/Linux_Pack_Firmware/rockdev/rk3588-package-file
编译Buildroot固件
说一句题外话可以使用如下命令查询SDK版本
zhudkvm1:/expand/zhudk/rk3588_firefly$ readlink -f .repo/manifest.xml
/expand/zhudk/rk3588_firefly/.repo/manifests/rk3588/rk3588_linux_release_20240517_v1.4.0b.xml编译前配置
在 device/rockchip/rk3588/ 目录下有不同板型的配置文件选择配置文件 全自动编译
全自动编译会执行上述编译、打包操作生成 RK 固件。
./build.sh打包固件生成的完整固件会保存到 rockdev/pack/ 目录。
部分编译
编译 u-boot
./build.sh uboot编译 kernel
./build.sh extboot编译 recovery
./build.sh recovery编译 buildroot
./build.sh rootfs更新各部分镜像链接到 rockdev/ 目录
./mkfirmware.sh打包固件生成的完整固件会保存到 rockdev/pack/ 目录。
./build.sh updateimg编译完成后 rockdev/ 目录如下 使用USB线缆升级固件
USB驱动和烧录工具不做解释如果遇到问题可以尝试更换工具版本或者USB线缆。
进入升级模式
通常我们升级固件的模式有两种分别是Loader模式和MaskRom模式。烧写固件前我们需要连接好设备并让板子进入到可升级模式。
MaskRom 模式是设备变砖的最后一条防线。强行进入 MaskRom 涉及硬件操作有一定风险因此仅在设备进入不了 Loader 模式的情况下方可尝试 MaskRom 模式。进入 MaskRom 的原理是人为的把 EMMC 的数据脚与地线短接系统会认为 EMMC 数据出错从而清除 EMMC 数据。可以按maskrom 按键然后进行上电此时设备就会进入 MaskRom 模式。
进入Loader模式也有几种方式
在串口调试终端或adb shell给板子运行以下命令reboot loader。保持板子上电先按住RECOVERY键并保持再按住RESET按键大约两秒钟其实可以看日志后松开RECOVERY键。
烧写统一固件
统一固件是由分区表、bootloader、uboot、kernel、system等所有文件打包合并成的单个文件。Firefly正式发布的固件都是采用统一固件格式升级统一固件将会更新主板上所有分区的数据和分区表并且擦除主板上所有数据。 烧写分区镜像
即各个功能独立的文件如分区表、bootloader、kernel等在开发阶段生成。独立分区镜像可以只更新指定的分区而保持其它分区数据不被破坏在开发过程中会很方便调试。
如果我们做驱动开发其实可以仅烧录boot.img。