差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
后一修订版
前一修订版
digi:arm-embedded:uboot:ccmp-uboot [2024/11/05 11:02] robindigi:arm-embedded:uboot:ccmp-uboot [2024/11/05 23:18] (当前版本) robin
行 24: 行 24:
 </code> </code>
 其中解包op-tee镜像出来的得到的nt-fw.bin是uboot不带设备树的文件。 其中解包op-tee镜像出来的得到的nt-fw.bin是uboot不带设备树的文件。
 +====修改内核设备树====
 +内核设备树是从uboot启动进入系统时加载的设备树,它和uboot时的可以不一样。一般地,自定义的板子,linux也要同样改好ccmp25-plc.dts和相关的makefile,然后在local.conf里加上这句:
 +<code>
 +KERNEL_DEVICETREE += "ccmp25-plc.dtb"
 +</code>
 +
 +在devshell里直接编译
 +<code>
 +bitbake -c devshell linux-dey
 +</code>
 +应用改动,然后make dtbs,编译出本地修改的相关的设备树ccmp25-plc.dtb
 =====修改U-Boot 源码===== =====修改U-Boot 源码=====
 在工作区域修改U-Boot,首先要编译一个,以便拉取源码到工作区域。要清空之前的编译结果: 在工作区域修改U-Boot,首先要编译一个,以便拉取源码到工作区域。要清空之前的编译结果:
行 64: 行 75:
 cd tmp/work/ccmp25_dvk-dey-linux/u-boot-dey/2022.10-r0/git cd tmp/work/ccmp25_dvk-dey-linux/u-boot-dey/2022.10-r0/git
 mv configs/ccmp25-dvk_defconfig ~/temp/ mv configs/ccmp25-dvk_defconfig ~/temp/
-ln -s ~/mygit/github/ccmp25-plc/uboot/configs/ccmp25-dvk_defconfig configs/ccmp25-dvk_defconfig+cp ~/mygit/github/ccmp25-plc/uboot/configs/ccmp25-dvk_defconfig configs/ccmp25-dvk_defconfig
 mv arch/arm/dts/ccmp25-dvk-u-boot.dtsi ~/temp/ mv arch/arm/dts/ccmp25-dvk-u-boot.dtsi ~/temp/
 mv arch/arm/dts/ccmp25-dvk.dts ~/temp/ mv arch/arm/dts/ccmp25-dvk.dts ~/temp/
 mv arch/arm/dts/Makefile ~/temp mv arch/arm/dts/Makefile ~/temp
-ln -s ~/mygit/github/ccmp25_dt/uboot-dts/ccmp25-plc.dts arch/arm/dts/ccmp25-dvk.dts +ln -s ~/mygit/github/ccmp25_dt/uboot-dts/ccmp25-plc.dts arch/arm/dts/ccmp25-plc.dts 
-ln -~/mygit/github/ccmp25_dt/uboot-dts/ccmp25-dvk-u-boot.dtsi arch/arm/dts/ccmp25-dvk-u-boot.dtsi +cp ~/mygit/github/ccmp25_dt/uboot-dts/ccmp25-plc.dts arch/arm/dts/ccmp25-dvk.dts 
-ln -s ~/mygit/github/ccmp25_dt/uboot-dts/Makefile +cp ~/mygit/github/ccmp25_dt/uboot-dts/ccmp25-dvk-u-boot.dtsi arch/arm/dts/ccmp25-dvk-u-boot.dtsi 
-在上面操作中,我们用链接文件(即修改版的uboot)替代了,并且ccmp25-dvk.dts也和新增加的ccmp25-plc.dts链接到同一个修改版的uboot所用的设备树。 +cp ~/mygit/github/ccmp25_dt/uboot-dts/Makefile 
-复查一下,确保路径正确,链接文件颜色是常蓝色+在上面操作中,我们原本用链接文件(即修改版的uboot)替代了,并且ccmp25-dvk.dts也和新增加的ccmp25-plc.dts链接到同一个修改版的uboot所用的设备树。注意,默认的设备树dts和dtsi不可用链接文件,改为cp拷贝进去则可以。 
 +复查一下,确保文件正
 ls -la arch/arm/dts/ccm* ls -la arch/arm/dts/ccm*
 </code> </code>
行 81: 行 93:
 ls -la ../build/ccmp25-dvk_defconfig/arch/arm/dts/cc* ls -la ../build/ccmp25-dvk_defconfig/arch/arm/dts/cc*
 </code> </code>
-linux也同样改好ccmp25-plc.dts和相关makefile然后在local.conf里加上这句:KERNEL_DEVICETREE += "ccmp25-plc.dtb" +注意,此时我们用bitbake -C compile u-boot-dey,会发现原来的build/ccmp25-dvk_defconfigs/arch/arm/dts/下的ccmp25-dvk.dtb日期没变,但新的ccmp25-plc.dtb倒也确实生成了。另外deploy-u-boot-dey目录下文件也是新日期我们反编译检查一下deploy-u-boot-dey/u-boot/u-boot-ccmp25-dvk.dtb 
-编译出相关的ccmp25-plc.dtb+<code> 
 +cp deploy-u-boot-dey/u-boot/u-boot-ccmp25-dvk.dtb ~/temp 
 +cd ~/temp 
 +dtc -I dtb -O dts -o uboot.dts u-boot-ccmp25-dvk.dtb 
 +cat uboot.dts |grep dummy 
 +</code> 
 +我们在自己修改的uboot的设备树中加入了dummy节点,而这里没有,说明修改版没有应用上。如果不想深究,可以用编译出的ccmp25-plc.dtb来替代所有的ccmp25-dvk.dtb 
 +<code> 
 +cp build/ccmp25-dvk_defconfig/arch/arm/dts/ccmp25-plc.dtb build/ccmp25-dvk_defconfig/arch/arm/dts/ccmp25-dvk.dtb 
 +cp build/ccmp25-dvk_defconfig/arch/arm/dts/ccmp25-plc.dtb deploy-u-boot-dey/u-boot/u-boot-ccmp25-dvk.dtb 
 +bitbake tf-a-stm32mp 
 +</code> 
 +再测试一下: 
 +<code> 
 +cp tmp/deploy/images/ccmp25-dvk/fip/fip-ccmp25-dvk-optee.bin ~/test/ 
 +fiptool unpack ~/test/fip-ccmp25-dvk-optee.bin 
 +dtc -I dtb -O dts -o uboot.dts hw-config.bin 
 +</code>
  
-接着编译+验证无误后,再bitbake core-image-base编译出所有镜像,最后更新
 <code> <code>
-bitbake core-image-base+update fip-a tftp fip-ccmp25-dvk-optee.bin
 </code> </code>
  
-注意:bitbake -c cleanall u-boot-dey也会删除tfa和fip目录,而deploy目录下也有u-boot,里面似乎是来自deploy-u-boot-dey/u-boot,所以在打包tfa和fip时,只改deploy-u-boot-dey/u-boot够了么?+
 =====修改U-Boot设备树===== =====修改U-Boot设备树=====
 修改源代码,在添加不同设备树的场景并不适用。并且git目录在bitbake -c cleansstate或cleanall时,都会被清空。因此,直正的修改需要发生在DEY的源码区,也就是sources里。 修改源代码,在添加不同设备树的场景并不适用。并且git目录在bitbake -c cleansstate或cleanall时,都会被清空。因此,直正的修改需要发生在DEY的源码区,也就是sources里。