说明:源码来自opensource的最新uboot,以sdhc的设备树节点被uboot修改为例说明。
调用过程;

do_bootm(cmd/bootm.c)//通用命令
->do_bootm_subcommand(cmd/bootm.c)
->do_bootm_states(common/bootm.c)
->bootm_os_get_boot_func() (common/bootm_os.c)
return boot_os[os];
->static boot_os_fn *boot_os[] = { (common/bootm_os.c)//通用代码[IH_OS_U_BOOT] = do_bootm_standalone,
#ifdef CONFIG_BOOTM_LINUX[IH_OS_LINUX] = do_bootm_linux,->do_bootm_linux(arch/arm/lib/bootm.c)  //架构相关
->boot_prep_linux(arch/arc/lib/bootm.c) //架构相关
->image_setup_linux(common/image.c)
->image_setup_libfdt(common/image-fdt.c)->ft_board_setup( board/freescale/ls2080ardb/ls2080ardb.c) //板级相关
->ft_cpu_setup(arch/arm/cpu/armv8/fsl-layerscape/fdt.c)eg:#ifdef CONFIG_FSL_ESDHCfdt_fixup_esdhc(blob, bd);//对sdhc修正
#endif
->fdt_fixup_esdhc(drivers/mmc/fsl_esdhc.c)
->esdhc_status_fixup(修改status状态 okey 或者disabled  使能/失能设备)
->解析fixup过程:
#ifdef CONFIG_OF_LIBFDT
__weak int esdhc_status_fixup(void *blob, const char *compat)
{
#ifdef CONFIG_FSL_ESDHC_PIN_MUX    //此宏必须在.h文件中定义if (!hwconfig("esdhc")) {//hwconfig环境变量没有设置esdhc选项eg:=> pri hwconfig
hwconfig=fsl_ddr:bank_intlv=auto;dspido_fixup_by_compat(blob, compat, "status", "disabled", sizeof("disabled"), 1); //改变status的状态为disabledreturn 1;}
#endifreturn 0;
}

总结:
在执行bootm启动linux内核和设备树之前,会层层调用从通用的代码到板级soc相关的代码,会根据环境变量来选择是否修改sdhc的状态,即是修改传递给linux内核的设备树的sdhc节点的status属性值,将其更改为disabled,来失能此设备。

uboot修正设备树(fixup)相关推荐

  1. uboot中的文件以及uboot和设备树的关系

    u-boot中和设备树编译有关的部分选项: CONFIG_OF_SEPARATE:If this option is enabled, the device tree will be built an ...

  2. 设备树(二)—— u-boot对设备树的支持

    一.配置u-boot u-boot对设备树的支持很简单,uboot从v1.1.3开始支持设备树,为了使用设备树,需要在config文件里配置 a.#define CONFIG_OF_LIBFDT b. ...

  3. UBOOT设备树研究

    文章目录 1.介绍 2.设备树的获取与设置 3.uboot如何获取dtb 4.uboot设备树接口 1.介绍 uboot的设备树可以在uboot运行过程中进行一些配置,uboot可以根据配置,选择不同 ...

  4. 我眼中的Linux设备树(五 根节点)

    五 根节点 一个最简单的设备树必须包含根节点,cpus节点,memory节点.根节点的名字及全路径都是"/",至少需要包含model和compatible两个属性.model属性我 ...

  5. 奇小葩讲设备树(4/5)-- Linux设备树详解(四)kernel的解析

    uboot将一些参数,设备树文件传给内核,那么内核如何处理这些设备树文件呢?本章就kernel解析设备树的过程和原理,本章的主要内容以Device Tree相关的数据流分析为索引,对ARM linux ...

  6. dts 编译过程_linux设备树dts移植详解

    [转] 摘 要:设备树的引入减少了内核为支持新硬件而需要的改变,提高代码重用,加速了Linux 支持包的开发,使得单个内核镜像能支持多个系统.作为U-Boot 和Linux 内核之间的动态 接口,本文 ...

  7. 在linux4.15 移植设备树到JZ2440

    注:本文参考了韦东山设备树视频和pengdonglin的博客讓TQ2440也用上設備樹(1),只用于学习记录.     在前面的博客Linux设备树学习笔记(三.修改uboot.linux-4.15内 ...

  8. linux 视频教程 韦山东,韦东山 linux 设备树详解

    简 介 设备树视频录制完毕,29节,现在只要69元.学员对此课程的评价:这是最翔实最实惠最精益求精的设备树教程,感兴趣的了解一下, 以下是课程详情~ [设备树是什么?] 设备树是一种机制,用文本的方式 ...

  9. tiny4412学习(二)之移植linux-4.x支持设备树

    硬件平台:tiny4412 系统:linux-4.4 文件系统:busybox-1.25 编译器: arm-none-linux-gnueabi-gcc (gcc version 4.8.3 2014 ...

最新文章

  1. 记一次 Vue 移动端活动倒计时优化
  2. PHP+MySQL 跨服务器跨数据库数据拷贝系统
  3. JAVA入门级教学之(myeclipse的使用)
  4. Vuex使用详解,附加项目遇到的问题(简单明了)
  5. mac/linux 解决启动命令行出现declare问题
  6. 信息学奥赛一本通(1078:求分数序列和)
  7. 【Redis】Redis 事务
  8. You have not concluded your merge (MERGE_HEAD exists) git拉取失败
  9. nginx php解析漏洞,关于phpStudy nginx解析漏洞的安全公告
  10. Java中RMI远程调用demo
  11. 计算机电子电路原理图,电路图讲解 电路图基础知识【图】
  12. 《穿越计算机的迷雾》读书笔记九
  13. ZXPInstaller for mac(zxp文件安装器)免费版
  14. 面试时被问到职业规划怎么回答?
  15. 我国首个5G地铁站开通:TCL集团重组方案通过;苹果2019新品图泄露|雷锋早报...
  16. oracle e18,ORACLE_10g_各版本下载地址大全
  17. linux hd4000显卡驱动,AMD Radeon HD 2000/HD 3000/HD 4000系列显卡驱动怎么样
  18. Linux中curl命令详解
  19. String的使用方法
  20. 二层交换、三层交换和路由的原理及区别

热门文章

  1. 信号与系统:利用Matlab实现两个信号的卷积
  2. 2022-2027年中国核辐射检测仪市场竞争态势及行业投资前景预测报告
  3. JAVA利用Jacob将EXCEL转成PDF
  4. Microsoft Visual C++ 2015 安装失败 0x80070666-已安装这个产品的另一个版本。
  5. 工业监控可视化决策平台
  6. 智能钢琴、MIDI音乐、打谱、曲谱乐谱播放识别SDK、音序器、合成器、播放器软件
  7. appstore 审核ipv6被拒
  8. 音频功放:AB类/D类/F类区别
  9. 大学的你,到底要学习什么?
  10. 实现字符串中单词的逆转,即将单词出现的顺序进行逆转。如将how are you 逆转为you are how!