关于mtk lk

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开发)