自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 资源 (7)
  • 收藏
  • 关注

转载 三态门与高阻态

三态门,是指逻辑门的输出除有高、低电平两种状态外,还有第三种状态——高阻状态的门电路。高阻态相当于隔断状态(电阻很大,相当于开路)。三态门都有一个EN控制使能端,来控制门电路的通断。可以具备这三种状态的器件就叫做三态(门,总线,......).         计算机里面用 1和0表示是,非两种逻辑,但是,有时候,这是不够的,  比如说,他不够富有,但是他也不一定穷啊;她不漂亮,但也不

2017-07-31 10:47:42 11155

转载 kmalloc、vmalloc、malloc的区别

kmalloc、vmalloc、malloc的区别简单的说:kmalloc和vmalloc是分配的是内核的内存,malloc分配的是用户的内存kmalloc保证分配的内存在物理上是连续的,vmalloc保证的是在虚拟地址空间上的连续,(malloc不保证任何东西(这点是自己猜测的,不一定正确)    kmalloc能分配的大小有限,vmalloc和malloc能分配的大小相对较

2017-07-27 09:41:13 286

转载 进程等待-wait_event_interruptible 使用方法

1. 关于 wait_event_interruptible() 和 wake_up()的使用  读一下wait_event_interruptible()的源码,不难发现这个函数先将 当前进程的状态设置成TASK_INTERRUPTIBLE,然后调用schedule(), 而schedule()会将位于TASK_INTERRUPTIBLE状态的当前进程从runqueue

2017-07-25 14:17:53 1259

转载 C语言宏定义和宏定义函数

要写好C语言,漂亮的宏定义是非常重要的。宏定义可以帮助我们防止出错,提高代码的可移植性和可读性等。  在软件开发过程中,经常有一些常用或者通用的功能或者代码段,这些功能既可以写成函数,也可以封装成为宏定义。那么究竟是用函数好,还是宏定义好?这就要求我们对二者进行合理的取舍。  我们来看一个例子,比较两个数或者表达式大小,首先我们把它写成宏定义:  #define MAX( a, b)

2017-07-25 10:19:44 454

转载 互斥锁 spin_lock < spin_lock_bh < spin_lock_irq < spin_lock_irqsave

Spinlock的目的是用来同步SMP中会被多个CPU同时存取的变量。在Linux中,普通的spinlock由于不带额外的语义,是用起来反而要非常小心。在Linux kernel中执行的代码大体分normal和interrupt context两种。tasklet/softirq可以归为normal因为他们可以进入等待;nested interrupt是interrupt context的一种

2017-07-24 11:45:19 3473 2

转载 va_start和va_end使用详解

转载自http://www.cnblogs.com/hanyonglu/archive/2011/05/07/2039916.html  本文主要介绍va_start和va_end的使用及原理。  1.在C中,当我们无法列出传递函数的所有实参的类型和数目时,可以用省略号指定参数表voidfoo(...);void foo(parm_list,...);这种方式和我们以前认识

2017-07-21 15:54:57 2625 1

转载 __FILE__,__LINE__

前言:我们在写程序的时候,总是或多或少会加入一些printf之类的语句用于输出调试信息,但是printf语句有个很不方便的地方就是当我们需要发布程序的时候要一条一条的把这些语句删除,而一旦需要再次调试的时候,这些语句又不得不一条条的加上,这给我们带来了很大的不便,浪费了我们很多的时间,也造成了调试的效率低下。所以,很多人会选择使用宏定义的方式来输出调试语句。比如,定义一个宏开关:#de

2017-07-21 09:33:43 315

转载 分配并注册主次设备号

分配并注册主次设备号    设备号是在驱动module中分配并注册的,也就是说,驱动module拥有这个设备号(我的理解),而/dev目录下的设备文件是根据这个设备号创建的,因此,当访问/dev目录下的设备文件时,驱动module就知道,自己该出场服务了(当然是由内核通知)。    在Linux内核看来,主设备号标识设备对应的驱动程序,告诉linux内核使用哪一个驱动程序为该设备(也就是/

2017-07-21 09:03:33 342

原创 /dev/目录下的内容与/proc/下文件devices中的内容有什么区别?

linux环境下,/dev/目录下的内容与/proc/下文件devices中的内容有什么区别?向板子上加载驱动 模块时,/proc/devices文件中有变化,而/dev下根本没有变化,/dev/下不也应该是设备接点吗,为什么为模块建立设备接点时,/dev/下却没有变化呢? 因为:/proc/devices/   中的设备是通过insmod加载到内核的,它可产生一个major供mk

2017-07-20 12:49:40 1501

转载 linux模块驱动简单的Makefile

Linux驱动一般以模块module的形式来加载,首先需要把驱动编译成模块的形式。简单的例子,Begin of hello.c file[cpp] view plain copy print?#include   #include   #include      static int __init test_init(void)  {         p

2017-07-20 10:58:21 250

转载 sizeof与offsetof有关的结构体详解

关于sizeof定义sizeof乃C/C++中的一个操作符(operator), 简单的说其作用就是返回一个对象或者类型所占的内存字节数。(MSDN上的解释为:The sizeof keyword gives the amount of storage, in bytes, associated with a variable or a type (including aggregate

2017-07-18 16:35:42 315

转载 Ucosii消息邮箱使用

//设置任务优先级#define LED_TASK_Prio       6#define LED1_TASK_Prio      5 用到的UCOSII函数消息邮箱创建函数:  OS_EVENT  *OSMboxCreate (void *msg)请求消息邮箱函数:   void  *OSMboxPend (OS_EVENT *pevent, INT16U tim

2017-07-18 09:29:49 3380

原创 enum和#define共存

点1:AUD_OP_DEF.H的一些难懂点enum里面用define#undef AUD_OP_DESCR_BEG#undef AUD_OP_DESCR#undef AUD_OP_DESCR_END#defineAUD_OP_DESCR_BEG()     OP_FUNC constaud_op_function[AUD_OP_MAX] = {#define AUD_OP_DE

2017-07-14 12:12:04 847 1

转载 sprintf函数用法详解

sprintf() 格式化输出函数(图形)功能: 函数sprintf()用来作格式化的输出。用法: 此函数调用方式为int sprintf(char *string,char *format,arg_list);说 明: 函数sprintf()的用法和printf()函数一样,只是sprintf()函数给出第一个参数string(一般为字符数组),然后再调用 outtextxy()函数

2017-07-14 09:06:41 194271 9

转载 define宏定义中的#,##,@#及\符号

一、#名称:字符串化操作符其作:将宏定义中的传入参数名转换成用一对双引号括起来参数名字符串。使用条件:只能用于有传入参数的宏定义中,且必须置于宏定义体中的参数名前举例:#define example1(instr) #instrstring str=example1(abc); 将会展成:string str="abc";注意:对空格的处理

2017-07-13 11:33:00 469

转载 C语言宏定义##连接符和#符的使用

## 连接符号由两个井号组成,其功能是在带参数的宏定义中将两个子串(token)联接起来,从而形成一个新的子串。但它不可以是第一个或者最后一个子串。所谓的子串(token)就是指编译器能够识别的最小语法单元。    简单的说,“##”是一种分隔连接方式,它的作用是先分隔,然后进行强制连接。其中,分隔的作用类似于空格。我们知道在普通的宏定义中,预处理器一般把空格解释成分段标志,对于每一段和前面比

2017-07-13 10:23:14 449

转载 STM32 中的 assert_param 函数

我们在学STM32的时候函数assert_param出现的几率非常大,上网搜索一下,网上一般解释断言机制,做为程序开发调试阶段时使用。下面我就谈一下我对这些应用的看法,学习东西抱着知其然也要知其所以然。4 断言机制函数assert_param我们在分析库函数的时候,几乎每一个函数的原型有这个函数assert_param();下面以assert_param(IS_GPIO_ALL_PERIP

2017-07-11 15:07:44 494

Oracle goldengate 从入门到精通 15课.rar

OracleGoldengate从入门到精通 Agenda  Goldengate是什么?  Goldengate适用的场景  Goldengate基本原理  Goldengate复制拓扑和异构  Goldengate产品线介绍  Goldengate产品的下载  快速的搭建一个Goldengate复制环境(非RAC环境)( linix和windows环境两套环境演示)

2021-07-02

aix v6.1命令参考大全,卷 4:n - r

AIX操作系统命令的详细解释,每个命令都有详细解释包括命令参数,命令对象,命令例子

2018-08-16

aix v6.1命令参考大全,卷 5:s - u

AIX操作系统命令的详细解释,每个命令都有详细解释包括命令参数,命令对象,命令例子

2018-08-16

aix v6.1命令参考大全,卷 3:i - m

AIX操作系统命令的详细解释,每个命令都有详细解释包括命令参数,命令对象,命令例子

2018-08-16

aix v6.1命令参考大全,卷 2:d - h

AIX操作系统命令的详细解释,每个命令都有详细解释包括命令参数,命令对象,命令例子

2018-08-16

GNU_Makefile中文手册

GNU_Makefile中文手册,里面包含了所有的make的用法,不用上网去拼凑的学习

2017-08-24

空空如也

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

TA关注的人

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