MTK 第三方库配置(转)

简介: MTK 第三方库配置(转)

MTK手机软件系统的大部分配置都已经确定,基本上不需要再改变,一般是MTK发布新的版本时会作些改变,客户不大需要关心。最主要的配置文件是Option.mak,而客户化定制需要需要修改的主要是<costomer>_<project>.mak、REL_CR_MMI_<project>.mak这两个文件。

    Option.mak文件中设置了工程构建时用到的编译器、链接器、库管理、二进制文件生成等工具的路径和可执行程序名,设置了基本的编译链接参数,指定CPU类型(ARM7EJ-S),确定最终使用的库列表(COMPLIST)。

   一个项目是由工程中的多个基本库、第三方库和由源代码新编译链接的库组成的,最终这些库链接到一起得到一个完整的可执行映像文件。由哪些新编译链接的库来组成一个项目是由四个关键的变量决定,其中一个是前面提到的COMPLIST,另外三个分别是CUS_REL_SRC_COMP、 CUS_REL_PAR_SRC_COMP、CUS_REL_MTK_COMP。这个几个变量的关系如下所示。

# *************************************************************************

# Custom Release Component Configuration

# *************************************************************************

# Be sure the following:

# 1. CUS_REL_SRC_COMP + CUS_REL_PAR_SRC_COMP =COMPLIST(CUSTOM_RELEASE = True)

# 2. CUS_REL_SRC_COMP + CUS_REL_PAR_SRC_COMP + CUS_REL_MTK_COMP = COMPLIST(CUSTOM_RELEASE = False)

    COMPLIST确定了该项目最终是由哪些库(组件)组成的。MTK的内部版本构建时,则包括 CUS_REL_SRC_COMP、CUS_REL_PAR_SRC_COMP、 CUS_REL_MTK_COMP这些库。客户版本构建时,则只包括 CUS_REL_SRC_COMP、CUS_REL_PAR_SRC_COMP这些库。手机设计公司构建的版本都是客户版本,因此只要改变 CUS_REL_SRC_COMP、CUS_REL_PAR_SRC_COMP这两个变量的值即可以定制自己的项目了。

   MTK_LIBS确定了该项目最终包含了哪些MTK提供的基本库。

   COMPOBJS确定了该项目最终包含了哪些第三方提供的不带源代码的库。变量CUS_RES_OBJ_LIST用于把这些第三方库随项目发布。

   Option.mak和REL_CR_MMI_<project>.mak这两个文件都有对这两个变量CUS_REL_SRC_COMP、CUS_REL_PAR_SRC_COMP赋值。但Option.mak文件只是设定了整个工程需要的基本库,如手写、图形解码等,和特定项目没有关系。因此客户要定制自己的项目只需要修改REL_CR_MMI_<project>.mak这个文件对这两个变量的赋值即可。

   <costomer>_<project>.mak文件也有对COMPLIST的赋值,但这只是对MTK的内部版本有用,客户版本没有影响。值得注意的是,该项目的绝大部分功能特性(feature)是在这个文件中确定的,如使用的sensor、支持哪些音视频格式、电话本大小、LCD屏幕大小等。下面是该文件中的部分内容。

J2ME_SUPPORT      = NONE    # J2ME support: NONE, MTK_J2ME, J2ME_LIB, /
                               MTK_J2MEHI, J2MEHI_LIB, MTK_DUMMYVM 
DRM_SUPPORT = NONE #DRM VENDOR: NONE, MTK, BSCI 
DRM_VERSION = NONE # DRM VERSION: NONE, V01, V02, ALL 
AMRWB_DECODE        = TRUE      # TRUE/FALSE 
AMRWB_ENCODE        = FALSE     # TRUE/FALSE 
               # MT6219 DSP cannot support AMRWB_ENCODE when GPRS connection 
JPG_DECODE          = JPG_HW    # NONE, JPG_HW, JPG_SW 
JPG_ENCODE          = JPG_HW    # NONE, JPG_HW, JPG_SW 
GIF_DECODE          = TRUE      # TRUE/FALSE 
PNG_DECODE          = NONE      # NONE, PNG_HW, PNG_SW 
DAF_DECODE          = TRUE      # TRUE/FALSE 
MJPG_SUPPORT        = FALSE     # TRUE/FALSE 
MP4_CODEC           = TRUE      # TRUE/FALSE 
AAC_DECODE          = TRUE      # TRUE/FALSE 
ISP_SUPPORT         = TRUE      # TRUE/FALSE 
CMOS_SENSOR         = OV7660        # OV9640, PAS105, PAS302, NONE, MT9D011, /
                                       MT9M111, OV9650

. 增加模块的配置实例

   若我们需要加入zlib这么一个模块(zlib包含了很多程序都用到的压缩和解压函数),我们可以按如下步骤进行。

   1. 把zlib的源代码包拷贝到你的MTK软件系统根目录下,这样所有的zlib代码都在zlib目录或zlib-1.2.3目录下(用哪个目录名由你的喜好来确定),在此为简单起见就放在zlib目录。

   2. 在make目录下新增一个zlib的目录(最好和根目录下的目录名一样),增加四个文件,分别是zlib.def、zlib.inc、zlib.lis、zlib.pth。zlib.def文件只要加上APCS_INTWORK就可以了,其他三个文件中加上源文件及其目录、头文件目录即可。

   3. 在REL_CR_MMI_<project>.mak这个文件的合适位置加上如下语句。

CUS_REL_SRC_COMP += zlib

   4. 把这个工程remake一下,若没有错误,zlib模块就成功加上去了。其他模块就可以调用zlib提供的压缩和解压缩函数了。

    若我们需要加入一个没有源代码的第三方库,譬如加入wifi,我们可以按如下步骤进行。

   1. 把wifi的所有第三方库文件拷贝到一个新建的wifi目录下。

   2. 在Option.mak这个文件的合适位置加上如下语句。

ifeq ($(strip $(WIFI_SUPPORT)),WIFI_LIB)
    COMPOBJS += wifi/sslplus.lib
    CUS_REL_OBJ_LIST += wifi/sslplus.lib
    COMPOBJS += wifi/sb.lib
    CUS_REL_OBJ_LIST += wifi/sb.lib
endif

    3. 把这个工程remake一下,若没有错误,wifi库就成功加上去了。其他模块就可以调用wifi提供的功能了。


相关文章
|
安全 C++ Windows
好工具推荐系列:VC++开发必备神器 -- Dependencies,查看依赖库DLL,支持win10,比depends更好用
好工具推荐系列:VC++开发必备神器 -- Dependencies,查看依赖库DLL,支持win10,比depends更好用
2802 0
好工具推荐系列:VC++开发必备神器 -- Dependencies,查看依赖库DLL,支持win10,比depends更好用
|
6月前
|
Perl
mtk 添加新模块模拟器modis编译
mtk 添加新模块模拟器modis编译
68 1
|
6月前
|
编译器
使用海思v500交叉编译器编译qt5.4.2版本
使用海思v500交叉编译器编译qt5.4.2版本
111 1
|
Ubuntu Java 编译器
iMX6 yocto平台QT交叉编译环境搭建
iMX6 yocto平台QT交叉编译环境搭建
267 0
iMX6 yocto平台QT交叉编译环境搭建
|
编解码 Shell iOS开发
iOS音视频开发 - LAME编译
MP3编码引擎,目前在业界,转码成MP3格式的音频文件时,最常用的编码器就是LAME库。当达到320Kbit/s以上时,LAME编码出来的音频质量几乎可以和CD的音质相媲美,并且还能保证整个音频文件的体积非常小
|
Unix Linux API
开源库介绍:libusb 及其使用
开源库介绍:libusb 及其使用
4089 0
开源库介绍:libusb 及其使用
littlevgl(Lvgl)最新版V7.4移植
littlevgl(Lvgl)最新版V7.4移植
|
Linux
tslib库的移植
tslib库的移植
173 0
|
Shell Linux
嵌入式linux/鸿蒙开发板(IMX6ULL)开发(十一)makefile的使用(下)
嵌入式linux/鸿蒙开发板(IMX6ULL)开发(十一)makefile的使用
154 1
嵌入式linux/鸿蒙开发板(IMX6ULL)开发(十一)makefile的使用(下)
|
JSON NoSQL Linux
VS2022OpenCV跨平台Linux CMake项目搭建过程(Jetson nano测试)
VS2022OpenCV跨平台Linux CMake项目搭建过程(Jetson nano测试)
939 0
VS2022OpenCV跨平台Linux CMake项目搭建过程(Jetson nano测试)