自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(69)
  • 收藏
  • 关注

原创 C之switch小问题

因为C语言会忽视 switch语句与第一个case之间的code,也就是根本不会执行 “num=100;为什么会是100呢?

2023-12-16 09:37:16 126

原创 C之不小心就犯错误1-隐式类型转换

根据C语言隐式类型转换的原理,如果是int型与uint型进行比较(其它类型同理),则会将int型数据转换为uint型,则-1变成了 2^32-1 = 4294967295。

2023-12-15 18:09:58 161

原创 SIM初始化流程(转载)

ATR(Answer To Reset):复位应答信号,有SIM卡传输给终端,包括SIM卡自身的一些信息,比如支持的传输速率,传输模式等。当SIM卡被插入设备中时,设备会向SIM卡发送一个复位命令,以获取SIM卡的响应。SIM卡重确认动作,这是SIM协议中自带的一个功能,即在SIM卡和手机交互讯息完成,后面没有数据交换了,相当于SIM模块待机状态,这时SIM模块和手机有个不间断的重复确认动作。SIM卡会回复一个ATR,其中包含有关卡片的信息,例如卡片类型,速率,电压等。一旦 RST信号从读卡器发送到卡,

2023-12-13 17:38:27 1105

原创 SIM激活、重置和类别选择

2023-12-13 17:13:29 111

原创 ISO/IEC 7816组成

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:安全操作命令。

2023-12-13 15:28:46 360

原创 SIM卡的主要功能

1,手机启动时,根据SIM卡的类型,进入SIMRecords, 开始探测SIM卡的状态,因为,有些SIM卡会设置有PIN码,如果SIM卡有PIN码的话,手机会弹出输入PIN码的框,等待用户进行解码,注意,这个时候,SIM卡本身是通过PIN码来保护的,PIN是一个4~8位的个人密码,只有当用户输入正确的PIN码时,SIM卡才能被启用,移动终端才能对SIM卡进行存取,也只有PIN认证通过后,用户才能上网通话。(2)PIN2码:PIN2码也是SIM卡的密码,它跟网络的计费和SIM卡内部资料的修改有关。

2023-12-13 14:05:44 604

原创 SIM卡内部结构及外部物理接口

CPU把从串行通信单元获取的信息临时存放在RAM,再利用ROM中的程序对数据进行处理,然后存储到EEPROM中,同时也可能会产生应答信号再通过串行通信单元发出,完成交互。存放整个文件系统和应用程序读写的信息,比如号码、短信等数据并可擦写。• VPP:编程电压,现在已经基本不用 (目前悬空)存放片内操作系统,用户不可操作。用于信号通信,信息传递的“桥梁”控制SIM卡的运算和操作。存放计算过程中的临时数据。• CLK:时钟输入信号。• I/O:数据输入输出。RESET:复位信号。

2023-12-13 12:24:58 1217

原创 UICC协议层结构

与计算机网络的协议层概念一样,UICC也有自己的协议层概念,只是相对简单一些。

2023-12-13 11:45:58 111

原创 3GPP、ETSI、ISO等组织

(1)3GPP(The 3rd Generation Partnership Project):3GPP是一个由电信标准制定组织组成的合作伙伴计划,旨在制定和推广第三代移动通信标准(如3G、4G和5G),以确保全球移动通信系统的互操作性和兼容性。ISO制定的标准通常是通用的,适用于各种行业和领域。ISO和3GPP在移动通信领域有一定的关系,因为3GPP制定的移动通信标准通常需要符合ISO的质量管理标准。3GPP负责颁布与UICC相关的协议,包括UICC应用的接口标准和UICC应用的功能标准。

2023-12-13 09:17:44 531 1

原创 ESIM了解

eSIM标准的第一版于2016年3月发布,第二版于2016年11月发布。苹果公司在其2017年9月公开的Apple Watch Series 3及以后之产品中加入了eSIM功能。苹果还在iPhone XS、iPhone XS Max、iPhone XR和后来的双卡双待产品中加入了eSIM功能。iSIM与eSIM相似,但将功能集成到单片机当中,而非独立的芯片。eSIM具有更高的便利性与安全性,运营商也能提供更灵活的服务方案,是移动通信未来趋势。使用eSIM的手机、穿戴式设备、车载设备及未来物联网等设备可以。

2023-12-12 15:44:18 513 1

原创 SIM800模块AT命令-状态查询

(若已设置命令“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。

2023-12-07 17:31:29 992

原创 MTU TCP-MSS(转载)

如果太小,因为协议一定要在包(或帧)上加上包头,那实际传送的数据量就会过小,这样也划不来。MSS是传输层TCP协议范畴内的概念,顾名思义,其标识TCP能够承载的最大的应用数据段长度,因此,MSS=MTU-20字节TCP报头-20字节IP报头,那么在以太网环境下,MSS值一般就是1500-20-20=1460字节。通过在TCP连接之初,协商MSS值巧妙的解决了避免端系统分片的问题,但是在复杂的实际网络环境下,影响到IP报文分片的并不仅仅是发送方和接收方,还有路由器、防火墙等中间系统。用来通知对方所能接受。

2023-12-07 09:19:24 558

原创 优雅地打印 HEX 数据

每行每 8 个数据多增加一个空格,数据展示更加直观。

2023-12-05 10:04:29 427

原创 AT COMMAND(转载)

AT(Attention)指令是由发明的,所以也称为。AT 指令最初是用来指导 modem 工作的,后面随着技术的发展,低速 modem 已经退出了市场,但 AT 指令却不断发展,并且在今天 AT 指令依旧扮演这非常重要的角色。虽然在 PC 端、手机上已经没有了 AT 的使用,但其却在嵌入式行业里各类联网模块中发挥着重要的作用,而且不仅仅只应用在蜂窝模块,还应用到了 WiFi、BLE 等模块中。目前的 AT 指令着重应用在蜂窝模块、WiFi 模块、BLE 模块中,目的是为了简化嵌入式设备联网的复杂度。

2023-12-05 09:56:54 189

原创 TCP报文解析

最常见的可选字段是最长报文大小,又称为MSS(Maximum Segment Size),每个连接方通常都在通信的第一个报文段(为建立连接而设置SYN=1的那个段)中指明这个选项,它表示本端所能接受的最大报文段的长度。(例如:一个报文段的序号为300,此报文段数据部分共有100字节,则下一个报文段的序号为400.)所以序号确保了TCP传输的有序性。在处理超时的许多情况中,也会发送不带任何数据的报文段。即ack,占4个字节,指明下一个期待收到的字节序号,表明该序号之前的所有数据已经正确无误的收到。

2023-12-01 16:27:42 726 1

原创 TCP网络常见名词

例如,HTTP、FTP、MQTT等广为使用的应用协议中所使用的端口号就是固定的,这些端口号被称之为知名端口号。知名端口号一般由0~1023的数字分配而成,除知名端口号,还有一些端口号也被正式注册,它们分布在1024到49151的数字之间,不过这些端口号可以用于任何通信用途。例如,53号端口在TCP与UDP都用于DNS服务,而80端口用于HTTP通信,就目前来看,由于HTTP通信必须使用TCP,因此UDP的80端口号并未投入使用。端口号由其使用的传输层协议决定。因此,不同的传输协议可以使用相同的端口号。

2023-12-01 15:22:52 727 2

原创 TCP简介及特性

TCP是Transmission Control Protocol的简称,中文名是传输控制协议。它是一种面向连接的、可靠的、基于IP的传输层协议。两个TCP应用之间在传输数据的之前必须建立一个TCP连接,TCP采用数据流的形式在网络中传输数据。TCP为了保证报文传输的可靠性,会对每一个包进行编号,同时序号也能保证接收端在接收数据的时候可以按序接收。接收端在接到数据后会返回一个相应的应答信号,如果发送端在合理的往返延时内未接收到应答信号,那么对应的数据将会重传。在数据确认无误后才会将数据传递给应用层。

2023-12-01 14:34:16 408

原创 宏定义中 ## 和 # 的作用

是“字符串化”的意思。出现在宏定义中的#是把跟在后面的参数转换成一个字符串,也就是在宏参数的开头和末尾添加引号。可以发现,即使给宏参数“传递”的数据中包含引号,使用 # 仍然会在两头添加新的引号,而原来的引号会被转义。## 称为连接符,用来将宏参数或其他的串连接起来。

2023-11-30 11:21:31 266

原创 FreeRTOS:TCB_t结构体解读(转载)

栈的生长方式可以分为两种,一种是向下生长,一种是向上生长,FreeRTOS中用portSTACK_GROWTH来区分这两种生长方式,portSTACK_GROWTH大于0为向上生长,小于零为向下生长。在TCB_t结构体的定义中可以看到根据栈的生长方式的不同,其将具有不同的成员变量pxEndOfStack,在这里说明一下栈的生长方式是如何定义的,以及为何生长方式会存在pxEndOfStack这一变量的差异。阻塞状态:直到某些条件达成才会重新进入就绪态等待获得执行权,否则不会执行的任务。

2023-11-29 11:48:30 458

原创 vTaskSuspendAll()和xTaskResumeAll()

如果一个临界区执行时间过长而不适合通过关闭中断(vTaskEnterCritical)的方式来保护临界区的话,可以通过挂起调度器来保护临界区。系统维护一个全局变量uxSchedulerSuspended的计数值,当其大于0的时候禁止调度,等于0的时候表示允许调度。如果调度器挂起的话(执行vTaskSuspendAll()),当前正在执行的Task会一直继续执行,内核不再调度(),直到该任务调用了xTaskResumeAll()函数。意味着当前任务不会被切换出去。

2023-11-28 14:50:16 434

原创 抢占式调度和非抢占式调度的区别

操作系统才会将 CPU分配给另一个进程。这种方式可以保证低优先级进程得到更稳定的运行时间,但可能会导致高优先级进程得不到及时响应。总的来说,抢占式调度适用于实时系统或需要快速响应的场景,而非抢占式调度适用于一些需要稳定运行的应用,如批处理系统。这种方式可以保证高优先级进程得到更快的响应时间,但可能会导致低优先级进程的运行时间不确定。一个高优先级的进程可以随时抢占正在运行的低优先级进程的 CPU时间片。抢占式调度和非抢占式调度是操作系统中两种不同的进程调度方式。相反,在非抢占式调度中,一个进程只有在。

2023-11-28 14:32:21 4061

原创 link脚本组成

脚本中以MEMORY命令定义了存储空间,其中以ORIGIN定义地址空间的起始地址,LENGTH定义地址空间的长度。最简单的链接脚本只有一个命令:’SECTIONS ’。# 您可以使用 ’SECTIONS ’ 命令来描述输出文件的内存布局。’SECTIONS ’ 命令功能非常强大。在这里,我们将描述它的一个简单用法。假设您的程序仅包含代码,初始化数据和未初始化数据。它们分别位于“ .text ”,“.data ”和“ .bss ”段中。我们进一步假设这些是唯一将会出现在输入文件中的段。

2023-11-28 10:16:00 356 1

原创 risc-v异常处理

S-mode : 内核模式。通常情况下,操作系统在此模式下执行。M-mode:机器模式。最高权限,所有的 RISCV 处理器都应该实现的模式。通常情况下处理器发生中断和异常时在此模式下进行处理。同步异常:IO,illegal, page fault,miss_aligh 等来自处理器内部的发生的异常。异步异常(中断):鼠标,键盘,Timer 等外部事件。Riscv 有三种特权模式,分别是 U-mode、S-mode、M-mode。U-mode : 用户模式。通常情况下用户编写的程序都在该模式下执行。

2023-11-27 16:54:41 405 1

原创 MCU常用文件格式

ELF文件相当于是对bin文件的一个包装和解释,不仅仅包含程序的机器码,还包含加载地址、运行地址和调试信息等,使得运行操作系统(带MMU的CPU运行的具有虚拟地址/内存映像功能的OS,如Linux、Windows)的机器中的ELF Loader模块能够根据elf头信息创建一个新进程并加载elf文件中的机器码到该进程的虚拟内存中去。,是文件格式binary的缩写,后缀名为".bin"的文件,表式它是binary格式。ELF文件除了机器码外,还包含其它额外的信息,如段的加载地址,运行地址,重定位表,符号表等。

2023-11-24 14:02:07 1353

原创 .symtab ELF符号表(转载)

ELF文件中的“符号表(symbol table)”包含的是程序中的符号信息 – 这些符号代表的或许是定义(例如定义全局变量时使用的变量名,或者定义函数时使用的函数名),或许代表的是引用(例如使用关键字extern声明的变量或函数时使用的符号名称)。当代表的是定义时,在链接阶段链接器需要为它们重定位;当代表的是引用时,在链接阶段链接器需要在其他编译模块定位到该符号的定义。

2023-11-23 14:42:24 888

原创 Program Header Table(转载)

程序头表与段表相互独立,由ELF文件头统一管理。程序头表负责ELF文件从文件到加载后映像的映射关系,一般只有可执行文件包含。

2023-11-22 15:58:35 149

原创 link链接脚本介绍

在程序编译的时候,每个目标文件都是由源代码编译得到,最终多个目标文件链接生成一个可执行文件,而链接地址就是告知链接器,各个目标文件在可执行程序中的位置。链接脚本就是一个描述如何放置程序段的规则文件,链接器会根据这些规则,合理安排每个程序段的位置,将其链接成一个可执行程序。其中代码段(.text)、数据段(.data)、bss段(ZI段)这些段名是编译器链接器内部定好的。你没有提供自定义的链接脚本,则链接器将使用一个默认的链接脚本,可以使用“ld --verbose”命令来显示这个链接脚本的内容。

2023-11-22 14:13:43 212

原创 GNU工具链

工具链典型的例子就是GNU工具链。GNU工具链是由GNU项目产生的各种编程工具的集合,用于开发应用程序与操作系统。GNU工具链在针对嵌入式系统的Linux内核、BSD及其它软件的开发中起着至关重要的作用。GNU工具链中的部分工具也被Mac OS X, Microsoft Windows等其它平台进行了移植使用。GNU make:用于编译和构建的自动工具。GNU编译器集合(GCC):一组多种编程语言的编译器。GNU Binutils:包含链接器ld、汇编器as和其它工具的工具集。

2023-11-22 14:00:40 357

原创 section header

section header结构体的定义可以在 /usr/include/elf.h 中找到。下面我们依次讲解结构体各个字段:(1)sh_name,4字节,是一个索引值,在shstrtable(section header string table,包含section name的字符串表,也是一个section)中的索引。

2023-11-22 09:53:04 357

原创 ELF header

ELF header的定义可以在 /usr/include/elf.h 中找到。Elf32_Ehdr是32位 ELF header的结构体。Elf64_Ehdr是64位ELF header的结构体。所以,ELF header在ELF文件中的大小与位置是确定的,位置位于文件头部,大小则是Elf_Ehdr结构体的大小。/* Magic number和其它信息 */64位和32位只是个别字段长度不同,比如 Elf64_Addr 和 Elf64_Off 都是64位无符号整数。

2023-11-22 09:34:09 282

原创 目标文件(ELF格式)

ELF文件格式提供了两种不同的视角,在汇编器和链接器看来,ELF文件是由Section Header Table描述的一系列Section的集合,而执行一个ELF文件时,在加载器(Loader)看来它是由Program Header Table描述的一系列Segment的集合。**(1)可重定位目标文件(.o或者.a):**包含二进制代码和数据,其形式可以和其他目标文件进行合并,创建一个可执行目标文件。由上可知,.o、.a、.so均是ELF格式的,ELF文件是有结构的文件。

2023-11-21 18:27:46 203

原创 C编译流程

若#define x y 则将所有的x 以文本的层次 替换成y什么叫做以文本的层次:就是说这是无脑替换 不会检查语法错误 所以有时要注意运算顺序 加括号专业术语就是:将宏名替换为宏值。

2023-11-21 11:52:38 102

原创 (二)汇编语句组成

macro和.endm.macro和.emdm伪操作用于将一串汇编代码定义成为一个宏。“.macro name arg1 [, argn]”用于定义名为name的宏,并且可以传入若干由分号分隔的参数。“.endm”用于结束宏定义。

2023-11-20 15:12:58 605

原创 汇编层面有三个主要的操作对象

什么是访存:“访问内存中对应的值” 和 “将值存到内存中”,请记住在汇编中只有三个对象,内存,立即数,以及寄存器,寄存器只有32个数量有限,立即数无法进行存储功能,因此很多时候都需要把数据放到内存中以及从内存中读取相应数据。在汇编层面有三个主要的操作对象:寄存器,内存,立即数,它们是完全不同,不可以混淆,组织结构也不一样的不同对象,所以不能单纯拿针对寄存器的指令去处理内存和立即数。后续从寄存器扩展到立即数的指令都是这样的,在指令的最后加上i。运算与存储是计算机的两大核心而基本的功能。8位(一个字节8比特)

2023-11-20 14:03:31 467

原创 (一)RISC-V 指令集及寄存器介绍

RISC-V 念作 “risk-five”,代表着 Berkeley 所研发的第五代精简指令集。该项目 2010 年始于加州大学伯克利(Berkeley)分校,希望选择一款 ISA用于科研和教学。List itemX86:太复杂,IP 问题List itemARM:一样的复杂,而且在 2010 年之前还不支持 64 位,以及同样的 IP 问题。risc-v 有32个通用寄存器(简写 reg),标号为x0 - x31,每个通用寄存器都有各自的用途。

2023-11-20 11:10:48 1383

原创 看门狗WDT

8088芯片看门狗(WDT)定时器寄存器定义,使用方式等。软件正常运行时,定时清除该定时器,即通常说的喂狗,以保证计时不产生溢出(WDT饿死),触发系统复位操作。软件可配置该模块使能或去使能。

2023-11-18 15:40:49 130

原创 8088_TIMER

通用定时器是由一个通过可编程预分频器驱动的32位计数器构成。它适合多种用途,包含测量输入信号的脉冲宽度(输入捕获),或者产生输出波形(PWM)。8x88系列具有两组定时器,TIM0和TIM1功能完全相同且相互独立。

2023-11-17 12:07:15 108

转载 vscode工程屏蔽不需要的文件(保持检索便利)

如何屏蔽不需要的文件和文件夹,以更好地帮助我们开发。在一个开发的过程中,相关文件在此工程中不需要,。为了满足这个要求,我们需要在工程顶层目录中新建.vscode 文件夹,在该文件夹下面新建 settings.json 文件。

2023-11-17 10:42:16 801

原创 FreeRTOS_任务通知

任务通知在 FreeRTOS 中是一个可选的功能,要使用任务通知的话就需要将宏configUSE_TASK_NOTIFICATIONS 定义为 1。FreeRTOS 的每个任务都有一个 32 位的通知值,任务控制块中的成员变量 ulNotifiedValue就是这个通知值。任务通知是一个事件,假如某个任务通知的接收任务因为等待任务通知而阻塞的话,向这个接收任务发送任务通知以后就会解除这个任务的阻塞状态。也可以更新接收任务的任务通知值。

2023-11-16 11:46:09 118 2

原创 FreeRTOS_任务创建与删除

xTaskDelete(NULL) //参数为NULL,为删除当前任务。

2023-11-16 09:43:48 128 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除