谈谈OTA(1)

以前还从来没写过技术类博客,今天新开一个栏目叫OTA,这三个字母就是我现在从事的工作了。OTA是Over the Air的缩写,我呢,就是做OTA服务器的。那么OTA到底是干什么的呢,它最主要的作用就是往你的SIM卡和手机动态安装一些程序或者更改一些配置,以前主要是用发短信的方式来做这件事,不过随着3G网络的到来,现在也会用BIP或者CATTP这些速度更快的协议对SIM卡发送信息了。我们平时发送的短信都是文本短信,这里的短信一般都是二进制短信,它里面封装了一个或多个APDU,手机收到短信后会把短信内容发给SIM卡,然后SIM卡会根据APDU来执行相应的操作,然后把结果返回。可能有一天你打开手机的时候,发现手机里怎么突然多了一个菜单或者手机里面的某些配置变了,这一般就是OTA在神不知鬼不觉的时候干的了。以前你要往SIM卡里面加点东西可能要跑一趟营业厅,但是现在不用了,一条短信就可以搞定。

今天首先介绍一些基本概念跟术语把,不过因为我主要做服务器端,对卡端也是在学习中,所以这些描述可能会有错误。首先谈谈SIM卡,SIM卡就是智能卡的一种,从它的全称Subscriber Identity Module也可以看出,它保存的主要是用户的身份信息,SIM卡里面基本就是一个非常小型的电脑,它有CPU, ROM,RAM和EEPROM等等。SIM卡里面也有文件的概念,是按文件夹的形式组织的,根目录叫做MF(Master File),目录叫DF(Dedicated File),文件叫做EF(Elementary File)。像你的短信,电话簿等等都是以文件的形式存在SIM卡中的。在2G时代SIM卡里面的操作系统跟应用基本上是分不开的,在3G时代操作系统跟应用分开了,也就是说卡里面不仅可以装通信有关的应用,还可以装跟银行等等有关的应用(当然只是技术上可行,真正实现还要这些公司相互协调)。这样的卡叫做USIM。如果描述的东西对2G3G卡都适用的时候,一般写成(U)SIM。

在手机里面有一个读卡器,读卡器跟(U)SIM卡之间是半双工、master-slave的通信方式,读卡器给卡发送一个APDU,也就是一个Command,然后卡执行这个APDU,然后返回一个成功或者失败的响应。然后手机发送下一个命令,就这样直到关机。

然后介绍几个术语,我们的手机号一般叫做MSISDN,在卡里面有一个文件保存了IMSI,在移动的服务器上保存了MSISDN和IMSI的对应关系,比如如果你的卡丢了,去移动补办一张新卡,移动只需要把新卡的IMSI跟你的MSISDN重新关联起来就行了,旧卡就作废了。在卡里面还有一个东西叫做KI,这就是你的手机卡的密钥了,它跟IMSI一起用来登录你的无线网络。看过《伯恩的身份》吗,里面伯恩复制一张手机卡主要就是复制两个东西:IMSI和KI,有了这两个东西,你就可以复制别人的SIM卡了。IMSI可以通过普通的APDU读出来,但是KI是读不出来的,如果要解密只能往卡上发大量的明文,然后根据KI加密后的密文进行比对来解出KI。 OK,扯的太远了,手机发送一条短信一般是发到短信中心(SMSC),然后短信中心转发给接收方。如果手机发送一条短信,这条短信就叫做MO(Mobile Originated),如果手机收到一条短信,这条短信就叫做MT(Mobile Terminated)。说了这么多,是不是很枯燥?好,要是有人有兴趣的话我下次再讲点^_^
### 车载系统测试与Linux相关的面试题 #### 关于车载系统的测试 车载系统测试通常涵盖了多个方面,包括但不限于功能测试、性能测试以及专项测试。以下是几个常见的面试题目: 1. **车载系统中的主要测试模块有哪些?** 主要测试模块可以划分为中控、仪表、底盘控制、远程车控、T-BOX通信单元、诊断接口等部分[^1]。 2. **UDS(Unified Diagnostic Services)刷写的具体实现方式是什么?** UDS刷写一般通过特定的诊断协议完成,可能涉及到CAN总线或其他通信协议的支持。在实际操作中,可以通过CAPL脚本或者Python脚本来调用相应的服务ID来实现刷写逻辑[^3]。 3. **OTA(Over-The-Air)升级过程中使用的工具和技术栈有哪些?** OTA升级可能会依赖诸如Jenkins这样的CI/CD工具来进行版本管理和部署工作流的设计;同时也会利用Canoe或者其他类似的仿真平台模拟真实环境下的数据交互场景[^2]。 4. **如何设计针对某项具体功能(如车窗开启) 的端到端链路测试方案?** 设计此类测试时需考虑从用户界面触发动作直至底层硬件响应整个链条上的各个环节, 并确保每一步骤均能正常运作并满足预期行为准则[^4]. 5. **描述一次解决复杂问题的经历及其最终成果。** 这类开放型问题是考察候选人在面对挑战时解决问题的能力。例如,在某个项目里发现由于网络延迟导致某些关键消息丢失从而影响整体业务流程顺利完成的情况,则可通过优化重传机制等方式加以改善. #### 关于Linux的知识点提问 对于从事嵌入式开发尤其是车联网领域的人来说掌握一定水平的基础操作系统原理尤为重要: 1. **解释Shell命令管道(|), 重定向(>, >>,< )的作用及区别在哪里 ? 给出实例说明 .** Shell 命令管道用于将前一条指令的标准输出作为后继程序的标准输入;而文件读写则分别对应覆盖写入(< ,>) 和追加模式 (>>). 示例如下所示 : ```bash echo "hello world" | grep 'world' cat file.txt > newfile.txt # 将file.txt的内容复制到newfile.txt中, 如果后者已存在会被替换掉. ``` 2. **列举几种常见进程间通讯方法(IPC),它们各自适用场合有何不同?** IPC 方法主要包括信号(signal),共享内存(shared memory),套接字(socket),命名管道(FIFOs)等等 。其中前者适合简单通知事件传递 ,而后两者更适合大量数据交换的需求 . 3. **谈谈对单片机编程的理解以及它同普通PC应用相比存在的差异之处都有哪些呢?** 单片机往往运行在一个资源受限环境下因此需要特别关注效率问题比如减少不必要的计算开销尽可能使用汇编语言编写时间敏感的部分代码片段以获得最佳性能表现[ ^3 ]. 4. **如果让你负责构建一套完整的持续集成(CI)/持续交付(CD)pipeline,请问你会选用哪款开源框架并简述理由?** Jenkins 是目前较为流行的选择之一因为它具备强大的插件生态系统能够轻松扩展支持几乎所有的主流VCS(repository management tools like Git/Subversion etc.) 及build systems such as Maven/Ant/NPM/Yarn... 同时还提供了图形化配置界面降低了入门门槛便于团队协作共同维护整条流水生产线程结构图.[ ^2 ] --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值