- 博客(32)
- 资源 (4)
- 收藏
- 关注
原创 C语言内存模型详细介绍_堆栈介绍
(命令行参数区其实就是在通过dos或shell脚本调用时传递的参数,比如:a.exe 123 123)上图是C语言内存模型,其实虽然说叫C语言内存模型,其实并不是叫C语言内存模型,而是C语言根据CPU处理器搭建出来的一个模型!在开始介绍这些之前,读者需要了解一些体系结构:冯诺依曼体系:把程序本身当作数据来对待,程序指令和该程序处理的数据用同样的方式储存。 冯·诺依曼体系结构的要点...
2019-06-24 15:26:19
305
1
原创 直接寻址、间接寻址、立即寻址
一、前言直接寻址、间接寻址、立即寻址,只是CPU在通过总线与内存交互时的不同交互方法,而产生的三种概念词!对于这些寻址方式,很多人没有听说过,但是对于学习汇编的同学来说,非常熟悉,很多书中都有提到过这几种寻址方式,但是没有细说,这里来给大家详细介绍一下这三种寻址方式的不同体现在哪里!二、直接寻址直接寻址即直接给出内存单元的物理地址/虚拟地址直接寻址!详细说一下:...
2019-06-24 15:16:54
23577
原创 ROM、SDRAM、RAM、DRAM、SRAM、FLASH 的区别
ROM 和 RAM 指的都是半导体存储器,ROM 是 Read Only Memory 的缩写,RAM是 Random Access Memory的缩写。ROM 在系统体质供电的时候仍然可以保存数据,而RAM通常都是在掉电之后就丢失数据,典型的RAM就是计算机的内存。RAM 有两大类,一种称为静态 RAM (Static RAM/SRAM),SRAM 速度非常快,是目前读写最快的设备了,但是它...
2019-06-23 14:47:15
193
原创 嵌入式基础
关于嵌入式基础,应该熟悉的知识点:嵌入式系统的定义:一种完全嵌入受控器件内部,为特定应用而设计的专用计算机系统。其核心由一个或几个预先编程以用来执行少数几项任务的微处理器或者微控制器组成。所有带有数字接口的设备都使用嵌入式系统,所有带有数字接口的设备都使用嵌入式系统,如手表,微波炉,录像机,汽车等。嵌入式系统的组成:如图示嵌入式系统发展:分为四个阶段...
2019-06-23 14:01:27
281
原创 内存分配函数malloc 与 calloc的用法及区别
在C语言的动态分配内存过程中,我们经常使用到函数 malloc 与 calloc。 这两个函数均包含在“malloc.h"中,对其用法我们需有一个比较深刻的理解。函数malloc的原型为:void *malloc( unsigned int num_bytes) 。分配长度为num_bytes个字节的内存块,返回值为无类型指针,该指针指向所分配内存块的起始位置,因此利用该无类型指针赋值给其他...
2019-06-20 10:26:47
2319
3
原创 clock_gettime的使用,计时比clock()精确
函数"clock_gettime"是基于Linux C语言的时间函数,可以用于计算时间,有秒和纳秒两种精度。函数原型:int clock_gettime(clockid_t clk_id, struct timespec *tp);其中,cld_id类型四种: a、CLOCK_REALTIME:系统实时时间,随系统实时时间改变而改变b、CLOCK_MONOTONIC,从系统...
2019-06-19 14:28:00
9075
原创 c++中sizeof()的用法介绍
1.定义sizeof是一个操作符(operator)。其作用是返回一个对象或类型所占的内存字节数。2.语法sizeof有三种语法形式:1)sizeof (object);//sizeof (对象)2)sizeof object;//sizeof对象3)sizeof (type_name);//sizeof (类型...
2019-06-19 10:20:24
1600
原创 LInux下几种定时器的比较和使用
在数据通信过程中,会遇到对数据发送时间的格式要求。所以要在应用中根据实际要求选择不同的定时器,就要考虑到几种应用定时器的特点。定时器文章参考一般而言有,1、sleep,usleep和nanosleepsleep()和nanosleep()都是使进程睡眠一段时间后被唤醒,但是二者的实现完全不同。Linux中并没有提供系统调用sleep(),sleep()是在库函数中实现的,它是通...
2019-06-18 13:53:02
207
原创 【一步步学习编写Makefile】Makefile介绍
本文是学习Makefile的总结与记录,学习自 跟我一起写Makefile 感谢作者与整理者,需要pdf文件请留言,如有错误请及时提出。在学习Makefile之前,首先介绍一下make命令,make命令是GNU的工程化编译工具,它用于编译大量互相关联的源代码,使用它可以实现项目的工程化管理,提高开发效率。那么对于一个项目,该如何让它按照我们预想的规则去编译链接执行呢?这就要用到我们要学习的...
2019-06-17 09:43:00
201
原创 关于在 Linux 下多个不相干的进程互斥访问同一片共享内存的问题
这里的“不相干”,定义为:这几个进程没有父子关系,也没有 Server/Client 关系这一片共享内存一开始不存在,第一个要访问它的进程负责新建也没有额外的 daemon 进程能管理这事情看上去这是一个很简单的问题,实际上不简单。有两大问题:进程在持有互斥锁的时候异常退出如果用传统 IPC 的 semget 那套接口,是没法解决的。实测发现,down 了以后进程退出,信号量的数值...
2019-06-17 08:36:32
266
原创 modbus协议中的寄存器理解
最近有用到modbus协议,就把之前原来收集的资料全都拿出来又复习了一遍。发现以前了解的也忘了差不多了。所以这次理解了赶紧做个总结,省的下次再忘记了。 modbus完整支持很多功能码,但是实际在应用的时候常用的也就那么几个。具体如下:0x01: 读线圈寄存器0x02: 读离散输入寄存器0x03: 读保持寄存器 0x04: 读输入寄...
2019-04-08 08:17:40
2200
原创 标准9针串口引脚定义
本文转载于51CTO网站,原网址是http://book.51cto.com/art/201308/408900.htm3.3.1.1 标准9针串口引脚定义从前面的内容中,知道了串口外形,就可以继续了解其每个引脚的定义,这是做线的基础。无论是RS-232C、RS-422,还是RS-485,串口接口的外形、尺寸都是相同的,部件间可以通用互换,但其引脚的定义却各不相同,因此要了解串口做线,首先...
2019-04-02 10:14:57
6759
转载 轮询&中断&DMA&通道
一、轮询方式 对I/O设备的程序轮询的方式,是早期的计算机系统对I/O设备的一种管理方式。它定时对各种设备轮流询问一遍有无处理要求。轮流询问之后,有要求的,则加以处理。在处理I/O设备的要求之后,处理机返回继续工作。 尽管轮询需要时间,但轮询要比I/O设备的速度要快得多,所以一般不会发生不能及时处理的问题。 当然,再快的处理机,能处理的输入输出设备的数量也是有一定限度的。而且,程序轮询...
2019-02-12 08:58:11
469
转载 计算机软件,硬件及软硬件接口的理解---以不同层次程序员的视角
最近在自学计算机相关的基础课程,感觉自己稍微理解了计算机的硬件,软件,以及软硬件接口三大层面的内在关系。记录一下自己的理解。我想通过不同层次程序员的视角来看计算机的软件,硬件及软硬件接口。首先是计算机的硬件。计算机的硬件主要包括CPU,内存以及I/O设备。机器语言程序员,可以通过直接编写CPU可执行的机器指令,从而实现具体的功能,比如读取内存数据。也就是说,机器语言程序员在编程时,...
2019-02-11 14:54:55
2345
转载 什么是寄存器
什么是寄存器主要内容如何辨别STM32芯片的正方向 STM32芯片架构图 什么叫存储器映射 什么叫寄存器映射 一:如何辨别STM32芯片的正方向看丝印左边逆时针为第一个引脚 在芯片表面有一个小圆点逆时针为第一引脚二:STM32芯片架构图 (对于这两个图的理解可以参考STM32参考手册 驱动单元由ARM 粉色部分位外设由ST设计,主要学习AP...
2019-02-11 14:30:19
882
转载 一文看懂保护接地的作用及原理
什么是保护接地 保护接地,是为防止电气装置的金属外壳、配电装置的构架和线路杆塔等带电危及人身和设备安全而进行的接地。所谓保护接地就是将正常情况下不带电,而在绝缘材料损坏后或其他情况下可能带电的电器金属部分(即与带电部分相绝缘的金属结构部分)用导线与接地体可靠连接起来的一种保护接线方式。接地保护一般用于配电变压器中性点不直接接地(三相三线制)的供电系统中,用以保证当电气设备因绝缘损坏而漏电时产...
2019-01-29 10:10:14
5375
转载 零线、地线原理是什么?很多人对零线的认知是错误的
很多人对零线的认识是错误的,究竟零线、地线的原理是什么?且听张白帆老师细细道来。我们先来看图1:事实上,只要三相不平衡,尽管中性线并未断裂,中性线的电压也会上升。我们看图2和图3:可以看出,如果、和各不相同,则三相电压就不平衡,零线电压当然也不等于零。同理,我们可以看到零线断裂点后部的电流也与三相不平衡有关。再看图3,我们发现零线PEN中采取...
2019-01-28 17:00:36
7051
1
转载 有功、无功、视在功率,三者有什么关系?
在电工日常工作中,大家是否遇到这样的问题,我们见到变压器的容量单位是千伏安(KVar),电动机的输出功率单位是千瓦(KW),而电容补偿的功率单位是乏或千乏(Var),同样是表示电功率的单位,会出现这三种不同的名称呢?这就涉及到我们今天要讲的问题,无功功率(单位Var或Var);有功功率(单位:W或KW);视在功率(单位:Var或KVar)以及功率因数四者之间的内在关系,也会涉及到下一篇文章《无功补...
2019-01-28 14:08:40
12631
转载 正弦交流电的频率和周期及角频率
我们知道,所谓交流电就是大小和方向都随着时间不断交变的电流。如下右图所示为一正弦交流电动势的波形图,由图可以得知:交流电跟别的周期性过程一样,是用周期或频率来表示其变化的快慢。正弦交流电由零值增加到正最大值,然后又逐渐减少至零,然后改变方向又由零值逐渐增加到反方向(波形先是向上,然后是向下,所以是反方向)的最大值,最后减少到零。正弦交流电这样循环变化一周所需的时间叫做周期,用字母“T”表...
2019-01-27 10:40:45
6487
转载 Windows共享内存示例
共享内存主要是通过映射机制实现的。 Windows 下进程的地址空间在逻辑上是相互隔离的,但在物理上却是重叠的。所谓的重叠是指同一块内存区域可能被多个进程同时使用。当调用 CreateFileMapping 创建命名的内存映射文件对象时,Windows 即在物理内存申请一块指定大小的内存区域,返回文件映射对象的句柄 hMap。为了能够访问这块内存区域必须调用 MapViewOfFile 函数,...
2019-01-11 08:06:00
258
转载 linux找不到动态链接库 .so文件的解决方法
原文地址为:linux找不到动态链接库 .so文件的解决方法 如果使用自己手动生成的动态链接库.so文件,但是这个.so文件,没有加入库文件搜索路劲中,程序运行时可能会出现找不到动态链接库的情形。可以通过ldd命名来查看可执行文件依赖的动态链接库,如下(其中D为可执行程序): 其中的libjson_linux-gcc-4.6_libmt.so cannot found。解决这...
2019-01-08 11:15:47
197
转载 Linux下多线程编程中信号量介绍及简单使用
线程的信号量是一种特殊的变量,它可以被增加或减少,但对其的关键访问被保证是原子操作。如果一个程序中有多个线程试图改变一个信号量的值,系统将保证所有的操作都将依次进行。信号量一般常用于保护一段代码,使其每次只被一个执行线程运行。信号量是用来调协线程对共享资源的访问的。通过使用信号量可以很好的完成线程同步。两个线程同时监视同一个信号量。A线程增加信号量的值,B线程减少信号量的值。当A线程增加信号量...
2019-01-08 08:25:49
1023
2
转载 Linux下gcc编译生成动态链接库*.so文件并调用它
动态库*.so在linux下用c和c++编程时经常会碰到,最近在网站找了几篇文章介绍动态库的编译和链接,总算搞懂了这个之前一直不太了解得东东,这里做个笔记,也为其它正为动态库链接库而苦恼的兄弟们提供一点帮助。1、动态库的编译下面通过一个例子来介绍如何生成一个动态库。这里有一个头文件:so_test.h,三个.c文件:test_a.c、test_b.c、test_c.c,我们将这几个文件编译成一...
2019-01-07 18:43:28
491
转载 linux编译动态库之fPIC
在生成动态库时,常常习惯性的加上fPIC选项,fPIC有什么作用和意义,加不加有什么区别,这里做下小结:fPIC的全称是 Position Independent Code, 用于生成位置无关代码。什么是位置无关代码,个人理解是代码无绝对跳转,跳转都为相对跳转。1、不加fPIC选项即使不加fPIC也可以生成.so文件,但是对于源文件有要求,例如因为不加fPIC编译的so必须要在加载...
2019-01-07 18:27:10
283
转载 什么是三相四线制,四根线为何也称为三相电,与三根线有什么关系
什么是三相四线制,四根线为何也称为三相电,与三根线有什么关系 【三相四线制】在低压配电网中,输电线路一般采用三相四线制,其中三条相线线路分别代表A,B,C三相,另一条是中性线N(区别于零线,在进入用户的单相输电线路中,有两条线,一条我们称为火线;另一条我们称为零线,零线正常情况下要通过电流以构成单相线路中电流的回路,而三相系统中,三相自成回路,正常情况下中性线是无电流的),故...
2019-01-04 15:37:21
10507
转载 C程序编译过程浅析
原文出处: 笑遍世界,2012-01-08 前几天看了《程序员的自我修养——链接、装载与库》中的第二章“编译和链接”,主要根据其中的内容简单总结一下C程序编译的过程吧。我现在一般都是用gcc,所以自然以GCC编译hellworld为例,简单总结如下。hello.c源代码如下: 1 2 3 4 5 6 #in...
2019-01-03 19:24:30
118
转载 透传与AT命令的对比分析
随着移动互联网的发展和物联网的兴起,越来越多的智能设备如雨后春笋般疯狂涌现,智能插座、智能空气净化器、体脂称、WiFi摄像头、智能扫地机器人等等,纷纷摆出强大的阵容和十足的噱头,上演着一出出不抢占梁山绝不回头的铮铮好戏,看的大家好激动的说。但这次瑞哥不说这些最出风头的产品,来谈谈它们内部的一个关键部件,只要掌握了它,其实你也可以开发出极具潜力的智能硬件产品!智能硬件的关键——WiFi模组...
2018-12-29 09:41:53
4640
转载 线程堆栈大小的使用介绍
先来讲说线程内存相关的东西,主要有下面几条: 进程中的所有的线程共享相同的地址空间。 任何声明为 static/extern 的变量或者堆变量可以被进程内所有的线程读写。 一个线程真正拥有的唯一私有储存是处理器寄存器。 线程栈可以通过暴露栈地址的方式与其它线程进行共享。 有大数据量处理的应用中,有时我们有必要在栈空间分配一个大的内存块或者要分配很多小的内存块,但是线程的栈空间的...
2018-12-26 16:11:04
503
转载 ifconfig中lo、eth0、br0接口
版权声明:本文为博主原创文章,未经博主允许不得转载。转载请注明原地址 https://blog.csdn.net/u012336923/article/details/50463599ifconfig中lo、eth0、br0、wlan0接口ifconfig中loeth0br0wlan0接口lo 回环接口eth0 以太网接口br0 网桥接口wlan0 无线接口lo 回环接口lo Li...
2018-12-21 09:52:10
552
原创 linux c语言学习笔记之静态库和动态库
1.什么是库 在windows平台和linux平台下都大量存在着库。 本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。 由于windows和linux的本质不同,因此二者库的二进制是不兼容的。 本文仅限于介绍linux下的库。2.库的种类 linux下的库有两种:静态库和共享库(动态库)。 二者的不同点在于代码被载入的时刻不同。 ...
2012-09-14 15:27:46
109
linux下多线程编程总结
1. 多线程管理异步:表明事情相互独立地发生,除非有强加的依赖性。并发:让实际可能串行发生的事情好像同时发生一样,但并发并不代表操作同时进行。并行:要求程序能够同时处理多个操作。线程安全:是指代码能够被多个线程调用而不会产生灾难性的结果。可以利用互斥量、条件变量,线程私有数据,实现线程的安全。同步:阻止同步发生,让线程协调完成工作的机制。调度:决定在某个给定的时刻执行哪个环...
2012-09-10 09:16:56
175
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人