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内核那里去了
(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内核那里去了
相关文章推荐
- MySQL常见错误有哪些_MySQL常见错误的快速解决方法
- 自定义绘制的一些坑(待整理)
- 更新ubuntu11.04的源
- 如何使java中double类型不以科学计数法表示
- lnmp
- 如何查看Android设备上的分区信息
- 64为系统重定向
- 论left-pad的实现
- iOS 设计中 网络请求之 同步请求(json 请求--新方法和老方法)
- python爬虫
- scala学习资料
- 项目经理的职责
- EL表达式字符串的截取
- Hadoop-读取数据的几种方式
- MyBatis 解决字段名与实体类属性名不相同的冲突
- 惊呆了!这个APP是他做的?
- 常用tcp协议交互的分析解读及与socket编程之间的关系
- Linux 网络调优参数
- OptionParser命令参数介绍及使用
- Java学习笔记(六):面向对象、接口和抽象类