您的位置:首页 > 其它

MT6589开机启动简析

2016-03-24 14:52 246 查看
(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内核那里去了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: