Linux
文章平均质量分 88
CD_keanu
这个作者很懒,什么都没留下…
展开
-
gdbserver: can't bind address: address already in use
Gdbserver有个已知bug,情况是在单主机上调试并行网络程序。类似我的有线无线网络并行的情况。会出现can't bind address:Address already in use在http://sourceware.org/ml/gdb-patches/2011-03/msg00390.html有说明和补丁,但是我懒得编译,后来想了个办法解决这个事情。 就是出问题了就原创 2013-07-30 11:34:53 · 4699 阅读 · 0 评论 -
关于subsys_initcall
在linux内核代码里, 到处充满了subsys_initcall,这个调用是用来干吗的呢?有人回答是系统启动时候用来初始化某些系统的,具体怎么初始化的呢,说起来还是有点复杂。以2.6.21内核作为例子。在linux/init.h里,有这样一段代码:#define pure_initcall(fn) __define_initcall("0",fn,1)#define c转载 2013-09-17 11:33:11 · 918 阅读 · 0 评论 -
各种initcall的执行先后顺序(module_init、postcore_initcall、arch_initcall、subsys_initcall、 fs_initcall)
现在以module_init为例分析initcall在内核中的调用顺序在头文件init.h中,有如下定义:#define module_init(x) __initcall(x);很明显,module_init()只是一个面具而已,揭开这个面具,下面藏着的是__initcall()__initcall()又是何方神圣呢?继续揭露真相:#define __initcall转载 2013-09-17 11:34:08 · 1145 阅读 · 0 评论 -
在Eclipse里面如何编译驱动模块
补充的补充:这片文章写的非常详细,还配图,好处是适合新手入门。另外一篇http://blog.csdn.net/gt945/article/details/6835392,就简单得多,其实步骤是完全一样的。我原来是自己写makefile,在命令行编译。能在Eclipse里面直接编译当然方便得多。另外那个ctrl+b实在不要用,除非你的project explorer里面就只有这一个工程转载 2013-09-17 13:26:07 · 1607 阅读 · 0 评论 -
MACHINE_START分析
MACHINE_START分析在友善mini2440提供的linux2.6.32.2内核中,有如下定义:MACHINE_START(MINI2440, "FriendlyARM Mini2440 development board").phys_io = S3C2410_PA_UART,.io_pg_offst = (((u32)S3C24XX_VA_UART) >> 18转载 2013-09-18 20:19:17 · 794 阅读 · 0 评论 -
linux 驱动中insmod与mknod各自的作用
今天写了一个linux的驱动,编译成功,用NFS在目录板上运行,insmod后,在/proc/devices里面能看到,用lsmod也能看到那个设备,但在/dev里找不到设备文件。应用测试程序open也出错了。后来在网上查了一些资料,说是需要先mknod才行,于是:mknod /dev/testdrv c 195 0 ,后再insmod,然后运行测试应用程序,OK! 下面是一些mknod的资料转载 2013-10-05 21:29:16 · 2980 阅读 · 0 评论 -
linux platform设备驱动简介及实例
简介:目的:说白了就是为了将设备与驱动分离,通过platform总线进行连接废话不多说:相关结构介绍:1.platform设备结构体structplatform_device{const char name;/*设备名*/u32 id;/*设备id*/struct device dev;/*设备*/u32 num_转载 2013-09-20 14:38:03 · 2488 阅读 · 0 评论 -
linux下platform设备驱动框架的实现与作用解析
在网上找了好多资料看,包括宋宝华那本书。都是在讲platform的构成,设备驱动的内容什么的。却没有人专门来讲一下platform框架跟一般驱动之间的关系,以及platform到底用来干什么?定义为platform的设备,就是定义了一个虚拟总线。同类设备都可以挂在这个总线上。第一,这样总线与设备之间实际是有一个继承的关系,总线的sysfs结点,设备电源管理等都可以继承过来。第二个是隔离原创 2013-09-21 11:48:03 · 1645 阅读 · 1 评论 -
Linux下的Platform总线驱动
补充:平台数据是定义在BSP里面的上层platform设备的一些配置。主要是因为platform涉及的都是一些总线,总线本身会有一些配置信息。但不是platform_bus_type,这是比上层platform设备还高的级别,一般都是CPU内部总线。而私有数据是对平台数据的进一步指定,总线上的哪个设备。一般,这两个数据实际是同一个结构体类型,只是具体的platform设备会对这个结转载 2013-09-23 17:36:14 · 1298 阅读 · 0 评论 -
git中的孤魂野鬼
在看am335x的uboot的时候发现一个奇怪的东西。就是所谓的template,这实际上是一个tag。可以checkout 这个tag。在某种意义上tag可以充当一个临时branch的作用原创 2013-10-09 21:44:56 · 1120 阅读 · 0 评论 -
linux下C编程free()时出现飘忽诡异的段错误(核心已转储)问题
先说一下问题现场。代码如下 free(volthisframe->Tops); free(volthisframe->Bots); printf("what\n");free(volthisframe->SCTops);free(volthisframe->SCBots);运行时出现段错误,“what”随机出现,也就是说可能是打印前出现段错误,也可能是打印后出现原创 2015-05-07 16:24:18 · 4383 阅读 · 0 评论 -
系统初始化函数集(subsys_initcall)和初始化段应用
前言:前段时间做一个项目需要设计一个动态库,并希望在加载库的同时自动执行一些初始化动作,于是联想到了linux内核众子系统的初始化,于是研究之,并在过这程中发现了初始化段的存在,利用初始化段实现了该功能。工作一年,笔记积累多了,慢慢变得杂乱无章,于是开博,一方面整理笔记,梳理知识,另一方面和大家交流,共同进步。 keyword:subsys_initcall, init, init_转载 2013-09-17 11:38:18 · 952 阅读 · 0 评论 -
source insight 技巧集锦
1、背景色选择 要改变背景色Options->preference->windows background->color设置背景色2、解决字符等宽对齐问题。 SIS默认字体是VERDANA,很漂亮。这网页上应该也是用的VERDANA字体。但由于美观的缘故,VERDANA字体是不等宽的。比如下面两行 llllllllll MMMMMMM转载 2013-09-09 14:17:04 · 1910 阅读 · 0 评论 -
UNIX IO---再谈文件描述符
在C程序中,文件由文件指针或者文件描述符表示。ISO C的标准I/0库函数(fopen, fclose, fread, fwrite, fscanf, fprintf等)使用文件指针,UNIX的I/O函数(open, close, read, write, ioctl)使用文件描述符。下面重点来说下,文件描述符是如何工作的。 文件描述符相当于一个逻辑句柄,而open,close等函转载 2013-07-24 11:42:25 · 607 阅读 · 0 评论 -
linux中C下管理wifi无线连接wpa_supplicant的处理方式
可以见这个讨论,http://bbs.csdn.net/topics/390212247wpa_supplicant本身是有个接口库,就是wpa_ctrl.c,要调用的话必须把这个库包含进来,这个其实比较麻烦。要去找相应版本的源代码还要查看它的接口函数定义之类的。目前这个项目AP其实是固定的,那就直接用shell混合编程处理简单一些。用popen最好,直接捕获输出信息到字符原创 2013-07-31 11:07:03 · 4391 阅读 · 3 评论 -
C程序调用shell脚本共有三种方法
C程序调用shell脚本共有三种法子 :system()、popen()、exec系列函数call_exec1.c ,内容为:system() 不用你自己去产生进程,它已经封装了,直接加入自己的命令exec 需要你自己 fork 进程,然后exec 自己的命令popen() 也可以实现执行你的命令,比system 开销小1)system(shell命令或shell脚本路径);转载 2013-07-26 11:47:37 · 1079 阅读 · 0 评论 -
linux c程序中获取shell脚本输出
总的来说,popen是个好方法,这就实现了shell和c的混合编程,异常强大。1. 前言 Unix界有一句名言:“一行shell脚本胜过万行C程序”,虽然这句话有些夸张,但不可否认的是,借助脚本确实能够极大的简化一些编程工作。比如实现一个ping程序来测试网络的连通性,实现ping函数需要写上200~300行代码,为什么不能直接调用系统的ping命令呢?通常在程序中通转载 2013-07-26 16:22:22 · 896 阅读 · 0 评论 -
关于嵌入式操作系统几个主流方向的比较
后面应该是同济软件学院院长的一个讲话稿,在不同的地方,不同的时间讲了很多次。在校内对新生培训的时候还加了一些宣传其学院的内容。但仍然不失为了解嵌入式软件开发几个主流路径的好文章。另外这篇文章年纪应该比较大了,能够查到的最早大概在08年。总的看下来,再根据我自己的开发经验,另外有些想法。WINCE在基于PDA或者一些轻量级手持终端的应用上目前是霸主地位(更重量级的终端比如原创 2013-08-06 16:23:56 · 2075 阅读 · 0 评论 -
linux下C语言线程的介绍
原文地址:linux下C语言线程的介绍作者:Ree雪影今天一天小记。。linux下线程的介绍下面是主要的函数介绍:创建线程要实现的函数 int pthread_create(pthread_t *thread,pthread_attr_t *attr,void * (*start_routine)(void *),void *arg);gcc编译多线程程序时,必须转载 2013-08-07 15:57:27 · 929 阅读 · 0 评论 -
Spin lock 与mutex 的区别
http://blog.csdn.net/kyokowl/article/details/6294341POSIX threads(简称Pthreads)是在多核平台上进行并行编程的一套常用的API。线程同步(Thread Synchronization)是并行编程中非常重要的通讯手段,其中最典型的应用就是用Pthreads提供的锁机制(lock)来对多个线程之间共 享的临转载 2013-08-09 15:32:05 · 1577 阅读 · 0 评论 -
gcc中-pthread和-lpthread的区别
用gcc编译使用了POSIX thread的程序时通常需要加额外的选项,以便使用thread-safe的库及头文件,一些老的书里说直接增加链接选项 -lpthread 就可以了,像这样:Shell代码 gcc -c x.c gcc x.o -ox -lpthread 而gcc手册里则指出应该在编译和链接时都增加 -pthread 选项,像这样:转载 2013-08-09 16:54:21 · 842 阅读 · 0 评论 -
Linux下面的线程锁,条件变量以及信号量的使用
需要注意的是:"Notice that when pthread_cond_wait returns, we always test the condition again, because spurious wakeups can occur: a wakeup when the desired condition is still not true.".对于这段话的理解明显是错转载 2013-08-09 15:30:04 · 750 阅读 · 0 评论 -
pthread_join函数及其它线程终止函数
pthread_join使一个线程等待另一个线程结束。代码中如果没有pthread_join主线程会很快结束从而使整个进程结束,从而使创建的线程没有机会开始执行就结束了。加入pthread_join后,主线程会一直等待直到等待的线程结束自己才结束,使创建的线程有机会执行。所有线程都有一个线程号,也就是Thread ID。其类型为pthread_t。通过调用pthread_self(转载 2013-08-09 17:07:58 · 971 阅读 · 0 评论 -
既然没有人来说出真相,那就只有我来了
Qt这货实在不争气,花了我三天的时间,查了无数资料。5.0以上,Qt官方只说strongly recommended,要有opengl。可是实际呢?奶奶个熊,没有opengl根本没法把qtquick编译出来。没有qtquick还有啥意思?Qt也不说清楚。stackoverflow上很多人也尝试了,根本不行。事实就是qtquick 2.0以后的实现调用了opengl的接口。所原创 2015-08-24 20:40:26 · 674 阅读 · 0 评论