鄧小丁 謝志能
摘要:為解決現(xiàn)有瑞芯微寫號軟件寫號時間長、多次掃碼、不能防止重復(fù)號等問題,提出采用工廠模式對IMEI、藍(lán)牙、WiFi、SN等號碼一起寫入的方法。軟件采用C/S架構(gòu),使用SQL Server數(shù)據(jù)庫,基于C#語言實現(xiàn)。寫號前將IMEI、藍(lán)牙、WiFi、SN等號碼的對應(yīng)關(guān)系導(dǎo)入數(shù)據(jù)庫。寫號時,掃描任何一個號碼都可將其它幾個對應(yīng)號碼提取出來。檢查這些號碼之前是否用過,然后在bootloader時進(jìn)入工廠模式,將號碼寫入設(shè)備內(nèi)。與原有方法進(jìn)行對比實驗,結(jié)果表明,該方法寫號時間縮短12秒以上,效率提高50%以上,同時能防重及快速查找未寫號數(shù)據(jù)。
關(guān)鍵詞:google key;rockchip;bootloader;IMEI;工廠模式;Android
DOI:10.11907/rjdk.201192 開放科學(xué)(資源服務(wù))標(biāo)識碼(OSID):
中圖分類號:TP319文獻(xiàn)標(biāo)識碼:A 文章編號:1672-7800(2020)006-0146-04
0 引言
國家大力發(fā)展芯片產(chǎn)業(yè),很多高科技企業(yè)投入芯片制造。福州瑞芯微電子提供了平板電腦、手機(jī)、POS機(jī)等芯片解決方案。平板電腦、手機(jī)、POS機(jī)等產(chǎn)品在研發(fā)、測試、生產(chǎn)時,需要將國際移動設(shè)備識別碼(International MobileEquipment Identity,IMEI)、藍(lán)牙地址(Bluetooth address,BT)、無線保真(Wireless-Fidelity,WIFI)的MAC地址(Media Access Control Address,MAC)、SN碼(Serial Number,SN)等寫入設(shè)備。谷歌從Android 8.0開始要求每個設(shè)備有Google key密鑰,這就需要將Google key密鑰寫入設(shè)備?,F(xiàn)有寫號軟件存在以下問題:①需要進(jìn)入Android系統(tǒng)后利用adb命令寫號,系統(tǒng)啟動時間長、寫號慢;②同時寫入IMEI等多個號碼時,需要掃描每個號碼的條形碼或手工輸入號碼,操作步驟多、效率低;③不能同時將Google key和IMEI等號碼寫入設(shè)備,需要用2個軟件分別寫入,影響效率;④對寫入的號碼無防錯功能,容易將號碼寫混,如將SN寫入到IMEI;⑤對已經(jīng)寫過的號碼無記錄,不能防止重復(fù)寫入同一個號碼;⑥不能查詢出未寫號數(shù)據(jù)。
瑞芯微是國內(nèi)新興的芯片企業(yè),國內(nèi)外對其芯片寫號研究寥寥無幾,但在嵌入式引導(dǎo)加載程序(bootloader)上研究很多。bootloader通過硬件觸發(fā)或軟件命令可以讓設(shè)備快速進(jìn)入一個微小系統(tǒng)。對智能設(shè)備寫號不需要完整的Android系統(tǒng),只需要簡單的USB通信及讀寫存儲器特殊區(qū)域即可。本文設(shè)計新的瑞芯微寫號系統(tǒng),在設(shè)備開機(jī)時通過bootloader引導(dǎo)進(jìn)入一個簡易工廠模式,使設(shè)備能進(jìn)行USB通信及對存儲器進(jìn)行讀寫即可。通過SQL獲取其對應(yīng)的所有號碼并檢查是否重復(fù)使用,將所有號碼同Google key一起寫入設(shè)備以縮短寫號時間,提高生產(chǎn)效率。
1 軟件設(shè)計需求
1.1 使用環(huán)境及功能要求
Windows XP以上系統(tǒng)均能使用,CPU 1GHz以上,內(nèi)存512MB以上,硬盤512MB以上。功能要求如下:
(1)在bootloader時引導(dǎo)進(jìn)入工廠模式,避免進(jìn)入耗時很長的Android系統(tǒng)。
(2)掃描IMEI、BT、WiFi、SN中的任意一個號,提取出對應(yīng)的其它幾個號。
(3)同時寫入IMEI、BT、WiFi、SN和Google key。
(4)同一個號普通模式下只寫一次;同一個號用管理員帳號可重復(fù)寫多次。
(5)IMEI、BT、WiFi、SN可以根據(jù)第一個號和數(shù)量自動計算全部號碼并記錄到數(shù)據(jù)庫中,也可用Excel表將這些號碼直接導(dǎo)人數(shù)據(jù)庫。
(6)IMEI、BT、WiFi、SN與工單號綁定,寫號時如果號碼對應(yīng)的工單與軟件設(shè)置不一致則進(jìn)行攔截。
(7)能查詢已寫號數(shù)據(jù),也能查詢一個生產(chǎn)工單未寫號數(shù)據(jù)。
1.2 現(xiàn)有寫號工具分析
對現(xiàn)有寫號工具各項耗時進(jìn)行測試統(tǒng)計,結(jié)果如表1、表2所示。
對表1分析如下:①啟動Android系統(tǒng)消耗總時間的60%以上,達(dá)17.5s。這樣快速進(jìn)入工廠模式寫號可縮短寫號總時間;②查看設(shè)備管理器這個動作耗時3s,可修改成由軟件判斷從而節(jié)省時間;③掃描條形碼,寫1個號時,需要4s,寫2個號時,需要5.8s,寫5個號時,需要7.7s,可修改成只掃描其中一個號,然后通過數(shù)據(jù)庫提取其它號碼,使時間減少為4s左右;④寫號時間不管寫1個號還是5個號,都需要16ms,只占總時間0.1%不到,無需優(yōu)化。因此,通過優(yōu)化軟件,可以節(jié)省的時間是:①Android系統(tǒng)啟動時間。利用bootloader進(jìn)人工廠模式估計需要7s,時間減少60%;②查看設(shè)備管理器3s及掃描多個號碼時間。
對表2進(jìn)行分析,其動作除寫key外,其它操作和寫號是一樣的。如果將寫號工具與寫key工具合并成一個工具,則寫key只需要0.03s,時間減少99.7%。另外,這兩個工具是在兩個工位上操作的,優(yōu)化成1個工位操作,節(jié)省時間會更多且節(jié)省一個操作員。
2 軟件設(shè)計與實現(xiàn)
2.1 軟件流程設(shè)計
軟件流程如圖1所示:①導(dǎo)人SN、IMEI、BT、WiFi、key等號碼的對應(yīng)關(guān)系表,或自動生成這些號碼并導(dǎo)人數(shù)據(jù)庫;②掃描設(shè)備上的任意一個條形碼,根據(jù)掃描的條形碼從數(shù)據(jù)庫中提取相對應(yīng)的其它號碼;③讀取數(shù)據(jù)庫判斷是否重復(fù)寫號;④連接設(shè)備并寫號;⑤將記錄上傳數(shù)據(jù)庫。
2.2 設(shè)備端工廠模式設(shè)計
設(shè)備啟動前先啟動bootloader,在bootloader程序中判斷是正常啟動還是進(jìn)人工廠模式。工廠模式設(shè)計成maskrom、loader兩種方式。進(jìn)入maskrom方式需要對芯片的Flash CLK引腳進(jìn)行短接;進(jìn)入loader方式,在設(shè)備開機(jī)時按住“音量+”鍵。設(shè)計成maskrom和loader兩種模式主要是應(yīng)對SMT貼片生產(chǎn)和組裝生產(chǎn)兩種情況。SMT貼片生產(chǎn)的主板沒有按鍵,所以采用CLK引腳進(jìn)行短接。
2.3 自動檢測設(shè)備連接電腦
瑞芯微終端要在正常連接電腦后才能對其進(jìn)行讀寫等操作,因此可在程序中不斷讀取設(shè)備管理器中的信息,以此判斷瑞芯微終端有無連接電腦。實現(xiàn)方法是利用setupapi.dll中的SetupDiGetClassDevs、SetupDiEnumDeviceInfo、SetupDiGetDeviceRegistryProperty、SetupDiDestroyDevicelnfoList函數(shù)獲取電腦設(shè)備管理器上的所有信息,然后判斷有無Rockusb Device信息即可。
2.4進(jìn)入Rockusb模式
只有進(jìn)入Rockusb模式后,才能對特定的VENDOR分區(qū)寫入用戶定義的數(shù)據(jù),如WiFi、SN等。如果是其它模式,則需要通過RK_SwitchToRockusb或RK_AdbToRock.usb將設(shè)備切換成loader模式。相應(yīng)代碼如下:
2.5 寫入WiFi地址數(shù)據(jù)
目前大多數(shù)芯片廠家的WiFi地址都是以6個字節(jié)的16進(jìn)制數(shù)據(jù)存儲于特定分區(qū),而掃描槍掃描或手工輸入的WiFi地址是12位字符串,因此在寫入WiFi地址前需要進(jìn)行轉(zhuǎn)換才能將其寫入特定分區(qū)內(nèi)。相關(guān)代碼如下:
2.6 寫入GoogleKey數(shù)據(jù)
Google Key密鑰數(shù)據(jù)非常重要,需要將其寫入受保護(hù)的分區(qū),以防黑客盜取。瑞芯微可選擇將GooCle Key密鑰數(shù)據(jù)寫入Android的MISC分區(qū)和vendor分區(qū),通過指定不同的nID將密鑰存儲于某個存儲區(qū)域??烧{(diào)用RK_WriteProvisioningData(USHORT nID,PBYTE pDataBuf-fer,USHORT nBufferSize,DWORD dwLayer=0)函數(shù)寫入Google Key密鑰。
2.7數(shù)據(jù)庫設(shè)計
數(shù)據(jù)庫采用ms sql 2008,設(shè)計兩個表,一個是DataTable,存儲用戶的IMEI、SN、BT、WIFI等信息。用戶在掃描一個條形碼后,可用查詢語句在此表中查詢到對應(yīng)的數(shù)據(jù)信息,實現(xiàn)掃描一次即獲得所有數(shù)據(jù),節(jié)約員工掃描時間,表結(jié)構(gòu)如圖2所示。
另一個表是Record,表結(jié)構(gòu)如圖3所示。Record用于存儲用戶的寫號記錄。當(dāng)寫號時,員工掃描條形碼,通過查詢語句聯(lián)合表Record和DataTable。如果Record表中存在此條碼記錄,則此號碼之前已經(jīng)寫過,不能重復(fù)寫號,除非利用重寫權(quán)限重寫。
3 主要界面及效果
經(jīng)過測試驗證,系統(tǒng)運(yùn)行正常,軟件主界面如圖4所示。
設(shè)備開機(jī)時按住“音量+”鍵進(jìn)入loader模式。通過掃描一個條碼后獲取其它對應(yīng)的數(shù)據(jù)并判斷是否重復(fù)寫號,然后通過USB線對設(shè)備進(jìn)行IMEI、SN、BT、WiFi、GooZlcKey寫入并記錄到數(shù)據(jù)庫中。
對新舊工具的設(shè)備啟動時間進(jìn)行測試對比,如表3所示。新寫號系統(tǒng)開機(jī)時進(jìn)入maskrom或loader模式需要7s左右,比舊工具具節(jié)約50%以上時間。
采用新舊工具進(jìn)行人工操作,測試耗時并進(jìn)行對比,結(jié)果如表4所示。新寫號系統(tǒng)通過自動檢測設(shè)備方式比舊工具節(jié)約80%以上時間。掃描條碼耗時,當(dāng)只寫一個號時,新舊工具無差異,當(dāng)寫兩個號時,新系統(tǒng)比舊工具節(jié)約30%以上時間,當(dāng)寫4個號時,新系統(tǒng)比舊工具節(jié)約40%以上時間,原因是節(jié)省了多次掃描時間。
對新開發(fā)的寫號系統(tǒng)總耗時進(jìn)行測試統(tǒng)計并與原寫號工具比對,結(jié)果如表5所示。
統(tǒng)計結(jié)果顯示,采用新寫號系統(tǒng)后,在不寫google key前提下不管寫幾個號,寫號時間都節(jié)約50%左右,這是因為設(shè)備啟動時間占總時間比值高,因此查看管理器及掃描等人工操作時間節(jié)省對總時間影響不大。在同時寫SN、WiFi、BT、IMEI和Google key情況下節(jié)約70%以上時間,同時減少一個專門寫Gooclc key的員工,因為舊工具需要用兩個工具操作。因此,采用bootloader進(jìn)人工廠模式寫號方法寫號總時間縮短12s以上,效率提高50%以上。
4 結(jié)語
本文分析了現(xiàn)有寫號工具存在的問題?;贑#的瑞芯微寫號系統(tǒng),利用bootloader、工廠模式、Android分區(qū)、SQL數(shù)據(jù)庫、C#等技術(shù)設(shè)計開發(fā)了新的寫號系統(tǒng)。實踐表明該系統(tǒng)節(jié)約了寫號時間、減少了操作員工,為企業(yè)節(jié)約了成本,提高了國產(chǎn)瑞芯微公司“一站式”解決方案競爭力。