个人成就
- 发布了53篇内容
- 获得了1次赞同
- 获得了2次收藏
个人简介
擅长领域
暂时没有设置哦~
-
单片机C语言程序的存储区域解读
在C语言代码(文本文件)形成可执行程序(二进制文件),需要经过编译-汇编-链接三个阶段。编译过程把C语言文本文件生成汇编程序,汇编过程把汇编程序形成二进制机器代码,链接过程则将各个源文件生成的二进制机器代码文件组合成一个文件。
C语言编写的程序经过编译-链接后,将形成一个统一文件,它由几个部分组成。在程序运行时又会产生其他几个部分,各个部分代表了不同的存储区域:
1、代码段(Code或Text)
代码段由程序中执行的机器代码组成。在C语言中,程序语句进行编译后,形成机器代码。在执行程序的过程中,CPU的程序计数器指向代码段的每一条机器代码,并由处理器依次运行。
2、只读数据段(RO data)
只读数据段是程序使用的一些不会被更改的数据,使用这些数据的方式类似查表式的操作,由于这些变量不需要更改,因此只需要放置在只读存储器中即可。
3、已初始化读写数据段(RW data)
已初始化数据是在程序中声明,并且具有初值的变量,这些变量需要占用存储器的空间,在程序执行时它们需要位于可读写的内存区域内,并具有初值,以供程序运行时读写。
4、未初始化数据段(BSS)
未初始化数据是在程序中声明,但是没有初始化的变量,这些变量在程序运行之前不需要占用存储器的空间。
5、堆(heap)
堆内存只在程序运行时出现,一般由程序员分配和释放。在具有操作系统的情况下,如果程序没有释放,操作系统可能在程序(例如一个进程)结束后回收内存。
6、栈(stack)
栈内存只在程序运行时出现,在函数内部使用的变量、函数的参数以及返回值将使用栈空间,栈空间由编译器自动分配和释放。
C语言目标文件的内存布局如下图:
代码段、只读数据段、读写数据段、未初始化数据段属于静态区域,而堆和栈属于动态区域。代码段、只读数据段和读写数据段将在连接之后产生,未初始化数据段将在程序初始化的时候开辟,而堆和栈将在程序的运行中分配和释放。
C语言程序分为映像和运行时两种状态。在编译-链接后形成的映像中,将只包含代码段(Text)、只读数据段(RO Data)和读写数据段(RW Data)。在程序运行之前,将动态生成未初始化数据段(BSS),在程序的运行时还将动态形成堆(Heap)区域和栈(Stack)区域。
一般来说,在静态的映像文件中,各个部分称之为节(Section),而在运行时的各个部分称之为段(Segment)。如果不详细区分,可以统称为段。
每一个源文件生成的目标代码有了这些段的区分,那么每个段就能表示出源文件想要表达的信息和功能。下一篇我们一起深入分析下在这些段中是怎么体现的源码的信息的。
-
一文带你读懂RFID
大家好,我是张飞实战电子的黄忠老师,今天我们来了解下什么是RFID。
RFID又称无线射频识别,通过无线电信号识别并读写特定目标数据,很容易就可完成识别与读写数据。RFID技术已经存在于我们生活中的方方面面,比如门禁卡、鸿蒙一碰传等等。
电子标签,比如说我们拿的卡门禁卡,进入天线磁场后,若接收到读写器发出的特殊射频信号,就能凭借感应电流所获得的能量发送出存储在芯片中的产品信息(无源标签,即不带电源),或者主动发送某一频率的信号(有源标签,即带电源),读写器读取信息并解码后,送至MCU系统进行有关数据处理。
关于RFID有几大产品:
1. 无源RFID产品:
无源RFID标签,被称为被动RFID标签这类产品需要近距离接触式读卡器来进行识别,比如房卡、银行卡等,当无源RFID标签靠近RFID读卡器时,无源RFID标签的天线将接收到的电磁波能量转化成电能,激活RFID标签中的芯片,并将RFID芯片中的数据发送出来。具有抗干扰能力,用户可自定义读写标准数据,在专门的应用系统效率更加快捷。无源RFID标签的性能受标签大小(影响到天线的参数),调制形式,电路Q值、器件功耗以及调制深度等影响。这类产品也是我们生活中比较常见,也是发展比较早的产品。价格相对有源RFID便宜,且使用寿命相对较长。其识别距离比有源系统要小,一般为几米到十几米,且需要较大的读卡器来发射功率。
2. 有源RFID产品:
有源电子标签是指标签工作的能量由电池提供,电池、内存与天线一起构成有源电子标签,不同于被动射频的激活方式,一直通过设定频段主动外发信息。这类型的产品则具有远距离自动识别的特性,所以相应地应用到一些大型环境下,比如智能停车场、智慧城市、智慧交通及物联网等领域。识别距离较长,通常可达几十米甚至上百米,缺点是成本高寿命有限,不易做成薄卡。
3. 半有源RFID产品:
半有源电子标签顾名思义就是有源RFID产品和无源RFID产品的结合,内有电池,但电池只对标签内部电路供电,并不主动发射信号,其能量传递方式与无源系统类似,因此其工作寿命比一般有源系统标签要长许多。它结合二者的优点,只有在其进入低频读卡器的激活信号范围时,标签被激活后,才开始工作。解决了有源RFID产品和无源RFID产品不能解决的问题,比如门禁出入管理、区域定位管理及安防报警等方面的应用,近距离激活定位、远距离传输数据。
RFID运用领域举例:
1.仓库/运输/物资管理:给货品嵌入RFID芯片,管理人员就可以在系统迅速查询货品信息,防丢弃,提高货品交接速度,提高准确率,防止窜货和防伪。
2.门禁/考勤
3.固定资产管理:像图书馆、艺术馆及博物馆等资产庞大或者物品贵重的一些场所,当书籍或者贵重物品的存放信息有异常变动,就会第一时间在系统里提醒管理员,从而处理相关情况。
