鄧小丁 謝志能



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