自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 信号量与自旋锁的区别

区别一:实现方式自旋锁是自旋等待,进程状态始终处于TASK_RUNNING。信号量是睡眠等待,进程在等待是处于TASK_INTERRUPTIBLE。区别二:睡眠死锁陷阱:在自旋锁的临界区中,进程是不能陷入睡眠的。而信号量可以睡眠。同时,基于上面的原因,中断上下文中只能使用自旋锁(中断里不能休眠),在有睡眠代码的临界区只能使用信号量区别三:CPU的

2017-02-15 20:39:29 1263

原创 TCP和UDP的区别

一、TCP和UDP的区别1. TCP是面向连接的协议,而UDP是无连接的协议。2. 可靠性TCP提供交付保证,即使用TCP协议发送的消息是保证交付给客户端的,若消息在传输过程中丢失,则重发,这是由TCP协议本身控制的,而UDP是不可靠的,他不提供任何交付保证。一个数据包在传输过程中可能会丢失。UDP不适合保证交付的项目。3. 有序性除了提供交付保证,TCP也保证

2017-02-13 13:21:23 410

原创 Linux内核定时器

一、内核时间的相关概念1. 墙上时钟:也就是实际时间。2. 系统时间:自系统启动开始所经过的时间。3. 时钟中断:内核会周期性的产生时钟中断,在中断处理函数中执行一些与时间相关的操作,如更新时间,进程调度,检查时间片等。4. 节拍率:在linux内核中,通过编程定义节拍率,也就是HZ。每1/HZ秒发生一次时钟中断。在ARM中,节拍率被定义为100,节拍率越大,系统进入时

2017-02-10 18:07:49 447

原创 混杂设备驱动模型设计LED驱动

一、使用混杂设备驱动,设计字符设备设备驱动程序的流程1. 定义一个混杂设备2. 定义混杂的file_operations和其接口函数3. 将物理地址申请为内核的一个资源,request_mem_region()4. 通过ioremap()函数得到物理地址对应的虚拟地址5. 注册混杂设备 --->已经创建了class和device6. 访问虚拟地址,控制硬件。二、

2017-02-09 19:05:46 590

原创 常用的GPIO的标准接口函数

一、GPIO的标准接口函数为了使得GPIO具有更好的可移植性,在Linux内核中,有一些基本的模块可以使用标准的接口函数来操作,如:GPIO、INT、Timer、Clock等基本模块。使用该GPIO口必须先对其进行申请(GPIO也是一个资源,一个GPIO只能申请一次,再次申请会报错。),在内核源码中,每一个GPIO口都对应一个唯一的"ID",根据硬件平台的不同,可在内核源码目录下的arch/对

2017-02-09 12:58:45 5698

原创 C语言存储级别关键字详解

1. const关键字const的作用是为给读你代码的人传达这个参数的应用目的。通过给优化器一些附加的信息,使用关键字const也许能产生更紧凑的代码。并且合理地使用关键字const可以使编译器很自然地保护那些不希望被改变的参数,防止其被无意的代码修改。与volatile合称“cv特性”,指定变量不可被当前线程/进程改变(但有可能被系统或其他线程/进程改变)实例:a. cons

2017-02-08 19:58:32 530

原创 Linux驱动简介

一、什么是驱动操作系统是通过各种驱动程序来驱使硬件设备的,也就是说,驱动是操作系统内核与机器硬件之间的桥梁,它为内核操作硬件提供接口。驱动程序在Linux系统中以内核模块的形式存在,其编写方式遵循模块的编程方式。驱动程序在系统的程序中介于HAL层与硬件层之间,向上与系统各部分衔接,向下处理硬件的各种操作请求。驱动主要完成以下功能:1. 对设备初始化和释放。2.

2017-02-07 19:08:15 346

原创 Linux内核模块

一、 Linux内核模块概念内核模块是Linux内核向外部提供的一个接口,其全称为动态可加载内核模块(Loadable Kernel Module,LKM),简称为模块。Linux内核之所以提供模块机制,是因为它本身是一个单内核(monolithic kernel)。单内核的最大优点是效率高,因为所有的内容都集成在一起,但其缺点是可扩展性和可维护性相对较差,模块机制就是为了弥补这一缺陷。模

2017-02-07 09:15:35 743

原创 C语言产生随机数

一、简介1. 随机数:数学上产生的都是伪随机数,真正的随机数是使用物理方法产生的。2. 随机数种子:随机数的产生是由算术规则产生的,srand(seed)的随机数种子(seed)不同,  rand()的随机数值就不同,如果每次的seed一样,则rand()产生的随机数也将一样。因此  要产生随机数,seed也必须是随机的值。  3. srand()产生随机数种子seed

2017-02-04 00:31:18 501

原创 在Linux终端输出带颜色的文字的方法

一、shell下的实现方法只要设置输出属性,就可输出带颜色的文字 ,shell中的部分属性:      \033[0m 关闭所有属性      \033[1m 设置高亮度      \033[4m 下划线      \033[5m 闪烁      \033[7m 反显      \033[8m 消隐      \033[30m 至 \33[37m 设置前景色

2017-02-03 13:22:55 5061

原创 数据结构之线性表

一、线性表简介线性表(List)是零个或多个数据元素的有限序列,线性表有如下特点: 线性表是一个序列,即元素之间是有顺序的。若元素存在多个,则第一个元素无前驱,最后一个元素无后继,其他每个元素都有且只有一个前驱和后继。线性表元素是有限的,事实上,在计算机中处理的对象都是有限的,那种无限的数列,只存在于数学的概念中。若用数学方式表示:若将线性表记为(a1, ……, a

2017-02-03 01:35:40 291

原创 排序算法之冒泡排序

一、冒泡排序原理       冒泡排序(Bubble Sort)是一种较简单的排序算法,其原理是临近的数字两两进行比较,按照从小到大或者从大到小的顺序进行交换,这样一趟过去后,最大或最小的数字被交换到了最后一位,然后再从头开始进行两两比较交换,直到倒数第二位时结束。二、冒泡排序实例#include void Bubble_Sort(int array[], int n){

2017-02-01 19:48:59 275

原创 ARM体系结构(一)

一、ARM概述ARM全称为:Acorn RISC Machine,是由英国Acorn有限公司设计的低功耗成本的第一款RISC微处理器。ARM处理器在全球拥有更多的合作伙伴,不仅因其低功耗高性能的特点,除此,ARM处理器支持ARM(32位)/Thumb(16位)双指令集,能很好的兼容16/8位器件、指令格式统一、大量使用寄存器,指令执行速度更快、寻址方式高效灵活,因此,ARM处理器已经深入工控、

2017-01-31 20:02:24 1101

空空如也

空空如也

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

TA关注的人

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