MTK手机软件系统工程和目录结构简介

本文介绍了MTK手机软件系统的架构及其主要组成部分,包括实时操作系统Nucleus、MMI应用程序、内核抽象层Kal等。文章详细阐述了软件系统的目录结构和构建流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MTK 使 用了 nucleus 实 时操作系统,在其上做了个内核抽象层的封装,以适应多种实时操作系统,如 oscarThreadXnucleus 。整个软件系统包括 nucleus 操作系统、平台设备驱动、协议栈、文件系统、 WGUIMMIJ2ME 等。在这里 MMI 部分几乎包括了操作系统内核、协议栈、文件系统之上的所 有部分,其中 WGUI 也 在其中。

    MTKPC 模拟版使用 VC 的编译器和链接器生成, ARM 版使用 ADS1.2 的编译器和链接器生成。因为 MTK 的整个软件系统是一个很庞大而且复杂的工程,并且要支 持多个 MTK 的产品系 列和多家客户的客户化支持,使用集成开发环境 (IDE) 已 经无法胜任,而且很难做到整个工程的自动构建和资源、代码的生成。所以 MTK 的软件系统使用了 windows 下的 GNU 开发工具链 (MinGW) 来进行工程的管理、配置和构建, MTKMinGW 放到了第三方工具中。另外还使用了 perl 脚本来解析用户输入的命令行参数,因此第三方工具中 还包含了 ActivePerl(windows 下 的 perl 解释器 ) 。不过,整个软件系统并没有使用 MinGW 的全部工具,好象只使用了 make 这个工具,由几个 Makefile 控制了构建的过程,在编译和链接时根据最终 生成 PC 模拟版还是 ARM 版而分别调用 VC 的编译器和链接器或 ADS1.2 的编译器和链接器。

MTK 手机软件系统的目录结构简介

MTK 手机软件系统的主要目录如下所示,因整个 工程的目录树非常庞大,为简单起见和减小篇幅,去除了在工程结构中相对不重要的目录。

.
|-- Fast_DL
|-- ROM
|-- adaptation
|-- applib
|-- bootloader
|-- config
|-- custom
|    |-- app
|    |    `-- TOP_6227_BB
|    |-- common
|    |-- drv
|    |    |-- LCD
|    |    |    `-- TOP_6227_LCM
|    |    `-- image_sensor
|    |        `-- MT9D011
|-- drv
|-- fs
|-- inc
|-- init
|-- interface
|-- j2me
|-- kal
|-- make
|    |-- applib
|    |    |-- applib.def
|    |    |-- applib.inc
|    |    |-- applib.lis
|    |    `-- applib.pth
|    |-- bootloader
|    |-- config
|    |-- custom
|-- media
|-- mmi
|-- modis
|-- mtk_lib
|    `-- MT6227
|        `-- S01
|            `-- gprs
|                |-- abm.lib
|                |-- adaptation.lib
|                |-- applib_inet.lib
|-- nucleus
|-- nvram
|-- plutommi
|-- tools

Fast_DL 是开发时下载二进制映像和资 源等的相关文件的目录。 ROM 是固化在 ROM( 可能是 Flash 的只读区 ) 中的相关代码和头文件的目录,在给客户的发布版中大都只有一些导出函数的头文件,其中似乎还有一个跳转表的东西 ROMSA_FuncTable

    kal 是上面所说的内核抽象层的相关文件的目录。 nvram 是存取 NV 中的内容的相关代码的目录。 nucleusnucleus 实时操作系统的目录,在给客户的发布版中只有头文件。 drv 是驱动相关的代码的目录。 fs 是文件系统相关的目录,好像只支持 fat 格式的。 tools 是工程相关工具的目录,包括 MinGWinterface 是系统各层的接口的目 录,还包含重要模块的接口,如 bluetoothWIFIconfig 是一些系统和任务 (task) 相关头文件的目录,感觉不像是配置相关的目录。 inc 是中断控制和寄存器地址相关头文件的目录。

    modisPC 模拟版的相关目录,包括了虚拟的 GSM 网络、 SIM 卡等,以及模拟器需要的字符串、图片等资源,还有 PC 模拟版的库、 VC 的相关工程文件。

    mmi 是一个缺省的空的 MMI 应用的目录,其中只是创建了一个什么也不干的 MMI 任务 ( 线程 ) ,处理下层发送上来的消息。 plutommipluto 组织 ( 也可能是原本的 mmi 应用的代号 ) 所写的整套 MMI 应用所在的目录,而实际上也就是我们需要定制和修改的 MMI 应用。其中的 mmi 目录中是 pluto 原本写好的 mmi 应用, mtkapp 中是 mtk 后来所写的 mmi 应用,而 Customer 中是图片、字符串等资源 的定制目录,大部分只是修改了字符串和图片、声音等的项目只要修改这个目录下的资源即可。

    mtk_lib 中是已经编译链接好的 ARM 版的库。因整个工程过于庞大,若完整的全新构建一次需要很长的时间。为了减少构建的时间,将一些已经完全调试稳定且基本不再改动的库 和 MTK 不开放源代码的库放到这个目录,这样每次构建时只需要将这些库和其他编译好的库链接起来就可以了。这些库一般是 ARM 版的,若有 thumb 版的,则再增加一个和 ARM 版相对的 thumb 版的库,一般叫第二个库,如 media_sec.lib 就是 thumb 版的多媒体库。

    custom 是所有客户化项目的驱动程序及系统和 MMI 应用定制相关的文件的目录。如你的手机主板的 RAMFLASH 等存储器的尺寸和地址空间有改动, MMI 应用的特性有不同,蓝牙、 WAP 的配置有变化,或是有项目相关的新应用,其相关文件都是放在这个目录中和特定项目对应的目录下,如项目 CUST1_6227 ,则放在 CUST1_6227_BB 下。要注意的 是 custom 也作为一个模块存在,这使得其可以通过 make 目录中的 custom 模块的四个文件进行客户化的一些定制。

    applibbootloaderinitmediaj2me 等是这个系统各个层次的相对独立的模块各自的目录,其实 drvfs 等目录也可以看成是相对独立的模块,只不过其更重要些而在前面介 绍。这些目录包含了这些模块的 C 文件和头文件。每个目录 ( 模块 ) 都在下面的 make 目录中有相对应的目录保存构建时的编译链接配置文件。

    make 是工程构建过程中最重要的一个目录了,工程构建用的 Makefile 和一些中间配置文件将放在这里, Makefile 在讲解构建过程时再具体 介绍。在每个模块对应的目录下,都有四个文件控制了编译链接时的过程和配置。分别是:

      <module_name>.def 文件中是该模块构建过程中用的条件定义。

      <module_name>.inc 文件中是该模块所有用到的头文件所在目录的路径,是相对整个工程根目录的路径。

      <module_name>.lis 文件中列出了该模块的所有 C 文件,其路径也是相对整个工程根目录的。

      <module_name>.pth 文件中是该模块的所有 C 文件所在目录的路径,是相对整个工程根目录的路径。

   build 目录中保存了构建过程中产生的目标文件和库文件,及其他一些中间文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冯子一

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值