在项目开发过程中,可能会遇到多个项目使用同一个源码仓库,并且代码是高度复用的,如果在不同的项目中只是代码存在一些差异,会有很好的解决方式去区分,但可能在不同的项目中设备树存在差异性,这个时候会相对来说比较难处理,本文目的就是以RK平台上的芯片为示例来实现将两个项目的dtb文件和内核文件一起打包,并根据不同的设备参数传递不同的设备树给内核进行解析。
目的:将XEPU和EPU项目的dtb文件打包进新的内核升级包。
前提:XEPU和EPU中设备树的源文件(.dts)都是存在的。
可以通过make ARCH=xxx rockchip/xxxx.dtb自行测试单独编译dts文件
这个脚本会调用打包工具并将打包的文件传递进去。
dtb文件是在启动内核之前将dtb文件传递给内核进行解析的,在EPU和XEPU中如何能将对应的dtb文件传递给相应的设备,这就需要一个标识,可以选择HWID来进行区分EPU和XEPU。
因为HWID是存放在EEPROM内的,所以需要在uboot下编写EEPROM的读操作,由于代码较多,获取HWID代码如下
可以看到 XEPU_DTB_FILE 、 EPU_DTB_FILE 与打包工具中的FDT_PATH_XEPU、FDT_PATH_EPU是对应的,因为最后在检索时就是根据此值来进行区分。
另外,定义了全局指针变量dtb_file是为了传递获取到的具体设备的索引值。在何处会用到呢,必定是在对设备树进行检索时。需要修改代码,将获取到的实际索引值传递进去。