从零到一:RK3568 Linux系统移植与深度定制实战
1. 为什么选择RK3568进行Linux系统移植RK3568这颗芯片最近在嵌入式圈子里特别火我去年做智能家居网关项目时就深有体会。作为瑞芯微的中高端处理器它用四核Cortex-A55架构主频能跑到2GHz还自带0.8T算力的NPU关键是功耗控制得特别好。我实测下来跑满负载时板子温度也就50度出头比同级别的芯片稳多了。说到移植Linux系统RK3568有个特别友好的地方——官方SDK完善度很高。去年我给客户定制工业控制器时从拿到开发板到系统跑起来只用了三天。官方提供的工具链、编译脚本、设备树模板都很齐全连DDR初始化这种传统难点都封装好了。不过要注意的是官方SDK默认配置是针对评估板的用在自制板卡上得做不少调整。2. 环境搭建的避坑指南第一次搭建环境时我踩过不少坑这里分享几个关键点。Ubuntu版本强烈建议用18.04去年试过20.04会出现glibc版本冲突。内存最好8G起步4G的话编译内核时经常被OOM killer干掉。有次我编译到一半进程突然消失查了半天日志才发现是内存不足。安装依赖时有个隐藏坑点sudo apt-get install -y libssl-dev这个包必须最先装否则编译uboot时会报奇怪的哈希错误。另外建议把swap分区设到8GB以上用SSD的话可以这样操作sudo fallocate -l 8G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile3. SDK包处理的实战技巧解压官方SDK时千万别直接用tar命令我遇到过文件损坏的情况。正确做法是cat RK356X_LINUX_*.tar.gz.* | tar xz解压后目录结构里要重点关注这几个kernel/内核源码设备树文件在这里u-boot/启动加载器配置rkbin/存放DDR初始化等二进制blobdevice/板级配置文件有个容易忽略的点是SDK路径不能有中文或空格去年有个同事把工程放在我的项目目录下编译时各种诡异错误排查了两天才发现是路径问题。4. 板级配置的深度定制4.1 设备树移植实战新建设备树文件时我推荐这样的命名规则rk3568-[厂商代号]-[内存类型].dts比如我做过的智能音箱项目就用rk3568-audio-lpddr4.dts。关键是要继承官方设备树的通用配置#include rk3568-evb.dtsi #include rk3568-linux.dtsi电源域配置最容易出错有次我把vccio1和vccio3接反了导致SD卡控制器烧毁。现在我的做法是先用万用表测量各电源域实际电压对照原理图修改pmu_io_domains节点用regulator-always-off标记未使用的电源4.2 调试串口配置玄机RK3568有多个UART控制器但只有特定组合能用于早期调试。经过多次测试我发现最稳定的配置是在ddrbin_param.txt设置uart id2 uart iomux3内核设备树要同时修改chosen { stdout-path uart2; }; uart2 { status okay; }注意波特率必须设为1500000低了会丢数据。建议用FT232HL这类高质量USB转串口工具普通CH340在高速率下经常丢包。5. DDR稳定性调优经验内存问题是移植中最头疼的我总结了三板斧降频大法在ddrbin_param.txt里把lp4_freq从1560降到1000时序调整参考RK提供的DDR_RegConfig.md修改rkbin/tools/ddr_param_*.txt电压微调在PMIC节点增加5%的供电余量去年调一块六层板时系统随机崩溃最后发现是DQS信号走线过长。通过在内核cmdline添加earlyconuart8250,mmio32,0xfe660000提前捕获到了DDR初始化日志结合Rockchip_Trouble_Shooting_DDR_CN.pdf里的眼图分析法定位到了问题。6. Debian根文件系统构建官方提供的buildroot镜像比较简陋我更喜欢用Debian。编译前要设置export RK_ROOTFS_SYSTEMdebian export DEBIAN_VERSIONbullseye有个坑要注意默认的软件源在国内很慢可以修改device/rockchip/rk356x/rockchip-rk356x-debian.mk替换为阿里云镜像deb http://mirrors.aliyun.com/debian/ bullseye main contrib non-free编译完成后用overlay机制添加自定义软件特别方便。我通常会在device/rockchip/common/overlay-debian下放这些/etc/apt/sources.list.d/myrepo.list/usr/local/bin/my_startup.sh/etc/systemd/system/my_service.service7. 烧录与调试的实用技巧RKDevTool在Windows下用着还行但在Linux平台我更推荐用upgrade_toolsudo upgrade_tool uf update.img如果遇到设备无法识别按住recovery键上电的同时执行sudo upgrade_tool di -p param.txt调试阶段一定要接好串口我习惯用screen工具screen /dev/ttyUSB0 1500000遇到内核panic时第一时间检查电源轨电压是否稳定内存颗粒温度是否过高时钟信号是否有抖动移植完成后建议用stress-ng做压力测试stress-ng --cpu 4 --vm 2 --hdd 1 --timeout 24h
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2414869.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!