imx6q u-boot函数执行流程分析

 

BSP: L_4.1.5_1.2.0_GA

 

关于u-boot(2015.04)的函数执行流程分析:

make xxx_defconfig时会指定u-boot相关的配置文件,配置文件的指定流程是通过Makefile实现的,就不具体分析了。

下面分析u-boot的函数调用流程:

首先会执行<u-boot>/arch/arm/cpu/armv7/中的start.S,分析此文件

其中有一句:

bl    _main

会调用<u-boot>/arch/arm/lib/ctr0.S,分析此文件发现:

       bl    board_init_f

       ldr   pc, =board_init_r

board_init_fboard_init_r都是C语言的函数,他们分别位于:

<u-boot>/common/board_f.c<u-boot>/common/board_r.c

u-boot就是通过这两个函数去一步步初始话一个板子的。

 

继续分析board_init_f()函数,其通过调用initcall_run_list(init_sequence_f),将函数指针数组init_sequence_f中的函数一一执行,而init_sequence_f[]中的board_early_init_f

在执行完board_init_f ()后会执行board_init_r ()函数,与board_init_f类似,board_init_r也会通过调用initcall_run_list(init_sequence_r),将init_sequence_r[]中的函数一一执行,并最终调用run_main_loop,剩下的执行流程就不做分析了(大家都能看懂),需要注意的是函数board_initboard_late_initboard_early_init_f都是在板级初始化文件中定义的(<u-boot>/board/freescale/mx6sabresd/mx6sabresd.c),用户自定义的初始化代码,均可以放在这三个初始化函数中,需要注意的是在mx6sabresd.c中有一个初始化函数为 board_init_f(),此函数是不会被执行的,千万要注意!仅有上述的三个初始化函数会被u-boot调用!!!


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值