MTK 開發流程和開發環境小記

NO IMAGE

宣告:資料來自公司同事整理

一、             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