聲明:資料來自公司同事整理
一、 MTK的框架理解
MTK手機開發平臺是由MediaTek研發的一套手機開發平臺,在MediaTek的源代碼中封裝了手機的的一些基本的功能,我們公司MMI就是在MTK源碼的基礎上針對不同的客戶羣體需求進行軟件開發(包括調整UI資源、封裝SP、相應應用程序)。
MTK的主要框架如下:
PS:
MMI Application Layer:包含一些用戶自定的應用程序。
UI Layer:封裝一些與UI相關的函數
Framework:封裝消息管理和事件處理。
Layer Operating System & Protocol Stack Layer & Driver :協議棧和驅動相關的信息。
一、 開發環境的搭建
爲更方便的在MTK平臺上進行研發,需要安裝如下軟件:
1、 ADS 編譯器。由於MTK平臺使用的ARM處理器,需要使用ADS編譯器進行編譯。
2、 beyond compare。使用該軟件能比較兩個文件(文本文件尤其明顯)的差異,方便我們瞭解自己做了哪些修改。
3、 分佈式編譯工具。由於MTK的文件數目很多,如果採用單機編譯的方式比較費時,因此需要使用分佈式編譯軟件increditbuild來加快程序的編譯速度。
4、 加密軟件。公司的MTK源碼是經過加密的,因此需要安裝億賽通軟件來解密(具體有IT人員安裝)。
5、 CC。由於公司版本更新速度比較快,我們使用CC來進行版本管理。
6、 CQ。使用CQ來方便測試和開發人員的溝通,測試人員通過CQ提交BUG,開發人員可以查看BUG的狀態,處理完成後修改狀態,然後測試人員再進行測試。
7、 VC6.0(最好安裝vc助手插件查看代碼更明顯)。方便我們調試。
8、 Sourceinsigt。方便查看和修改代碼。
二、 MTK的文件結構
MTK程序包含的文件數量比較多,對於開發人員我們只需要瞭解其中開發比較常用的幾個文件夾就可以了。常用的幾個文件結構的結構如下。
PS:
Customer:存放一些資源的定義、模擬器的皮膚和圖標等。如圖片、菜單、字符串、字體、語言、主題….
MMI:我們主要做代碼修改的地方之一。其中INC是一些頭文件,Framework中有文件管理、事件處理、NVRam、歷史、OSL、任務管理,xxxAPP是一些應用程序的代碼(如Call、Message等),GUI中定義一些UI組件和category。
Mtkapp:應用程序的定義(其中包含INC和SRC),如Camera、TV等
一、 開發常用工具的使用
在MTK開發過程中可能會用到如下工具,具體使用方法如下:
1、 ADS編譯器的使用。由於MTK已將程序的具體編譯過程寫成批處理文件,因此我們不需要寫繁瑣的make文件,只需要調用MTK的批處理文件就可以完成編譯。使用cmd命令進入命令行界面,使用cd命令轉到我們工程文件的code路徑。具體命令如下:、
Ø make "project" gprs new:編譯整個工程(時間最長,除非添加資源或者修改mak文件,一般少使用)。
Ø make "project" gprs r [模塊名]:編譯修改的c文件,如果知道修改在哪個模塊可以直接後面跟模塊名。
Ø make "project" gprs gen_modis(simulator_gen "project" gprs)重新生成模擬器。
Ø make ratech35_08b gprs resgen:修改了資源文件需要執行該命令來將資源轉換成C文件。
2、 CQ的使用方法(查詢條件雙擊添加)
開始à程序àRational software àRational ClearQuestàClear Questà使用用戶名和密碼登錄à點擊左上角Create Grid Queryà彈出界面選擇nextà選擇要查詢的列(id,Owner,project,State,Headline,Description)à在Filter界面中選擇查詢選項(Project,State)Nextà點擊選擇好的選項(如Project)點擊Value按鈕來添加條件後Run就可以顯示出Bug的狀態
3、 CC的使用。
開始à程序àRational software àRational ClearCaseàClearCase ExporeràBaseClearCaseàCreateView來創建一個View。創建後我們就可以在已存在的View上執行Update、CheckOut、CheckIn等操作。其中在創建View(以後也可以修改)是需要定義Update的規則,示例如下:
element * CHECKEDOUT
element * .../rgt_m800_base/LATEST
element * /main/LATEST -mkbranch rgt_m800_base
load /RATECH35_08BW0912MP_V1_F1_MMI
PS:可以按如下方式在CC中建立自己的分支
在CC中點擊自己的文件右鍵à選擇Explorer Typeà打開brunch type文件夾,在該文件夾中新建自己的節點。
4、 Flash Tool的使用。
在ratech35_08b.mak中的RGT_MODIS_BUILD設置爲FASLE
Ø Make New 生成Bin文件
Ø 打開Flash Tool 在download agent 選擇Flash Tool的安裝目錄下的MTK_AllinOne_DA.bin,點Scatter-Loading選擇code/build/RATECH35_08B/RATECH35_08B_PCB01_gprs_MT6235B_S01.M800_XXX_UIM_0910.bin
Ø 接通主板電源,使用usb線連接到主板,然後點擊Flash Tool的download即開始下載
PS:
Ø 在關掉電源的時候,先需要將主板的電源線拿掉,然後在關閉電源
Ø 電源的電壓應該在3.9v左右,不能高於4.1v
5、 使用串口線打log的方法(代碼中格式:kal_prompt_trace(MOD_USB, "lcd_backlight = %d,%d", lcd_backlight,time_enum);)
Ø 將bin文件下載到手機
Ø 開機在手機中輸入*#9646633#進入工作模式,在作模式中選擇設備,選擇Set UART,在Set UART菜單中選擇UART Setting,在UART Setting菜單中設置TST-PS-Config爲UART-1(波特率設置爲115200),設置PS-Config爲無(波特率同上)。
Ø 用串口線將手機和PC連在一起。打開Catcher.exe,並在其中做如下設置: Config菜單àSetDatabasePathà路徑選擇/code/tst/database_classb/....srcp… à選擇Catcher的快捷圖標loading mode