RK3568麒麟系统板卡开发全解析:从硬件选型到AI部署实战

RK3568麒麟系统板卡开发全解析:从硬件选型到AI部署实战 1. 项目概述从通用到专用的RK3568板卡探索最近几年嵌入式开发领域一个非常明显的趋势是越来越多的开发者不再满足于使用通用的、面向消费电子的开发板转而寻求那些针对特定操作系统进行深度适配和优化的“系统板卡”。我手头这块“RK3568麒麟系统板卡”就是一个典型的例子。它不像市面上常见的、主打Android或Linux通用生态的RK3568开发板而是将核心目标锁定在了“麒麟”这个特定的操作系统上。这背后反映的其实是工业控制、边缘计算、智能终端等场景对系统稳定性、启动速度、外设驱动完整度以及长期维护支持的强烈需求。简单来说这块板卡就是围绕瑞芯微RK3568这颗高性能、低功耗的ARM处理器进行硬件设计、接口布局、电源管理乃至散热方案的全面定制以确保其能够完美地、高性能地运行麒麟操作系统。对于从事相关行业产品开发的工程师或者希望基于国产化软硬件平台进行创新的团队而言这样一块板卡的价值远大于一块“能跑起来”的通用开发板。它能帮你跳过最痛苦的硬件适配和基础驱动调试阶段直接进入上层应用开发和系统集成的核心环节极大地缩短产品从原型到量产的周期。2. 核心硬件架构与选型解析2.1 RK3568 SoC性能与能效的平衡点选择RK3568作为核心是这块板卡所有特性的基石。瑞芯微的RK3568是一颗采用四核Cortex-A55架构的处理器主频最高可达2.0GHz。A55核心在ARM的大小核架构中属于“小核”序列但其性能对于绝大多数嵌入式应用场景来说已经绰绰有余更重要的是它在能效比上表现极为出色。与更高端的A76/A78大核相比A55在相同制程下功耗更低发热量更小。这意味着在设计板卡时对散热系统的要求可以放宽可以采用更小巧的无风扇被动散热方案这对于追求设备小型化、静音化和高可靠性的工业场景至关重要。同时RK3568集成了ARM Mali-G52 2EE GPU支持OpenGL ES 3.2/2.0/1.1 Vulkan 1.1等图形API为运行带有图形界面的麒麟系统提供了流畅的保障。除了CPU和GPURK3568内部还集成了丰富的接口控制器这也是它适合作为系统板卡主控的原因NPU集成0.8TOPS算力的独立NPU神经网络处理单元。这是实现端侧AI功能的关键比如人脸识别、物体检测、语音唤醒等都可以通过NPU加速大幅降低CPU负载。视频编解码支持多路1080p视频的编解码这对于视频监控、视频会议终端等应用是刚需。显示接口支持双屏异显拥有HDMI、eDP、MIPI-DSI等多种输出适配不同的显示设备。外设接口内置多个PCIe、SATA、USB、千兆以太网等高速接口控制器为板卡扩展能力奠定了硬件基础。注意虽然RK3568的NPU算力标注为0.8TOPS但在实际模型部署时有效算力会受到模型优化程度、内存带宽、驱动效率等多重因素影响。在选型时务必针对你的目标AI模型进行实际的板端性能测试而不是仅仅看纸面参数。2.2 “麒麟系统板卡”的硬件设计考量既然定位是“麒麟系统板卡”其硬件设计就必须超越“功能可用”的层面追求“系统最优”。这主要体现在以下几个方面电源树设计麒麟操作系统对系统的电源状态管理如休眠、唤醒有特定的要求。板卡的电源管理芯片PMIC选型和电源轨设计需要严格按照RK3568的参考设计并充分考虑麒麟系统在各种功耗状态下的时序要求。一个设计不当的电源可能会导致系统无法正常休眠、唤醒失败或者在动态调频时出现不稳定。内存与存储配置为了保障麒麟系统流畅运行和多任务处理能力这块板卡通常会配备至少2GB常见为4GB或8GB的LPDDR4/LPDDR4X内存。存储方面eMMC通常是32GB/64GB/128GB是比SD卡更可靠的选择它拥有更高的读写速度和稳定性更适合作为系统盘。许多板卡还会预留M.2或SATA接口用于扩展大容量存储。外设接口的完整性与稳定性通用开发板可能会为了成本阉割某些接口。而系统板卡则需要保证麒麟系统所需的所有外设驱动都能有对应的、稳定的硬件接口。例如双千兆网口用于网关设备、多路USB其中至少一路为USB3.0用于高速数据传输、标准的音频输入输出接口、以及用于连接触摸屏的I2C或USB接口等都必须齐全且layout设计符合信号完整性要求。工业级可靠性设计包括但不限于更宽的工作温度范围-20℃~70℃甚至更宽、所有接口的ESD防护电路、电源输入端的过压/反接保护、看门狗电路等。这些设计增加了成本但确保了板卡在恶劣环境下也能稳定工作。2.3 核心外围电路与扩展能力除了SoC本身板卡上的其他芯片和电路也决定了其能力边界。以太网PHY通常采用Realtek RTL8211F等成熟方案提供稳定的10/100/1000M自适应网络接入。有些面向网关应用的板卡会配备两颗PHY实现双网口。Wi-Fi/蓝牙模块通常采用板载邮票孔模块的方式如AP6212、RTL8822CS等支持2.4G/5G双频Wi-Fi和蓝牙5.0。模块化设计便于认证和更换。音频编解码器简单的应用可能直接用SoC内部的音频接口但为了获得更好的录音和播放质量会外接一颗如ES8316这样的低功耗音频Codec。扩展接口这是评估一块系统板卡潜力的关键。常见的包括40Pin GPIO排针兼容树莓派的部分引脚定义方便连接各种传感器、执行器如温湿度、超声波、继电器等。M.2接口支持PCIe或USB协议可用于扩展4G/5G模块、NVMe SSD硬盘或AI加速卡。Mini PCIe接口同样用于扩展通信模块。SIM卡槽为蜂窝网络模块准备。摄像头接口MIPI-CSI接口用于连接摄像头模组开发视觉应用。3. 麒麟操作系统适配与启动流程深度剖析3.1 麒麟系统镜像的构成与定制拿到一块空白的板卡第一步就是烧录系统。这里的系统镜像并非一个简单的“文件”而是一个包含多个独立部分、有严格启动顺序的集合。以适配RK3568的麒麟系统为例其镜像通常包含以下组件Loader引导加载程序通常是RK官方提供的MiniLoaderAll.bin或idbloader.img。它是芯片上电后运行的第一段代码初始化最基本的内存和时钟然后加载下一阶段的U-Boot。U-Boot通用引导程序这是一个开源的、功能强大的引导程序。在RK3568的板卡上U-Boot需要完成初始化DDR内存、串口、eMMC/SD卡、USB等关键外设。从存储设备中加载内核镜像Image和设备树文件dtb。将内核镜像解压到内存中并传递启动参数如根文件系统位置、控制台终端等。对于麒麟系统U-Boot的配置尤为关键需要正确设置显示相关的参数如fb地址、分辨率以便内核启动后能正确初始化显示框架。Kernel内核即Linux内核。麒麟系统会基于某个版本的LTS内核如5.10并入RK3568的官方内核补丁以及麒麟自身对系统调度、安全、文件系统等方面的优化。设备树.dtb文件是内核认识这块“板卡”的蓝图它精确描述了板卡上所有硬件的连接方式哪个设备挂在哪个I2C总线上中断号是多少时钟源是什么等。板卡厂商的核心工作之一就是提供一份准确、完整的设备树文件。Rootfs根文件系统这是麒麟系统的“身体”包含了所有的系统命令、库文件、配置文件、桌面环境和你的应用程序。它可以是只读的squashfs格式系统分区也可以是可读写的ext4格式数据分区。麒麟的根文件系统集成了自己的桌面环境、应用商店、系统设置等特色组件。定制自己的系统镜像主要就是修改后三者编译带有自己所需驱动和配置的内核、修改设备树以启用或禁用某些硬件、在根文件系统中预装自己的应用或修改系统配置。3.2 从零开始的系统烧录与启动验证对于一块全新的板卡烧录系统通常通过USB OTG接口进行。RK3568芯片内置了USB烧录模式MaskROM模式。实操步骤准备工具安装RK官方开发工具RKDevToolWindows或使用开源的upgrade_toolLinux。准备一条USB-A转USB-C的数据线连接电脑和板卡的OTG口通常有标记。准备完整的系统镜像包包含loader, uboot, kernel, rootfs等所有img文件。进入烧录模式板卡断电。找到板卡上的“MaskROM”按键或测试点有时需要短接两个焊盘。按住这个按键或短接测试点不放然后给板卡上电。大约2秒后在RKDevTool中会识别到一个“发现一个MASKROM设备”此时可以松开按键。这表明芯片已经进入最底层的烧录状态。加载镜像与烧录在工具中加载配置文件.cfg文件这个文件定义了哪个img文件烧录到存储设备的哪个分区。确认无误后点击“执行”。工具会依次擦除旧数据、烧写loader、uboot、内核、根文件系统等。烧录成功后给板卡重新上电正常上电无需再按MaskROM键。此时你应该能在串口调试终端如MobaXterm, minicom中看到U-Boot的启动日志紧接着是内核解压和启动的信息最后进入麒麟系统的登录界面。实操心得烧录失败最常见的原因是USB线或USB口接触不良。务必使用质量好的数据线并尝试更换电脑的USB端口。其次确保镜像文件与板卡硬件版本匹配特别是设备树文件。如果板卡更换了关键元器件如Wi-Fi模块型号就必须使用对应的设备树否则相关硬件无法工作。3.3 设备树DTS的关键作用与修改示例设备树是连接硬件和操作系统的桥梁。对于系统板卡开发者理解和修改设备树是必备技能。假设我们要在板卡上启用一个挂在I2C1总线上的电容触摸屏假设芯片为ft5x06。首先找到内核源码中对应板卡的设备树源文件例如arch/arm64/boot/dts/rockchip/rk3568-myboard.dts。我们需要做两处修改启用I2C1控制器确保I2C1控制器的节点是“okay”状态。i2c1 { status okay; // 确保这里是 okay不是 disabled pinctrl-names default; pinctrl-0 i2c1m0_xfer; // 使用正确的引脚复用组 clock-frequency 400000; // I2C时钟频率400kHz };在I2C1节点下添加触摸屏设备子节点i2c1 { status okay; clock-frequency 400000; touchscreen38 { // 假设设备I2C地址是0x38 compatible edt,edt-ft5x06; // 内核通过这个字符串匹配驱动 reg 0x38; interrupt-parent gpio0; // 中断引脚所在的GPIO组 interrupts RK_PA5 IRQ_TYPE_EDGE_FALLING; // 使用GPIO0_A5引脚下降沿触发 reset-gpios gpio0 RK_PB0 GPIO_ACTIVE_LOW; // 复位引脚低电平有效 touchscreen-size-x 800; touchscreen-size-y 480; status okay; }; };修改后需要重新编译设备树文件make dtbs并将生成的.dtb文件更新到板卡上。系统启动后内核会自动匹配compatible属性加载对应的驱动触摸屏就能正常工作了。4. 系统级开发环境搭建与核心配置4.1 交叉编译工具链的选择与配置由于RK3568是ARM64架构而我们通常在x86_64的PC上进行开发因此必须使用交叉编译工具链。推荐使用Linaro或Arm官方发布的aarch64工具链。安装与配置示例在Ubuntu开发机上# 1. 下载工具链例如gcc-linaro-11.3.1 wget https://releases.linaro.org/components/toolchain/binaries/latest-11/aarch64-linux-gnu/gcc-linaro-11.3.1-2022.02-x86_64_aarch64-linux-gnu.tar.xz # 2. 解压到指定目录 tar -xf gcc-linaro-11.3.1-2022.02-x86_64_aarch64-linux-gnu.tar.xz -C /opt/ # 3. 将工具链路径加入系统环境变量 echo export PATH/opt/gcc-linaro-11.3.1-2022.02-x86_64_aarch64-linux-gnu/bin:$PATH ~/.bashrc source ~/.bashrc # 4. 验证安装 aarch64-linux-gnu-gcc --version配置好之后在编译内核、U-Boot或自己的应用程序时就需要指定交叉编译器前缀例如make ARCHarm64 CROSS_COMPILEaarch64-linux-gnu-。4.2 内核与U-Boot的编译与调试获取麒麟系统适配的RK3568内核源码通常由板卡供应商或社区提供编译过程是标准流程但有几个关键点配置内核使用make ARCHarm64 menuconfig进入图形化配置界面。这里需要根据板卡的实际硬件确保对应的驱动被编译进内核*或编译为模块M。例如Wi-Fi模块、音频Codec、GPU驱动、NPU驱动等。选择正确的DefconfigRK3568通常使用rockchip_linux_defconfig作为基础配置。板卡供应商可能会提供一个自定义的defconfig文件直接使用它会更方便make ARCHarm64 CROSS_COMPILEaarch64-linux-gnu- rk3568_myboard_defconfig。编译make ARCHarm64 CROSS_COMPILEaarch64-linux-gnu- -j$(nproc)。编译成功后会在arch/arm64/boot/目录下生成Image文件在arch/arm64/boot/dts/rockchip/目录下生成rk3568-myboard.dtb文件。U-Boot编译过程类似通常也有板级配置文件如make ARCHarm64 CROSS_COMPILEaarch64-linux-gnu- rk3568_defconfig然后make ARCHarm64 CROSS_COMPILEaarch64-linux-gnu- -j$(nproc)。生成的关键文件是u-boot.bin和idbloader.img。调试是开发过程中最耗时的部分。串口调试是最基本、最重要的手段。通过串口终端你可以看到从U-Boot到内核启动的所有日志包括错误信息。当系统无法启动时首先查看串口输出停在了哪一步是U-Boot加载内核失败还是内核panic亦或是卡在了文件系统挂载。4.3 根文件系统的定制与打包麒麟系统提供了基础的根文件系统但我们经常需要对其进行定制比如预装软件、修改系统服务、调整网络配置等。常见定制方法直接修改法适用于SD卡/eMMC开发将板卡上完整的根文件系统分区通常是/dev/mmcblk0p3之类的通过读卡器或网络挂载到开发机上。直接像操作普通目录一样增删改文件。完成后卸载并放回板卡启动。这种方法简单直接但不利于版本管理和重复制作。基于构建系统的定制推荐麒麟系统通常会提供基于debootstrap或buildroot/yocto的构建框架。你可以编写一个清单文件package list列出所有需要安装的软件包。修改构建脚本在生成根文件系统镜像的某个阶段例如chroot之后自动执行你的定制脚本如拷贝文件、运行命令、修改配置。最后通过make命令生成一个全新的、包含你所有定制内容的系统镜像如rootfs.ext4或rootfs.img。这种方法可重复、可追溯是产品化开发的必备流程。例如一个简单的定制脚本可能包含#!/bin/bash # 在chroot环境内执行的脚本 # 1. 设置时区 ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime # 2. 安装自己开发的应用程序 dpkg -i /tmp/myapp.deb # 3. 启用自定义系统服务 systemctl enable myapp-service # 4. 修改网络配置为静态IP示例 cat /etc/netplan/01-netcfg.yaml EOF network: version: 2 ethernets: eth0: addresses: [192.168.1.100/24] gateway4: 192.168.1.1 nameservers: addresses: [8.8.8.8, 114.114.114.114] EOF5. 典型应用场景开发实战5.1 边缘AI计算盒NPU模型部署全流程RK3568的NPU是其在边缘AI场景中的王牌。部署一个AI模型如YOLOv5s目标检测到板卡上通常遵循以下流程模型训练与导出在PC上使用PyTorch/TensorFlow训练好模型并导出为ONNX格式。ONNX是一个通用的模型交换格式。模型转换使用RKNN-Toolkit2工具链将ONNX模型转换为RK3568 NPU专用的RKNN格式。这个过程称为“量化”即将浮点权重转换为低精度的整数如INT8以大幅提升推理速度并降低功耗但可能会带来轻微的精度损失。# 简化示例需在配置好Python环境和RKNN-Toolkit2的PC上运行 from rknn.api import RKNN rknn RKNN() # 加载ONNX模型 ret rknn.load_onnx(modelyolov5s.onnx) # 配置模型输入、输出节点指定量化数据集 ret rknn.build(do_quantizationTrue, dataset./dataset.txt) # 导出RKNN模型 ret rknn.export_rknn(yolov5s.rknn)板端推理程序开发在麒麟系统上使用C或Python的RKNN API加载并运行RKNN模型。你需要编写图像预处理缩放、归一化、推理执行和后处理解析输出层画框的代码。性能优化多线程处理使用生产者-消费者模型一个线程抓取摄像头帧一个线程进行推理一个线程显示结果避免流水线阻塞。零拷贝内存RKNN SDK支持从摄像头或GPU直接获取内存地址进行推理避免在CPU内存间来回拷贝图像数据能显著提升帧率。NPU/CPU协同简单的预处理如RGB转BGR可以在CPU上完成复杂的模型推理交给NPU。5.2 工业网关多协议接入与数据转发将RK3568板卡作为工业网关其强大的网络和算力优势得以发挥。一个典型的网关软件架构如下数据采集层运行多种协议的采集服务。例如Modbus TCP/RTU连接PLC、传感器。OPC UA连接高端工业设备。MQTT连接其他物联网设备。自定义串口协议通过板载的UART接口连接老旧设备。边缘计算层在数据上传到云端前进行本地处理。数据清洗与过滤剔除异常值进行简单的阈值报警。协议转换将Modbus数据点映射为统一的JSON格式。轻量AI推理利用NPU对采集的图像如设备状态指示灯进行识别将结果作为数据点上报。数据上传层通过以太网或4G模块将处理后的数据通过MQTT、HTTP等方式上传到云端服务器或本地SCADA系统。本地服务运行一个轻量级的Web服务器如Nginx Flask提供本地配置界面和实时数据看板。在麒麟系统上你可以使用Docker容器来隔离和管理这些不同的服务例如一个容器运行Node-RED做逻辑编排一个容器运行Mosquitto作为MQTT Broker一个容器运行自定义的数据采集程序。麒麟系统良好的容器支持使得这种微服务架构部署非常方便。5.3 智能交互终端图形界面与多媒体应用基于麒麟系统的桌面环境RK3568板卡可以轻松变身为一台智能终端用于自助售货机、数字标牌、智能家居中控等。图形界面开发可以使用Qt、GTK等传统框架也可以使用基于Web的技术栈如Electron或直接使用Chromium浏览器运行一个全屏的Web应用。麒麟系统对这两种方式都有很好的支持。多媒体播放利用RK3568强大的视频硬解码能力可以流畅播放4K视频。使用GStreamer媒体框架搭配RKMPPRockchip Media Process Platform插件可以充分发挥硬件解码器性能CPU占用率极低。# 一个使用GStreamer硬解码播放视频的管道示例 gst-launch-1.0 filesrc location./demo.mp4 ! qtdemux ! h264parse ! mppvideodec ! waylandsink触摸与交互确保触摸屏驱动正常工作后图形界面框架会自动接收触摸事件。需要关注的是触摸的校准、多点触控的支持以及手势识别的实现。远程管理作为终端设备需要支持远程更新和维护。可以在应用中集成OTA空中下载升级功能或者通过SSH进行远程管理。麒麟系统自带的包管理器和系统更新机制也可以被利用起来。6. 开发调试与性能优化实战指南6.1 系统级调试工具与技巧当应用程序或系统出现问题时掌握以下工具能让你快速定位问题dmesg查看内核环形缓冲区中的消息这是诊断硬件驱动问题如USB设备识别失败、网卡加载异常的第一现场。journalctl查看系统日志systemd journal所有系统服务和应用的标准输出/错误都会记录在这里。使用journalctl -f可以实时跟踪日志journalctl -u service_name可以查看特定服务的日志。strace追踪系统调用。当程序卡住或行为异常时用strace -p pid可以看它卡在了哪个系统调用上例如一直在尝试连接一个不存在的地址。gdb与gdbserver远程调试利器。在板卡上运行gdbserver :1234 ./my_app在开发机上使用交叉编译版本的gdb连接上去target remote 192.168.1.100:1234即可进行源码级调试。perf性能分析工具。可以分析CPU热点函数、缓存命中率、调度延迟等。对于优化应用程序性能至关重要。6.2 性能瓶颈分析与优化策略RK3568板卡性能强大但不当的使用仍会导致卡顿。以下是一些常见的性能排查点CPU占用率过高使用top或htop命令查看哪个进程占用CPU高。如果是你的应用使用perf record和perf report分析代码热点看是否在频繁进行不必要的计算、内存拷贝或系统调用。优化建议使用算法优化如查表法替代实时计算、启用编译器优化-O2、利用多线程并行处理。内存不足使用free -h查看内存使用情况。如果available内存很少且swap使用量高说明物理内存不足。使用smem或ps aux --sort-%mem查看具体进程的内存占用。优化建议检查内存泄漏使用valgrind减少不必要的缓存对于大块内存分配考虑使用内存池。I/O等待高使用iostat或iotop查看磁盘I/O情况。如果应用频繁读写小文件I/O等待会成为瓶颈。优化建议将频繁读写的数据放入内存如Redis或使用异步I/O或优化文件访问模式合并小文件读写。图形/显示卡顿确保使用了正确的显示驱动通常是rockchip的DRM驱动和硬件加速如通过Wayland合成器。使用glmark2-es2-wayland等工具测试OpenGL ES性能是否正常。对于视频播放务必使用GStreamer的mppvideodec硬解插件而非软解。6.3 稳定性与压力测试在产品化之前必须对板卡和系统进行充分的稳定性测试。内存测试使用memtester工具长时间运行如24小时测试内存的稳定性。CPU压力测试使用stress-ng工具对CPU所有核心进行满负荷运算、浮点计算、内存压力等综合测试。stress-ng --cpu 4 --io 2 --vm 1 --vm-bytes 1G --timeout 24h网络压力测试使用iperf3进行长时间的网络吞吐量测试。温度测试在密闭高温箱中运行压力测试使用sensors命令或读取/sys/class/thermal/thermal_zone*/temp文件监控SoC温度确保不会因过热而降频或重启。长时间运行测试让目标应用程序在板卡上不间断运行至少72小时监控其内存使用是否持续增长泄漏以及是否会异常崩溃。7. 常见问题排查与解决方案速查在实际开发中你会遇到各种各样的问题。下面这个表格整理了一些典型问题及其排查思路问题现象可能原因排查步骤与解决方案板卡上电后无任何反应串口无输出1. 电源问题电压/电流不足2. 核心板焊接问题3. eMMC中无有效引导程序1. 用万用表测量电源输入电压是否稳定5V/12V。2. 测量核心板各路电源电压如VDD_CPU, VDD_GPU等是否正常。3. 尝试通过USB OTG进入MaskROM模式看PC能否识别。串口有U-Boot输出但无法加载内核1. 内核镜像损坏或位置错误2. 设备树文件不匹配3. 内存初始化参数错误1. 在U-Boot命令行下使用fatls mmc 0:1等命令查看存储设备上的文件是否正确。2. 确认U-Boot环境变量bootcmd和bootargs是否正确指定了内核和设备树的路径与参数。3. 尝试使用tftp从网络加载内核和设备树以排除存储设备问题。内核启动后卡住或提示某个驱动probe失败1. 设备树配置错误如引脚复用冲突、寄存器地址错误2. 内核缺少对应驱动模块3. 硬件连接问题1. 仔细查看串口日志找到失败的具体驱动和错误码。2. 核对设备树中该设备的节点配置compatible,reg,interrupts,pinctrl等。3. 检查硬件连接如I2C/SPI总线是否被拉低电源是否正常。系统启动后网络/声卡/触摸屏等外设不工作1. 驱动未加载或加载失败2. 用户空间配置问题3. 硬件使能信号未控制如供电EN引脚1. 使用lsmod查看驱动模块是否加载。使用dmesg | grep driver_name查看驱动日志。2. 检查/etc下的相关配置文件如netplan配置、alsa配置。3. 检查设备树中是否有通过GPIO控制外设电源的节点并确认其状态。NPU推理速度远低于预期1. 模型未正确量化仍为浮点2. 输入数据格式或尺寸不符合模型要求3. 内存带宽瓶颈4. NPU驱动/固件版本问题1. 使用RKNN-Toolkit2的模拟器或性能评估工具确认模型是否已量化。2. 确保传递给RKNN推理接口的数据是uint8类型且尺寸与模型输入层一致。3. 尝试使用零拷贝接口减少内存搬运。4. 更新NPU驱动和固件到最新版本。系统运行一段时间后死机或重启1. 散热不良导致过热保护2. 电源纹波过大3. 内存错误累积4. 软件死锁或内存泄漏1. 监控SoC温度改善散热。2. 使用示波器测量核心电源的纹波增加滤波电容。3. 运行内存测试。4. 分析内核崩溃日志如果有生成vmcore或使用gdb分析应用程序coredump文件。掌握这块“RK3568麒麟系统板卡”不仅仅是学会烧录系统和运行程序更是深入理解一个完整的、产品化的嵌入式系统是如何从硬件设计、内核适配、系统定制到应用开发一步步构建起来的。这个过程充满了挑战但每解决一个问题你对整个系统的掌控力就增强一分。从我的经验来看最宝贵的不是最终跑通的那个瞬间而是在排查一个诡异的硬件兼容性问题或优化一段关键代码性能的过程中所积累下来的那些无法在标准文档里找到的“直觉”和“手感”。