1. 从“编译整个内核”到“只编译设备树”:一个新手必经的弯路
最近在折腾我的香橙派3B,这块板子用的是瑞芯微的rk3566芯片,性能不错,玩嵌入式Linux正合适。我有个小目标,想自己添加一个设备树节点,用来驱动一个外设。这听起来是个基础操作,对吧?我照着网上一些通用教程,在内核源码里找到了设备树源文件(.dts),小心翼翼地添加了几行代码,定义了我的新节点。然后,我信心满满地开始了第一次尝试:编译整个内核。
香橙派官方的用户手册确实是这么建议的,它会生成一个.deb安装包,你用它替换掉系统里旧的内核包,理论上一切修改就都生效了。我花了将近一个小时编译完,满心期待地更新、重启。结果一盆冷水浇下来:用cat命令查看我修改的那个.dts文件,代码没变;跑到/proc/device-tree下面去找,也根本看不到我新节点的影子。那一刻的感觉,就像你精心准备了礼物,对方却连门都没开。
我不死心,觉得可能是自己哪里操作错了。于是我想了个办法来排查:我把内核里一个已经存在的、肯定能正常工作的设备树节点属性给注释掉了。如果编译和加载流程没问题,那么这个属性应该会消失。我再次执行了漫长的全内核编译和安装。重启后一看,那个被注释的属性居然还在!这说明了一个关键问题:我通过官方deb包方式更新的内核,其设备树文件(dtb)可能根本就不是我刚刚编译出来的那个版本。编译过程可能没问题,但部署环节出了岔子,系统启动时加载的还是一个“旧”的设备树。
这个发现让我意识到,对于只想修改设备树进行驱动开发的我们来说,“编译整个内核”这条路不仅耗时,而且中间环节太多,容易失控。我们需要一条更直接、更精准的路径。这就是单独编译设备树(dtb) 的价值所在。它把编译目标从庞大的内核镜像聚焦到具体的设备树文件上,编译时间从几十分钟缩短到几十秒,让我们能快速迭代测试。更重要的是,它迫使我们去手动管理设备树文件的部署,反而让我们对系统启动加载设备的流程有了更清晰的认识。下面,我就带你一步步走通这条更高效的实战路径。


528

被折叠的 条评论
为什么被折叠?



