概述
lk是little kernel的简称,是一种bootloader(作用同常见的u-boot差不多),是Travis Geiselbrecht开发的一个开源项目,github地址为git://github.com/travisg/lk.git,而mtk的代码中就用到了lk。
注意:这里分析的代码是mt6582的代码,不同的版本的代码可能会稍有不同。
如果只编译lk部分代码,可以使用命令./mk project_name n lk。
lk的代码在bootable/bootloader/lk目录下,同mtk相关的有两个地方:
1. custom -> ../../../mediatek/custom/out/ 2. platform/mediatek -> ../../../../mediatek/platform/
所以最终参与lk编译的文件目录有:
1. bootable/bootloader/lk 2. media/custom/out/project_name/lk 3. media/platform/mt6582/lk
编译完成之后,最终将在out目录下生成lk.bin、logo.bin这两个文件。
那么既然这里有个media/custom/out这个目录,那么不得不进入看看这个目录了。
在前面编译lk时使用了命令./mk project_name n lk,那么这个命令将触发一个过程叫做custgen过程,可以单独使用命令./mk custgen来实现。我们知道同客户定制相关的东西mtk放在了media/custom目录下,那么这个目录下主要又有三个目录,common、project、mt6582,而custgen过程则会将这三个目录合并成一个目录,就是out目录,如图所示:
mediatek/custom/common/ ______________ mediatek/custom/hexing82_wet_jb5/ _____mediatek/custom/out mediatek/custom/mt6582/ _______________/
也就是说最终参与编译的其实是mediatek/custom/out目录,生成out这个目录有个规则,如果在这三个目录下同时存在一个同名的文件,那么优先级顺序是 project > mt6582 > common。
同理mediatek/config下面也是一样的,也会执行上面的过程,生成mediatek/config/out这个目录。
从上面的名字可以看出common是通用的,表示所有工程都共享该目录下的内容,而project目录下是该工程(或项目)所特有的。
文中如有理解错误,还望大家指正。
参考文档:MTK Alps Build System.ppt
最后
以上就是光亮发夹为你收集整理的关于mtk lk的全部内容,希望文章能够帮你解决关于mtk lk所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复