<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[heyangge的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/heyangge</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; heyangge]]></copyright><item><title><![CDATA[C之switch小问题]]></title><link>https://blog.youkuaiyun.com/heyangge/article/details/135028724</link><guid>https://blog.youkuaiyun.com/heyangge/article/details/135028724</guid><author>heyangge</author><pubDate>Sat, 16 Dec 2023 09:37:16 +0800</pubDate><description><![CDATA[因为C语言会忽视 switch语句与第一个case之间的code，也就是根本不会执行 “num=100;为什么会是100呢？]]></description><category></category></item><item><title><![CDATA[C之不小心就犯错误1-隐式类型转换]]></title><link>https://blog.youkuaiyun.com/heyangge/article/details/135022984</link><guid>https://blog.youkuaiyun.com/heyangge/article/details/135022984</guid><author>heyangge</author><pubDate>Fri, 15 Dec 2023 18:09:58 +0800</pubDate><description><![CDATA[根据C语言隐式类型转换的原理，如果是int型与uint型进行比较（其它类型同理），则会将int型数据转换为uint型，则-1变成了 2^32-1 = 4294967295。]]></description><category></category></item><item><title><![CDATA[SIM初始化流程（转载）]]></title><link>https://blog.youkuaiyun.com/heyangge/article/details/134978061</link><guid>https://blog.youkuaiyun.com/heyangge/article/details/134978061</guid><author>heyangge</author><pubDate>Wed, 13 Dec 2023 17:38:27 +0800</pubDate><description><![CDATA[ATR(Answer To Reset)：复位应答信号，有SIM卡传输给终端，包括SIM卡自身的一些信息，比如支持的传输速率，传输模式等。当SIM卡被插入设备中时，设备会向SIM卡发送一个复位命令，以获取SIM卡的响应。SIM卡重确认动作，这是SIM协议中自带的一个功能，即在SIM卡和手机交互讯息完成，后面没有数据交换了，相当于SIM模块待机状态，这时SIM模块和手机有个不间断的重复确认动作。SIM卡会回复一个ATR，其中包含有关卡片的信息，例如卡片类型，速率，电压等。一旦 RST信号从读卡器发送到卡，]]></description><category></category></item><item><title><![CDATA[SIM激活、重置和类别选择]]></title><link>https://blog.youkuaiyun.com/heyangge/article/details/134976404</link><guid>https://blog.youkuaiyun.com/heyangge/article/details/134976404</guid><author>heyangge</author><pubDate>Wed, 13 Dec 2023 17:13:29 +0800</pubDate><description><![CDATA[]]></description><category></category></item><item><title><![CDATA[ISO/IEC 7816组成]]></title><link>https://blog.youkuaiyun.com/heyangge/article/details/134973534</link><guid>https://blog.youkuaiyun.com/heyangge/article/details/134973534</guid><author>heyangge</author><pubDate>Wed, 13 Dec 2023 15:28:46 +0800</pubDate><description><![CDATA[ISO/IEC 7816-10：带触点的卡  同步卡的电子信号和复位应答。ISO/IEC 7816-12：带触点的卡  USB电气接口和操作程序。ISO/IEC 7816-12：规定了USB卡的电气接口和操作程序。ISO/IEC 7816-3：带触点的卡片  电气接口和传输协议。ISO/IEC 7816-10：规定了同步卡的电子信号和复位应答。ISO/IEC 7816-2：带触点的卡片  触点的尺寸和位置。ISO/IEC 7816-1规定了带触点卡的物理特性。ISO/IEC 7816-8：安全操作命令。]]></description><category></category></item><item><title><![CDATA[SIM卡的主要功能]]></title><link>https://blog.youkuaiyun.com/heyangge/article/details/134970671</link><guid>https://blog.youkuaiyun.com/heyangge/article/details/134970671</guid><author>heyangge</author><pubDate>Wed, 13 Dec 2023 14:05:44 +0800</pubDate><description><![CDATA[1，手机启动时，根据SIM卡的类型，进入SIMRecords, 开始探测SIM卡的状态，因为，有些SIM卡会设置有PIN码，如果SIM卡有PIN码的话，手机会弹出输入PIN码的框，等待用户进行解码，注意，这个时候，SIM卡本身是通过PIN码来保护的，PIN是一个4～8位的个人密码，只有当用户输入正确的PIN码时，SIM卡才能被启用，移动终端才能对SIM卡进行存取，也只有PIN认证通过后，用户才能上网通话。（2）PIN2码：PIN2码也是SIM卡的密码，它跟网络的计费和SIM卡内部资料的修改有关。]]></description><category></category></item><item><title><![CDATA[SIM卡内部结构及外部物理接口]]></title><link>https://blog.youkuaiyun.com/heyangge/article/details/134969005</link><guid>https://blog.youkuaiyun.com/heyangge/article/details/134969005</guid><author>heyangge</author><pubDate>Wed, 13 Dec 2023 12:24:58 +0800</pubDate><description><![CDATA[CPU把从串行通信单元获取的信息临时存放在RAM，再利用ROM中的程序对数据进行处理，然后存储到EEPROM中，同时也可能会产生应答信号再通过串行通信单元发出，完成交互。存放整个文件系统和应用程序读写的信息，比如号码、短信等数据并可擦写。• VPP：编程电压，现在已经基本不用 （目前悬空）存放片内操作系统，用户不可操作。用于信号通信，信息传递的“桥梁”控制SIM卡的运算和操作。存放计算过程中的临时数据。• CLK：时钟输入信号。• I/O：数据输入输出。RESET：复位信号。]]></description><category></category></item><item><title><![CDATA[UICC协议层结构]]></title><link>https://blog.youkuaiyun.com/heyangge/article/details/134967436</link><guid>https://blog.youkuaiyun.com/heyangge/article/details/134967436</guid><author>heyangge</author><pubDate>Wed, 13 Dec 2023 11:45:58 +0800</pubDate><description><![CDATA[与计算机网络的协议层概念一样，UICC也有自己的协议层概念，只是相对简单一些。]]></description><category></category></item><item><title><![CDATA[3GPP、ETSI、ISO等组织]]></title><link>https://blog.youkuaiyun.com/heyangge/article/details/134963365</link><guid>https://blog.youkuaiyun.com/heyangge/article/details/134963365</guid><author>heyangge</author><pubDate>Wed, 13 Dec 2023 09:17:44 +0800</pubDate><description><![CDATA[（1）3GPP（The 3rd Generation Partnership Project）：3GPP是一个由电信标准制定组织组成的合作伙伴计划，旨在制定和推广第三代移动通信标准（如3G、4G和5G），以确保全球移动通信系统的互操作性和兼容性。ISO制定的标准通常是通用的，适用于各种行业和领域。ISO和3GPP在移动通信领域有一定的关系，因为3GPP制定的移动通信标准通常需要符合ISO的质量管理标准。3GPP负责颁布与UICC相关的协议，包括UICC应用的接口标准和UICC应用的功能标准。]]></description><category></category></item><item><title><![CDATA[ESIM了解]]></title><link>https://blog.youkuaiyun.com/heyangge/article/details/134951253</link><guid>https://blog.youkuaiyun.com/heyangge/article/details/134951253</guid><author>heyangge</author><pubDate>Tue, 12 Dec 2023 15:44:18 +0800</pubDate><description><![CDATA[eSIM标准的第一版于2016年3月发布，第二版于2016年11月发布。苹果公司在其2017年9月公开的Apple Watch Series 3及以后之产品中加入了eSIM功能。苹果还在iPhone XS、iPhone XS Max、iPhone XR和后来的双卡双待产品中加入了eSIM功能。iSIM与eSIM相似，但将功能集成到单片机当中，而非独立的芯片。eSIM具有更高的便利性与安全性，运营商也能提供更灵活的服务方案，是移动通信未来趋势。使用eSIM的手机、穿戴式设备、车载设备及未来物联网等设备可以。]]></description><category></category></item><item><title><![CDATA[SIM800模块AT命令-状态查询]]></title><link>https://blog.youkuaiyun.com/heyangge/article/details/134860805</link><guid>https://blog.youkuaiyun.com/heyangge/article/details/134860805</guid><author>heyangge</author><pubDate>Thu, 07 Dec 2023 17:31:29 +0800</pubDate><description><![CDATA[（若已设置命令“AT+CREG=1”和“AT+CGREG=1”时，模块在注册GSM和PGRS网络成功或发生变化时，将主动上报其注册状态，如上报结果：+CREG：2或+CGREG：2。4、向模块串口发送“AT+CGREG”指令，检查GPRS网络注册状态，发送成功时，3、向模块串口发送“AT+CREG”指令，检查GSM网络注册状态，发送成功时，”指令，检查SIM状态，SIM正常时，2、向模块串口发送“AT+CSQ”指令，检查网络信号强度，命令发送成功时，返回：+CGREG：0，1。返回：+CREG：0，1。]]></description><category></category></item><item><title><![CDATA[MTU TCP-MSS（转载）]]></title><link>https://blog.youkuaiyun.com/heyangge/article/details/134846490</link><guid>https://blog.youkuaiyun.com/heyangge/article/details/134846490</guid><author>heyangge</author><pubDate>Thu, 07 Dec 2023 09:19:24 +0800</pubDate><description><![CDATA[如果太小，因为协议一定要在包(或帧)上加上包头，那实际传送的数据量就会过小，这样也划不来。MSS是传输层TCP协议范畴内的概念，顾名思义，其标识TCP能够承载的最大的应用数据段长度，因此，MSS=MTU-20字节TCP报头-20字节IP报头，那么在以太网环境下，MSS值一般就是1500-20-20=1460字节。通过在TCP连接之初，协商MSS值巧妙的解决了避免端系统分片的问题，但是在复杂的实际网络环境下，影响到IP报文分片的并不仅仅是发送方和接收方，还有路由器、防火墙等中间系统。用来通知对方所能接受。]]></description><category></category></item><item><title><![CDATA[优雅地打印 HEX 数据]]></title><link>https://blog.youkuaiyun.com/heyangge/article/details/134799922</link><guid>https://blog.youkuaiyun.com/heyangge/article/details/134799922</guid><author>heyangge</author><pubDate>Tue, 05 Dec 2023 10:04:29 +0800</pubDate><description><![CDATA[每行每 8 个数据多增加一个空格，数据展示更加直观。]]></description><category></category></item><item><title><![CDATA[AT COMMAND（转载）]]></title><link>https://blog.youkuaiyun.com/heyangge/article/details/134798463</link><guid>https://blog.youkuaiyun.com/heyangge/article/details/134798463</guid><author>heyangge</author><pubDate>Tue, 05 Dec 2023 09:56:54 +0800</pubDate><description><![CDATA[AT（Attention）指令是由发明的，所以也称为。AT 指令最初是用来指导 modem 工作的，后面随着技术的发展，低速 modem 已经退出了市场，但 AT 指令却不断发展，并且在今天 AT 指令依旧扮演这非常重要的角色。虽然在 PC 端、手机上已经没有了 AT 的使用，但其却在嵌入式行业里各类联网模块中发挥着重要的作用，而且不仅仅只应用在蜂窝模块，还应用到了 WiFi、BLE 等模块中。目前的 AT 指令着重应用在蜂窝模块、WiFi 模块、BLE 模块中，目的是为了简化嵌入式设备联网的复杂度。]]></description><category></category></item><item><title><![CDATA[TCP报文解析]]></title><link>https://blog.youkuaiyun.com/heyangge/article/details/134737577</link><guid>https://blog.youkuaiyun.com/heyangge/article/details/134737577</guid><author>heyangge</author><pubDate>Fri, 01 Dec 2023 16:27:42 +0800</pubDate><description><![CDATA[最常见的可选字段是最长报文大小，又称为MSS（Maximum Segment Size），每个连接方通常都在通信的第一个报文段（为建立连接而设置SYN=1的那个段）中指明这个选项，它表示本端所能接受的最大报文段的长度。（例如：一个报文段的序号为300，此报文段数据部分共有100字节，则下一个报文段的序号为400.）所以序号确保了TCP传输的有序性。在处理超时的许多情况中，也会发送不带任何数据的报文段。即ack，占4个字节，指明下一个期待收到的字节序号，表明该序号之前的所有数据已经正确无误的收到。]]></description><category></category></item><item><title><![CDATA[TCP网络常见名词]]></title><link>https://blog.youkuaiyun.com/heyangge/article/details/134735829</link><guid>https://blog.youkuaiyun.com/heyangge/article/details/134735829</guid><author>heyangge</author><pubDate>Fri, 01 Dec 2023 15:22:52 +0800</pubDate><description><![CDATA[例如，HTTP、FTP、MQTT等广为使用的应用协议中所使用的端口号就是固定的，这些端口号被称之为知名端口号。知名端口号一般由0~1023的数字分配而成，除知名端口号，还有一些端口号也被正式注册，它们分布在1024到49151的数字之间，不过这些端口号可以用于任何通信用途。例如，53号端口在TCP与UDP都用于DNS服务，而80端口用于HTTP通信，就目前来看，由于HTTP通信必须使用TCP，因此UDP的80端口号并未投入使用。端口号由其使用的传输层协议决定。因此，不同的传输协议可以使用相同的端口号。]]></description><category></category></item><item><title><![CDATA[TCP简介及特性]]></title><link>https://blog.youkuaiyun.com/heyangge/article/details/134734169</link><guid>https://blog.youkuaiyun.com/heyangge/article/details/134734169</guid><author>heyangge</author><pubDate>Fri, 01 Dec 2023 14:34:16 +0800</pubDate><description><![CDATA[TCP是Transmission Control Protocol的简称，中文名是传输控制协议。它是一种面向连接的、可靠的、基于IP的传输层协议。两个TCP应用之间在传输数据的之前必须建立一个TCP连接，TCP采用数据流的形式在网络中传输数据。TCP为了保证报文传输的可靠性，会对每一个包进行编号，同时序号也能保证接收端在接收数据的时候可以按序接收。接收端在接到数据后会返回一个相应的应答信号，如果发送端在合理的往返延时内未接收到应答信号，那么对应的数据将会重传。在数据确认无误后才会将数据传递给应用层。]]></description><category></category></item><item><title><![CDATA[宏定义中 ## 和 # 的作用]]></title><link>https://blog.youkuaiyun.com/heyangge/article/details/134706805</link><guid>https://blog.youkuaiyun.com/heyangge/article/details/134706805</guid><author>heyangge</author><pubDate>Thu, 30 Nov 2023 11:21:31 +0800</pubDate><description><![CDATA[是“字符串化”的意思。出现在宏定义中的#是把跟在后面的参数转换成一个字符串，也就是在宏参数的开头和末尾添加引号。可以发现，即使给宏参数“传递”的数据中包含引号，使用 # 仍然会在两头添加新的引号，而原来的引号会被转义。## 称为连接符，用来将宏参数或其他的串连接起来。]]></description><category></category></item><item><title><![CDATA[FreeRTOS：TCB_t结构体解读（转载）]]></title><link>https://blog.youkuaiyun.com/heyangge/article/details/134686021</link><guid>https://blog.youkuaiyun.com/heyangge/article/details/134686021</guid><author>heyangge</author><pubDate>Wed, 29 Nov 2023 11:48:30 +0800</pubDate><description><![CDATA[栈的生长方式可以分为两种，一种是向下生长，一种是向上生长，FreeRTOS中用portSTACK_GROWTH来区分这两种生长方式，portSTACK_GROWTH大于0为向上生长，小于零为向下生长。在TCB_t结构体的定义中可以看到根据栈的生长方式的不同，其将具有不同的成员变量pxEndOfStack，在这里说明一下栈的生长方式是如何定义的，以及为何生长方式会存在pxEndOfStack这一变量的差异。阻塞状态：直到某些条件达成才会重新进入就绪态等待获得执行权，否则不会执行的任务。]]></description><category></category></item><item><title><![CDATA[vTaskSuspendAll()和xTaskResumeAll()]]></title><link>https://blog.youkuaiyun.com/heyangge/article/details/134667502</link><guid>https://blog.youkuaiyun.com/heyangge/article/details/134667502</guid><author>heyangge</author><pubDate>Tue, 28 Nov 2023 14:50:16 +0800</pubDate><description><![CDATA[如果一个临界区执行时间过长而不适合通过关闭中断（vTaskEnterCritical）的方式来保护临界区的话，可以通过挂起调度器来保护临界区。系统维护一个全局变量uxSchedulerSuspended的计数值，当其大于0的时候禁止调度，等于0的时候表示允许调度。如果调度器挂起的话（执行vTaskSuspendAll()），当前正在执行的Task会一直继续执行，内核不再调度（），直到该任务调用了xTaskResumeAll()函数。意味着当前任务不会被切换出去。]]></description><category></category></item></channel></rss>