gd->fdt_blob 是在 U-Boot 中用于指向设备树 blob(binary blob)的指针。设备树 blob 是一种扁平化的设备树表示,它包含了硬件设备的描述信息,这些信息在系统启动时被 U-Boot 或操作系统内核使用来初始化硬件。
在 U-Boot 中,fdt_blob 通常在初始化过程中被设置。如果 U-Boot 配置为使用设备树(通过 CONFIG_OF_CONTROL 标志启用),那么在启动时会调用 fdtdec_setup 函数来设置 gd->fdt_blob 的值,该值指向设备树 blob 的存储位置。
fdt_blob 的值可以通过不同的方式获得,具体取决于 U-Boot 的配置和构建方式。如果 U-Boot 配置为将设备树 blob 集成到其镜像文件中(通过 CONFIG_OF_EMBED 标志启用),那么 fdt_blob 将指向镜像文件中的设备树 blob 部分。如果设备树 blob 是作为单独的文件存在,那么它可能会被加载到内存的某个位置,并且 fdtcontroladdr 环境变量会被设置为该地址,从而动态指定 fdt_blob 的值。
在 U-Boot 的源代码中,fdt_blob 通常在 board_f.c 文件中被初始化,并且在 fdtdec_setup 函数中被设置为设备树 blob 的地址。这个地址随后被用于各种设备树操作,例如获取设备树中的节点和属性。
CONFIG_OF_CONTROL
CONFIG_OF_SEPARATE fdt独立于uboot
CONFIG_OF_EMBED fdt与uboot打包在一起
CONFIG_OF_PRIOR_STAGE fdt来源于外部地址