MT6589开机启动简析

(meidatek\platform\mt6589\preloader\src\core\main.c)main()--->bldr_pre_process()--->

(meidatek\platform\mt6589\preloader\src\drivers\platform.c)platform_pre_init():这里主要是初始化串口和PMIC

(meidatek\platform\mt6589\preloader\src\drivers\platform.c)platform_init():这里主要是初始化看门狗和USB设备,检测是否是下载模式,初始化内存分区
上面这个main函数的主要是用来判断开机模式的,特别是判断是否下载模式,如果是正常启动模式,则加载UBOOT代码,跳转到下一个代码段运行, if (bldr_load_part(PART_UBOOT, bootdev, &addr) != 0)
bldr_jump(addr, BOOT_ARGUMENT_ADDR, sizeof(boot_arg_t))。 BOOT_ARGUMENT_ADDR 是UBOOT代码段存放的起始地址。
下面进入bootloader阶段,其实是一个lk,即little linux--->

(bootable\bootloader\lk\kernel\main.c)kmain()--->(meidatek\platform\platform.c)platform_early_init:这里主要是初始化中断、LCM和PMIC,注意这里是开机第一次初始化LCM显示,但是没有打印出LOG,原因是初始化LCM的代码在UART初始化之前,g_fb_size = mt_disp_get_vram_size();可以进入这个函数仔细研究。

(bootable\bootloader\lk\kernel\main.c)kmain()--->thread_resume--->(meidatek\platform\platform.c)platform_init():这里做的事情就多了,开背光,加载显示LOGO图片,初始化充电电池==
执行完这个main函数后就开始真正开机了,但还是需要一个boot引导,这个是一个fastboot,如下--->

(bootable\bootloader\lk\app\mt_boot\sys_commonds.c)cmd_boot--->

(bootable\bootloader\lk\app\mt_boot\mt_boot.c)boot_linux--->这里就真 正跳到linux内核那里去了
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值