摘要:本論文是針對寵物追蹤器進行了具體的實踐和方案詳細的分析,以及對方案做出評價。隨著我國人們生活水平的提高,獨生子女家庭,空巢老人和丁克家庭越來越多,家庭飼養寵物越來越普遍。人們常常與寵物有很深厚的感情,寵物丟失和健康狀況對主人感情和經濟存在負面影響,為防止其丟失,以及對寵物健康進行監控,便是本論文方案解決研究的方向。當前NB-IoT的發展使得萬物互聯得以實現,其支持長時間待機,對于網絡連接要求高的移動設備來說是個很好的解決辦方法,并結合定位這個剛需的功能,在寵物追蹤器產品特點上要求低功耗,續航時間長,體積小的特性,高通公司最新發布的萬物互聯應用芯片MDM9205是個合適的解決方案。
關鍵詞:追蹤器;寵物健康;NB-IOT;eSIM
第一章硬件設計
本解決方案硬件設計是以高通NB-IOT最新版本多模芯片MDM9205,支持標準藍牙5.0協議棧低功耗芯片CSR1020,QCA4004為WIFI芯片+BTS輔助定位,stk8321 g-sensor運動健康算法傳感器,可選插SIM卡/ eSIM組成系統硬件作為最終方案。MDM9205可支持全球多模網絡,內部集成全球多種定位功能,以及Cortex A7應用代碼處理器,滿足多種應用場景。相比MDM9206在空閑模式可實現更低的功耗,而且芯片尺寸降低了一半,更具優越的成本效益。
MDM9205:MDM9205是高通公司繼MDM9206后,推出的多模低功耗的調制解調器,包括全球多模LTE category M1(eMTC)和NB2(NB-IoT)以及2G/E-GPRS,相比上一代具有同樣應用場景的MDM9206在空閑模式下功耗降低了70%,芯片的射頻收發范圍從450MHz 到 2.1GHz,新增了23個波段。并繼承MDM9206的定位功能、硬件安全、電池電壓管理和開發工具,但高通MDM9205尺寸只有MDM9206的50%,意味著同樣容量的電池其續航能力大大提升,產品的體積可做得更精巧。
集成式全球導航衛星系統(GNSS)定位,支持GPS,北斗、格洛納斯(GLONASS)和伽利略,采用GNSS/LTE共享天線。
高通MDM9205 集成Cortex A7處理器,主頻高達800MHZ, 可支持ThreadX和AliOS Things RTOS實時操作系統,應用處理器無需使用外置微控制器,從而提升成本效益和終端安全性,減少主板面積。
基于硬件的安全,支持硬件的可信根啟動,高通可信執行環境,硬件加密,存儲和調試安全機制。
QCA4004:方案中,當追蹤器處于室內時,不能通過定位功能獲取經緯度信息的情況下,主控MDM9205 發送掃描指令給QCA4004獲取周邊WIFI熱點信息,QCA4004回傳給MDM9205后,MDM9205把熱點信息整理后,外加基站相關信息,再從谷歌/高德/百度/騰訊地圖獲取WIFI定位位置信息用于室內輔助定位使用。QCA4004也是高通推出的面向物聯網應用的低功耗的WIFI解決方案,內部集成了TCP/IP協議和安全連接協議SSL,支持IEEE 802.11a/b/g/n和2.4/5.8GHz雙頻段,是一個低功耗,低成本,低復雜性的soc,能夠獲得全功能的internet連接和可靠的信息交換。
CSR1020:藍牙芯片CSR1020用于定位器與手機進行近距離的數據交換,如設備綁定,OTA固件升級,eSIM profile文件的傳輸,以及防丟功能。高通CSR1020是高通藍牙低功耗單模芯片,具有豐富的外設支持和低功耗模式。CSR1020支持最高60 KB的客戶應用測試存儲和80 KB RAM,并且支持外部閃存存儲以實現額外的代碼和數據存儲。具有可選的藍牙5.0標準版本協議棧,支持高達2MB的外部閃存緩存運行空間。本方案中,為提高設備數據傳輸到服務器中的速度,降低主控芯片MDM9205數據壓力,減少設備的網絡功耗。方案的第二版本固件將利用藍牙把數據傳輸到手機中,再通過手機把數據透傳到服務器。這將是利用藍牙CSR1020進一步優化定位器的續航能力和用戶體驗。
eSIM:eSIM指的是嵌入式SIM卡(Embedded-SIM)。傳統概念是將SIM卡插到設備卡槽上,作為獨立的器件可隨時更換或者移除,而eSIM無需插入物理SIM卡,用戶也無需去業務廳特意排隊辦理,可以靈活的選擇運營商套餐。當設備檢測到用戶在另外一個國家時,內置的eSIM自動切換運營商,如果用戶是經常出差國外的,這種設計不僅非常方便實用,而且大大地降低個人資費。由于eSIM不再獨立的設置SIM插槽,使用eSIM技術的設備將具有更加輕便更加薄的機身,消費自己考慮到成本和運營商的優勢,可以隨意切換運營商。
SIM卡作為實體卡確實存在一些問題,外置的芯片經常會因為磨損或者接觸不良,震動松開等影響手機的使用,SIM也會受到設備體積的影響越來越大,比如運動手環,兒童手表等穿戴式設備。如果是使用eSIM,以上這些問題都得到解決。本方案中,對于追蹤器這種體積受限的設備來說,也無疑是很好的解決方法。
第二章系統軟件
開發環境:基于Linux環境下進行開發,高通提供交叉編譯鏈(每個模塊需要的編譯工具可到高通官網下載)和技術支持指導文檔進行搭建交叉編譯環境,使用shell腳本和python腳本結合進行編譯,此外還需向高通購買licence才能完成最終的編譯和鏡像文件輸出,否則,編譯報錯缺省licence,無法完成開發任務。
在Windows系統環境下,使用高通提供的開發套件,如QFIL進行燒錄固件,QXDM查看log,QPST抓取dump等。此外,個人需要注冊,并由高通驗證賬號才能使用,并且登陸認證才能使用以上Windows開發軟件。高通官方網址下載資料,以及要求高通技術人員提供支持,也必須使用申請到的賬號才能完成相關流程。
編譯規則:在Linux系統(建議使用Ubuntu,本人使用版本是16.04)環境下,安裝系統自帶軟件shell和python2.7.6軟件,MDM9205 ThreadX編譯架構與傳統的Linux和單片機編譯器存在差異,不需要使用Makefile和config、config.mk、Android.mk文件進行修改編譯規則和構建編譯目錄,架構編譯使用shell腳本和python語句來完成框架,使用scons+api文件組成樹狀編譯架構,修改scons+api文件可完成編譯目錄和文件的添加。在每個模塊里build/ms目錄生成編譯緩存文件、o文件、日志信息,以及調試所需dump信息。
代碼框架:系統軟件目錄下,每個文件夾對應代碼框架中相應的模塊,包括boot loader、trustzone、rpm、modem、app、common、config等。進入不同的目錄可看到相應模塊的源碼,及完成相應輸出模塊編譯的腳本文件。
boot loader是啟動操作系統內核前運行的一小段程序,通過這段小程序,可以初始化芯片硬件外設、內存映射、系統時鐘等,及外部芯片,如網卡、顯示屏、LED燈等,從而為啟動操作系統內核和人機交互做好環境準備。當芯片硬件環境初始化完成后,boot loader將會拷貝內核和傳遞相關的參數給系統內核,引導并啟動操作系統內核,從此不再運行boot loader程序,把控制權轉交給操作系統,boot loader的任務從此完成。編譯mdm9205 boot loader,進入boot_images/QcomPkg/目錄下,向buildit.py傳遞編譯參數并執行該python腳本可完成boot loader編譯,編譯最終輸出鏡像文件為sbl1.mbn。
apps_proc文件夾是源碼目錄中最重要的目錄,包括有系統內核代碼,ThreadX系統API接口,定位業務邏輯處理代碼,qca4004業務邏輯處理代碼,網絡數據服務,應用工具,高通官方qcli demo 源碼,用戶功能定制代碼等。在apps_proc目錄中,用戶可以添加自定義目錄,在自定義目錄下添加build文件夾新增scons+api文件完成編譯規則的添加。進入apps_proc/build/ms/目錄下,執行build.sh腳本,并傳入BUILD ID和編譯選項可完成對應用的編譯,編譯完成最終輸出鏡像文件為apps.mbn。
modem_proc目錄是代碼量最多,編譯時間最長的模塊,也是整個芯片源碼最具核心部分,進入/modem_proc/build/ms/目錄下,初始化編譯變量,和導入license認證文件路徑,執行build.sh腳本,同時傳遞BUILD ID和編譯選項可完成對modem的編譯,編譯完成最終輸出鏡像包括qdsp6sw_paging.bin,qdsp6sw_paging.bin,qdsp6sw.mbn三個文件。
rpm資源電源管理(Resource Power Manager),高通平臺額外加的一塊電源管理芯片,與AP端芯片打包在一起,但其是一個獨立的ARM內核,加入rpm是為了控制整個電源相關的shared resources,如ldo,時鐘,總線,電源軌,實現最大的功率節省,負責與SMP,MPM交換,進入睡眠或者喚醒整個系統。進入rpm_proc/build/目錄,初始化環境變量,和導入license認證文件路徑,執行build_9x05.sh腳本可以完成rpm的編譯。編譯完成最終輸出鏡像文件為rpm.mbn。
ThreadX:ThreadX是由 Express Logic 公司開發的RTOS實時操作系統,和其他許多的RTOS一樣,ThreadX是多任務操作系統,應用在嵌入式操作系統產品中,大部分開發工作都是在宿主機(windows或者Linux)上完成,然后通過交叉編譯生成鏡像文件燒錄到目標機器上運行。
ThreadX采用搶占式調度機制,快速的中斷響應,獨立的內存管理,支持線程間通訊&互斥,事件&線程同步,支持優先級繼承。規模小,實時性強,可靠性高,使用簡單等特點。
ThreadX可選配有TCP/IP協議棧NetX,文件系統FileX,USB協議棧USBX,以及GUI SDK開發包PEGX。
ThreadX特性:
(一)優先級調度,ThreadX和其他的嵌入式RTOS一樣,都是具有內核化的,具有上下文切換、時間片輪、硬件中斷搶占,基于優先等級的調度以及繼承和翻轉機制等。在優先級調度中有一個特有特征是搶占閾值。用一個優先級上限來消除一定的搶占優先操作。這種設計是一種相對增強和靈活的優先級別調度機制,可以在時間輪轉中的資源分配和優先級調度中實現折衷。
(二)低功耗,大部分處理器都可以進入低功耗模式,減少能量消耗,特別是對于電池供電設備來說,這種低功耗模式是一種中斷等待模式,通過操作系統的中斷喚醒切換回到正常的工作模式,操作系統性能一個重要的指標就是通過定時器來編程判斷低功耗模式,并設置精確的時間刻度來實現。ThreadX就是通過特定的服務程序來調整系統定時到指定的時間片,這樣能夠實現非常苛刻的時間要求,保證芯片的低功耗切換。
(三)內存管理,ThreadX使用兩種內存管理方式來實現資源管理,內存字節池和內存塊池。內存字節池是一塊連續字節塊,以字節為單位申請內存,可以根據線程需求分配任何字節大小內存塊,ThreadX對字節池的使用和數量沒有限制。但這種連續內存分配會帶來碎片化,ThreadX通過碎片整理可盡量減少額外的開銷。內存塊池,在使用內存前,先申請一定數量大小相等的內存塊留著備用,當有新的內存需求時,就從內存池中分出一部分內存塊,若內存塊不夠用再繼續申請新的內存,內存塊池的優點是使得內存分配效率得以提升。ThreadX用一個FIFO順序來為線程提供內存,通過鏈表操作簡化內存分配的尋址方法以提高實時性。
(四)線程通訊和互斥,ThreadX提供32位信號量進行通信,信號量除了互斥,還提供事件通知以及線程同步,信號量使得訪問者對資源有序的訪問。互斥量一般用于對臨界區的控制,具有線程的所有權,可靠性更高,互斥使得某一資源只允許一個訪問者使用,具有唯一性,但信號量在速度上更勝一籌。ThreadX使用消息隊列進行線程之間的通訊,遵循先進先出(FIFO)的原則。
第三章 方案總評
網絡與定位共存:MDM9205有效的解決了GSM+NB+GPS的芯片集成問題,芯片占用體積大大減少,而且在功耗方面MDM9205比起其他芯片存在不少優越性,能夠讓產品的占用空間和耗能都做到極致。
MDM9205芯片一大特點是網絡與GPS公用天線,但這會存在短板問題,當設備獲取定位信息時,網絡是被關閉,設備無法進行通訊;芯片重啟后第一次獲取定位信息是冷啟動,冷啟動GPS獲取定位時間較長(1.5-2分鐘),導致設備無法接收網絡發過來的數據,設備長時間存在無法控制的狀態,用戶不能及時通過網絡發送數據命令來控制設備;打開GPS獲取定位結束關閉GPS后,網絡需要恢復的時間較長,這都是不利于功耗以及用戶的體驗。
整體功耗:GPS功耗,從其他定位芯片可知,GPS獲取定位時,消耗電流約為20-30mA,MDM9205單獨開啟GPS定位電流約為70mA,這定位消耗的電流值是其他定位芯片的2-3倍,當GPS定位是冷啟動時候,需要較長時間,那么將會消耗較多的電量,不利于設備的續航時間。
NB網絡經常發生基站切換,基站切換后,設備被分配的IP地址發生變化,導致MQTT連接被服務器終止,若再次連接服務器將會使主控芯片退出睡眠模式,再次進行正常模式下工作導致消耗電流,電池使用時長將會縮短。
展望:由于NB網絡覆蓋不是很全面,使用過程中某些地方無法通訊,也導致設備在搜索/切換網絡過程中額外消耗功耗,芯片在切換網絡過程需要時間較長,給用戶體驗不是很流暢。
當前MDM9205基線不穩定,NB網絡經常斷開,導致接收數據時延長短不一或者卡頓現象時有發生,網絡不穩定情況下主控被時常喚醒,未能安穩的進入睡眠模式,導致功耗額外的被消耗,待機時間長度問題難以保證。NB網絡環境中GPS星歷下載基本都失敗,定位時間較長,功耗較多。
RAM和閃存是封裝在芯片內部,不是外掛RAM,因此內存空間有限,做一些較大耗內存的算法,拓展更多的功能或者較大數據收發受限。
本產品經過實際的應用測試,續航時間約為8-9天,整體上續航能力還是比較短,產品最初的設計目標是14天。產品在正常使用場景下測試使用時間只有1-2天左右,功能耗電太快,充電頻率過高,還需繼續優化。
致謝:感謝一直為這個項目早日交付加班加點的同事,也感謝項目中本人有一些不懂的地方進行給我耐心解答的同事。
聲明:因本人工作經驗年限或學習能力有限,對知識的涉及廣度不足,本論文的解決方案可能并非是當前最佳解決方案,論文也可能存在一些錯漏。在提交論文的當天,項目還在緊張的進行中,論文中提到的一些問題尚未得到解決,芯片廠家和本人所在開發團隊還在繼續優化項目。若引用到了你的知識卻未列入參考文獻中,歡迎指正。
參考文獻:
[1]楊鋒.物聯網終端寵物定位器的解決方案及實踐研究[D],南京郵電大學碩士論文,2018.
[2]趙小飛.物聯網智庫CEO,物聯網沙場“狙擊槍”,電子工業出版社,2018.01.
[3]周雅.高通9205芯片:我為物聯網而生[EB/OL].?www.techwalker.com/2018/1225/3114558.shtml 2018.12.25.
中國人民大學 管理科學與工程陳日榮