MTK使用的是nucleus實時操作系統,其上封裝了壹個內核抽象層,以適應各種實時操作系統,如oscar、ThreadX、nucleus等。整個軟件系統包括核心操作系統、平臺設備驅動、協議棧、文件系統、WGUI、MMI、J2ME等。這裏的MMI部分幾乎包括了操作系統內核、協議棧、文件系統以上的所有部分,其中也包括WGUI。
MTK的PC仿真版由VC編譯器和鏈接器生成,ARM版由ADS1.2編譯器和鏈接器生成。由於MTK的整個軟件系統是壹個龐大而復雜的項目,需要支持多個MTK產品線和多個客戶的定制支持,使用集成開發環境(IDE)已經不能勝任,很難自動構建整個項目並生成資源和代碼。因此,MTK的軟件系統使用windows下的GNU開發工具鏈(MinGW)來管理、配置和構建項目,MTK將MinGW放入第三方工具中。另外,perl腳本用於解析用戶輸入的命令行參數,所以第三方工具還包括Active perl(Windows下的Perl解釋器)。然而,整個軟件系統並沒有使用MinGW的所有工具。好像只用make,幾個Makefile控制構造過程。編譯鏈接時,根據最終生成的是PC模擬版還是ARM版,分別調用VC編譯器和鏈接器或者ADS1.2編譯器和鏈接器。
接下來,我們從具體的工程實踐來看MTK的手機軟件系統。
MTK手機軟件系統目錄結構簡介
MTK手機軟件系統的主要目錄如下。因為整個工程的目錄樹非常大,為了簡潔和減少空間,把工程結構中相對不重要的目錄都去掉了。
。
| - Fast_DL
| -只讀存儲器
| -適應
| -應用程序
| -引導加載程序
| -配置
| -自定義
| | -應用程序
| | ` - TOP_6227_BB
| | -常見
| | - drv
| | | -液晶顯示器
| | | ` - TOP_6227_LCM
| | ` -圖像傳感器
| | ` - MT9D011
| - drv
| - fs
| -公司
| -初始化
| -界面
| - j2me
| -卡爾
| -制造
| | -應用程序
| | | -應用定義
| | -應用公司
| | | -應用程序
| | ` - applib.pth
| | -引導加載程序
| | -配置
| | -自定義
| -媒體
| - mmi
| -莫迪斯
| - mtk_lib
| ` - MT6227
| ` - S01
| ` - gprs
| | - abm.lib
| | - adaptation.lib
| | - applib_inet.lib
| -細胞核
| - nvram
| -普盧托米
| -工具