- 博客(13)
- 资源 (4)
- 收藏
- 关注
转载 assert用法总结
assert宏的原型定义在中,其作用是如果它的条件返回错误,则终止程序执行,原型定义:#include void assert( int expression );assert的作用是现计算表达式 expression ,如果其值为假(即为0),那么它先向stderr打印一条出错信息,然后通过调用 abort 来终止程序运行。请看下面的程序清单badptr.c:#i
2011-11-30 20:50:07 1235
转载 C语言中system()函数在windows和linux下的使用
windows操作系统下system () 函数详解 函数名: system 功 能: 发出一个DOS命令 用 法: int system(char *command); system函数已经被收录在标准c库中,可以直接调用 程序例: #include #include int main(void) { printf("About to spawn comman
2011-11-30 20:46:34 5659 1
原创 小心使用的指针变量
#includevoid main(){ int a=5; int b=0; int *p; *p=a; b=*p; printf("%d\n",b);}这段程序是错误的,这里的*p=a;在linux下用gdb调试出现这样的错误Program received signal SIGSEGV
2011-11-29 10:47:41 835
转载 C语言关键字volatile的使用
一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。下面是volatile变量的几个例子:1) 并行设备的硬件寄存器(如:状态寄存器) 2) 一个中断服务子程序中会访问到的非自动变量(Non-automatic variables
2011-11-29 10:21:45 476
转载 LINUX设备驱动——输入子系统
输入子系统是所有I/O设备驱动的中间层,如何为下层众多各式各样的输入设备提供接口以及为上层提供了一个统一的界面? 根据内核代码,输入子系统中存在两个链表:input_dev_list、input_handler_list,当注册一个input_dev时就会把它挂到input_dev_list上,然后去匹配input_handler_list上的input_handler,相反,当注
2011-11-17 22:10:22 983 1
转载 中断处理程序、中断上下文中处理延时及一些函数的调用规则
1,中断处理程序中不能使用有睡眠功能的函数,如ioremap,kmalloc,msleep等,理由是中断程序并不是进程,没有进程的概念,因此就没有休眠的概念;2,中断处理程序中的延时可以用忙等待函数来代替,如ndelay,udelay,mdelay等,这些函数在实现上本质是根据CPU频率进行一定次数的循环;最好不要使用mdelay,因为毫秒延时对内核来说已经是非常大了。但是在中断处理程序中
2011-11-16 11:30:02 2261
转载 内核中的原子上下文
内核的一个基本原则就是:在中断或者说原子上下文中,内核不能访问用户空间,而且内核是不能睡眠的。也就是说在这种情况下,内核是不能调用有可能引起睡眠的任何函数。一般来讲原子上下文指的是在中断或软中断中,以及在持有自旋锁的时候。内核提供了四个宏来判断是否处于这几种情况里:#define in_irq() (hardirq_count()) //在处理硬中断中#define in_softi
2011-11-16 11:27:41 1426
原创 msleep函数使用——触摸屏驱动
再写一个触摸屏驱动的时候,在中端处理函数中想用一个ssleep函数让中断等待,以便观察结果,结果运行到这里出现错误。通过google和查书最终找到了答案。void msllep(unsigned int millisecs);unsigned long msleep_interruptible(unsigned int millisecs);void ssleep(unsigned i
2011-11-16 11:25:07 3342
转载 ARM汇编伪指令介绍
在 ARM 汇编语言程序里,有一些特殊指令助记符,这些助记符与指令系统的助记符不同,没有相对应的操作码,通常称这些特殊指令助记符为伪指令,他们所完成的操作称为伪操作。伪指令在源程序中的作用是为完成汇编程序作各种准备工作的,这些伪指令仅在汇编过程中起作用,一旦汇编结束,伪指令的使命就完成。 在 ARM 的汇编程序中,有如下几种伪指令:符号定义伪指令、数据定义伪指令、汇编控制
2011-11-12 17:20:42 662
转载 void value not ignored as it ought to be
gcc中出现了“void value not ignored as it ought to be”错误,原因是你使用的一个函数的返回值类型是void,而你有对它进行了赋值处理。例如:int ret;ret=unregister_chrdev(MAJOR_NUM,"globalvar");
2011-11-06 19:45:58 1357
转载 深入理解C语言
Dennis Ritchie 过世了,他发明了C语言,一个影响深远并彻底改变世界的计算机语言。一门经历40多年的到今天还长盛不衰的语言,今天很多语言都受到C的影响,C++,Java,C#,Perl, PHP, Javascript, 等等。但是,你对C了解吗?相信你看过本站的《C语言的谜题》还有《谁说C语言很简单?》,这里,我再写一篇关于深入理解C语言的文章,一方面是缅怀Dennis,另一方面是
2011-11-05 11:16:38 627 1
原创 linux设备驱动中ADC的使用
内核源代码arch\arm\plat-s3c24xx\s3c2410-clock.c/* standard clock definitions */static struct clk init_clocks_off[] = { { .name = "nand", .id = -1, .parent = &clk_h, .enable = s3c2410_clkco
2011-11-03 13:33:19 2429 1
原创 S3C2440下clock的源码分析
s3c2440时钟的体系结构OM控制使用内部时钟和内部时钟,详细情况可以看数据手册这里使用的源代码版本是2.6.35.14初始化时钟代码arch\arm\s3c2440\s3c244x.cvoid __init s3c244x_init_clocks(int xtal){ /* initialise the clocks here, to allow
2011-11-03 11:50:38 1059
IEEE1588V2
2018-10-30
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人