APP下载

宠物定位器解决方案及其实践研究

2021-03-15陈日荣

现代营销·理论 2021年1期

摘要:本论文是针对宠物追踪器进行了具体的实践和方案详细的分析,以及对方案做出评价。随着我国人们生活水平的提高,独生子女家庭,空巢老人和丁克家庭越来越多,家庭饲养宠物越来越普遍。人们常常与宠物有很深厚的感情,宠物丢失和健康状况对主人感情和经济存在负面影响,为防止其丢失,以及对宠物健康进行监控,便是本论文方案解决研究的方向。当前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.

中国人民大学 管理科学与工程陈日荣