焦保存
【摘要】 本文以MTK的工廠測試模式為例,介紹了手機工廠測試模式的框架結(jié)構(gòu)和客制化的過程。
【關(guān)鍵字】 工廠測試模式 FTM 框架 客制化
概述:
MTK的工廠生產(chǎn)模式(簡稱FTM)同高通平臺的FFBM(Fast Factory Boot Mode),均屬于板級測試模式,即在工廠生產(chǎn)階段,手機各功能器件(包含主板)還沒有被組裝完成之前,對手機主板進(jìn)行板級的測試,以保證主板和各功能器件的完好性與可用性。工廠測試模式的啟動為快速啟動,一般小于20s,因此該模式一般是采用linux的text mode 方式,這種啟動方式快,各功能測試為列表模式,操作界面簡單,不需要復(fù)雜的設(shè)計,更不會考慮用戶體驗。進(jìn)入工廠測試模式的方式有三種:一種是power key + volume down 開機,這種方式是在啟動過程中的preloader 階段檢測到有這種組合按鍵按下后,即將啟動模式設(shè)置為工廠測試模式。從而在后續(xù)的啟動加載過程中使手機進(jìn)入工廠測試模式;第二種方式是在開機的時候使用power key + volume down進(jìn)入到快速啟動菜單,再在菜單中選擇進(jìn)入什么模式(與第一種模式不同時存在)。第三種方式為使用PC測ATA工具觸發(fā)手機進(jìn)入工廠測試模式,也就是由PC側(cè)工具發(fā)送特殊命令到手機側(cè)。
一、工廠模式框架結(jié)構(gòu)
MTK平臺的工廠測試模式的結(jié)構(gòu)設(shè)計如下:1:既然是測試,則存在一個FTM模塊列表,列出了所有待測試的模塊。這些模塊為一個模組陣列,會首先注冊該初始化陣列到系統(tǒng),在FTM初始化時回調(diào)每一個模塊的初始化函數(shù),并且注冊一個模塊的測試入口函數(shù)到系統(tǒng)中,供FTM模式測試時調(diào)用。2:Graphics,這是一個功能性的Graphic庫,提供一些諸如文本,point,rectangle,circle,line等的Graphic接口。3:Event:一個專門用于監(jiān)聽所有時間的接口,諸如觸屏事件,按鍵事件等。4:Resource:一個用于讀取png格式文件并將其轉(zhuǎn)換為Graphic對象的接口。5:Mini-UI:一個輕量級的用戶交互接口。6:Factory Program:工廠測試模式的main 程序,用于初始化Mini-UI,工廠模式基礎(chǔ)框架,讀取定制化的配置文件和進(jìn)入工程測試模式主界面等。7:FTM modules:首先,每一個FTM module 都是一種待測硬件的測試程序,并且可以上報測試結(jié)果到用于界面;其次,每一個FTM module 的入口函數(shù)都是通過FTM的基礎(chǔ)框架調(diào)用的,然后進(jìn)入并執(zhí)行每一個FTM module的測試程序。8:FTM:這是一個模塊的注冊和注銷接口,內(nèi)存分配和釋放的接口,屬性設(shè)置與獲取的接口,以及查詢注冊模塊的接口等。
二、工廠模式客制化
工廠模式可以根據(jù)不同的目標(biāo)產(chǎn)品也就是根據(jù)不同的硬件組裝而成的手機進(jìn)行不同的客制化。針對某一目標(biāo)產(chǎn)品,其客制化又包含有測試功能模塊的客制化,測試菜單的客制化與測試數(shù)據(jù)的客制化三部分。首先是目標(biāo)產(chǎn)品的客制化:不同的手機產(chǎn)品可以裝配不同的按鍵和顯示屏,因此一個新的產(chǎn)品的工廠模式的啟動,需要首先客制化并告知工廠測試模式該款手機擁有的按鍵個數(shù)以及LCD顯示方案(諸如分辨率等)。工廠模式的客制化部分位于文件夾factory/ custom/
Cust.h:該文件是主客制化文件,用于定義該工廠測試模式所擁有的測試模塊,要包含一個測試模塊,則在該文件中定義“FEATURE_FTM_XXX”,如下:
#define FEATURE_FTM_AUDIO
#define FEATURE_FTM_BT
Cust_lcd.h :用于定于工廠模式下顯示的分辨率和位于res/images文件夾下的資源文件,這里需要注意的是,不正確分辨率會導(dǎo)致工廠模式的不正常。如下:
#define CUST_LCD_AVAIL_WIDTH 320
#define CUST_LCD_AVAIL_HIGHT 480
#define DEFINE_TEST_IMAGE_FILENAMES(x) \
Cust_keys.h :用于定義按鍵個數(shù)和與工廠菜單的按鍵對應(yīng)關(guān)系。為了能夠操作工廠模式,四個按鍵是需要被映射到物理按鍵(或者虛擬按鍵)上,這四個按鍵為UP/ VolumeUp,Down/VolumeDow,Back和Confirm按鍵。如下:
#define CUST_KEY_UP KEY_UP
#define CUST_KEY_VOLUP KEY_VOLUMEUP
#define CUST_KEY_CONFIRM KEY_MENU
#define CUST_KEY_BACK KEY_BACK
其次是工廠測試的客制化。除了目標(biāo)產(chǎn)品的客制化以外,工廠模式可以通過一個位于內(nèi)存根目錄名稱為factory.ini的文件,用于實時的客制化工廠菜單和測試數(shù)據(jù)。通過修改該文件中用于描述菜單名字的MenuItem=XXX,可以調(diào)整測試條例和測試流程。另外,一些特殊的測試數(shù)據(jù),可以通過修改一個格式為
// test item and test flow configuration
MenuItem=按鍵(M);
//WIFI
WIFI.SSID=mtkguest;
//Vibrator
Vibrator_Last_Time=0;
//AUDIO
Audio.Ringtone=5;
結(jié)束語:經(jīng)過以上幾部分的談?wù)?,可以對手機的工廠測試模式框架以及客制化過程進(jìn)行一個了解。
參 考 文 獻(xiàn)
[1] MTK Factory_Mode_Training.pdf 128-144