
内核
文章平均质量分 85
jzzjsy
这个作者很懒,什么都没留下…
展开
-
编译海思3520内核时候报错drivers/mfd/ezx-pcap.c:205:2: error: implicit declaration of function 'irq_to_gpio' [-
以下的解决的办法Received: by 10.180.24.165 with SMTP id v5mr1627194wif.1.1344895802661; Mon, 13 Aug 2012 15:10:02 -0700 (PDT)MIME-Version: 1.0Path: q11ni115673333wiw.1!nntp.google.com!goblin2!gobli原创 2013-06-24 13:53:43 · 4194 阅读 · 3 评论 -
3G模块PPPD拨号流程分析
1 案例描述现在公司的前端产品很多都使用3G模块来作为网络连接的接口,而3G拨号使用PPPD程序,了解拨号程序的流程对解决3G连接网络的问题会有很大的帮助,鉴于此重要性,对PPPD的拨号流程做一个简要的分析。因为PPPD程序不依赖与硬件平台,这里没有指定具体应用的场景,目的在于说明这个拨号程序的通用性。目前公司平台采用的这个程序的版本是ppp-2.4.3。本文只对PPP转载 2013-11-07 13:52:28 · 2115 阅读 · 0 评论 -
中断和定时器不允许睡眠: BUG: scheduling while atomic: swapper/0/0x00000100
BUG: scheduling while atomic: swapper/0/0x00000100 Modules linked in: iqs316转载 2013-11-21 17:16:36 · 2161 阅读 · 0 评论 -
pppd源码详解
前言:PPP(Point to Point Protocol)协议是一种广泛使用的数据链路层协议,在国内广泛使用的宽带拨号协议PPPoE其基础就是PPP协议,此外和PPP相关的协议PPTP,L2TP也常应用于VPN虚拟专用网络。随着智能手机系统Android的兴起,PPP协议还被应用于GPRS拨号,3G/4G数据通路的建立,在嵌入式通信设备及智能手机中有着广泛的应用基础。本文主要分析Linux转载 2013-11-26 17:24:22 · 9598 阅读 · 4 评论 -
自旋锁和信号量的区别
信号量可能允许多个持有者,而自旋锁在任何时候只能允许一个持有者,当然信号量也有一个持有者的(就是互斥锁),允许多个持有者的是计数信号量。信号量适合保持时间较长的情况,而自旋锁适合于保持时间较短的,自旋锁不会引起调用者睡眠,如果自旋锁已经被别的执行单元保持,调用者就一直循环在那里看是否该自旋锁的保持者已经释放了锁,"自旋"因此而得名. (自旋锁不会睡眠,只会在那里不停的循环等待),而信号原创 2013-11-12 14:01:18 · 618 阅读 · 0 评论 -
PPPOE和pppd的流程详解
一 终端 终端介绍 终端是一种字符型设备,它有多种类型,通常使用tty来简称各种类型的终端设备。看下面一副图展示了计算机系统与终端之间得联系。 终端驱动程序的主要功能是在程序与相关设备之间进行数据传递。在一个LINUX内核自身的内部,终端基本上包括两个主要的软件部分:设备驱动程序和行规则(见下图)。 设备驱动程序是一个写到具体硬件上原创 2013-11-07 13:46:46 · 12404 阅读 · 1 评论 -
对文件操作过程中的小心得
ch = fgetc(fp)是对fp文件进行去一个字符,但是要注意的是,ch读完之后,fp已经发生1个字节的偏移了,假如下面还要对fp进行操作,就需要重新进行fseek。fputc('\n', fp)写入一个字符到fp文件中,fgets读取一串字符:fgets(buf, 255, fp);读完整个文件返回NULL,fopen也是返回NULL(假如出错的话)。假如fegets读取小于一行的字原创 2013-11-15 16:07:10 · 552 阅读 · 0 评论 -
make module失败的原因cc1: error: unrecognized command line option "-m64"
[root@localhost 123]# makemake -C /work/cs/YL-9G45/linux-2.6.30 M=/work/rootfs/123 modulesmake[1]: Entering directory `/work/cs/YL-9G45/linux-2.6.30' CC [M] /work/rootfs/123/test.occ1: erro转载 2013-12-14 14:17:51 · 2949 阅读 · 0 评论 -
spi(2)pxe8311+spi-altera+m25p驱动设计
这个是也是网上转载过来的,流程很有用1. spi master设备相关数据static struct resource ninja_platform_resources[] = { [0] = { .flags =IORESOURCE_MEM, }};static struct platform_device ninja_platform_device = {转载 2014-03-06 16:12:06 · 814 阅读 · 0 评论 -
spi(3)
浅析驱动注册函数driver_register()(转) int driver_register(struct device_driver * drv){ if ((drv->bus->probe && drv->probe) ||//drv和drv所属的bus之中只要1个提供该函数即可,否则也只能调用bus的函数,而不理会drv的 (drv->bu转载 2014-03-06 16:21:41 · 1783 阅读 · 0 评论 -
spi流程
开发板为sbc3530,芯片为ti的omap3530Mscpi主设备。/arch/arm/match-omap2/devices.cstatic struct omap2_mcspi_platform_configomap2_mcspi1_config = { .num_cs = 4,}; static struct resourceomap2_转载 2014-03-06 16:38:54 · 1565 阅读 · 0 评论 -
spi(5)参考资料
OMAP3630下的Linux SPI总线驱动分析(2)4 OMAP3630 SPI 控制器驱动 在Linux内核中,SPI 控制器驱动位于drivers/spi目录下,OMAP3630 的spi控制器驱动程序为omap2_mcspi.c。 SPI 控制器驱动的注册采用Platform设备和驱动机制。4.1 SPI 控制器的Platform devi转载 2014-03-06 16:26:02 · 1726 阅读 · 0 评论 -
虚拟机挂载新硬盘的方法
随着在虚拟机中存储的东西的逐渐的增加,虚拟机的硬盘也逐渐告急,因此急需拓展一块新的虚拟磁盘。以下便是在VMware 中添加新的虚拟磁盘的方法: 一、VMware新增磁盘的设置步骤(建议:在设置虚拟的时候,不要运行虚拟机的系统,不然添加了新的虚拟磁盘则要重启虚拟机)1、选择“VM”----“setting”并打开,将光标定位在hard Disk这一选项,然后点击下方的Add按钮原创 2013-09-24 19:31:06 · 1781 阅读 · 0 评论 -
Linux时间函数
转载http://blog.youkuaiyun.com/water_cow/article/details/7521567系统环境:ubuntu10.04简介本文旨在为了解Linux各种时间类型与时间函数提供技术文档。1、Linux下常用时间类型Linux下常用时间类型有四种:time_t、struct tm、struct timeval、struct timespec转载 2014-03-18 13:41:09 · 676 阅读 · 0 评论 -
Linux 2.6.32系统中基于dm6467平台ASOC架构的音频驱动
花了大概40天时间从零开始调音频驱动到目前的基本成功,中间也走了不少弯路,今天抽点时间把整个流程走下来,希望以后能作为参考。 1.dm6467平台sdk_3_10版本中使用到的audio模块框架采用asoc模式,asoc框架主要包含4部分内容: (1)codec模块驱动:如,visiondigi板子上采用tlv320aic23芯片,代码中文件tlv320转载 2014-03-27 10:32:22 · 770 阅读 · 0 评论 -
SPI内核驱动模型-dm8127
利用TI提供的已有SPI内核驱动模型,该方案需要我们了解内核的SPI驱动模型是如何实现的。3.1. SPI内核驱动模型在2.6的linux内核中,SPI的驱动架构可以分为如下三个层次:SPI 核心层、SPI控制器驱动层和SPI设备驱动层。Linux中SPI驱动代码位于drivers/spi目录。3.1.1. SPI核心层SPI核心层是Linux的SPI核心部分,转载 2014-03-01 10:50:47 · 2229 阅读 · 2 评论 -
Linux内核模块时间同步函数汇总
在linux内核模块中能用到的函数比用户空间多,但是它的函数往往被用得很少。当然在内核中叶可以调用用户空间的函数只要直接调用系统调用的封装函数就行,如下:如调用long gettimeofday(struct timeval tv, struct timezone tz);函数可以直接调用封装体:_syscall1(long,gettimeofday, struct timeval,tv,转载 2013-11-21 14:28:34 · 899 阅读 · 0 评论 -
linux 拷贝远程文件
如果要从远程主机拷贝文件,必须用SCP命令,下面是SCP命令的用法。一、将本机文件复制到远程服务器上 #scp /home/administrator/news.txt root@192.168.6.129:/etc/squid /home/administrator/ 本地文件的绝对路径 news.txt 要复制到服务器上的本地文件 root 通过root用户登录到远程服转载 2013-11-20 15:36:39 · 946 阅读 · 0 评论 -
SD存储卡系统物理层简化规范V2.00——汉化简化版
SD存储卡系统物理层简化规范V2.00——汉化简化版原文地址:http://wiki.emsym.com/wiki/SD%E5%AD%98%E5%82%A8%E5%8D%A1%E7%B3%BB%E7%BB%9F%E7%89%A9%E7%90%86%E5%B1%82%E7%AE%80%E5%8C%96%E8%A7%84%E8%8C%83V2.00%E2%80%94%E2%80%94%E6%B1%转载 2013-09-11 14:31:20 · 2448 阅读 · 0 评论 -
设置mac地址
*命令行设置mac地址 ifconfig eth0 down busybox ifconfig eth0 hwether 001122334455 (如果前两位不是偶数,可能会报错ifconfig: SIOCSIFHWADDR: Cannot assign requestedaddress,因为表示请求的MAC地址不是一个单播地址,要获得的第一个字节作为一个单播地址必原创 2013-10-08 14:34:56 · 1175 阅读 · 0 评论 -
insmod 驱动8191su或者rt3070报错
root@192:/mnt# insmod 87insmod: can't read '87': No such file or directoryroot@192:/mnt# insmod 8712u.ko 8712u: Unknown symbol usb_alloc_urb (err 0)8712u: Unknown symbol usb_free_urb (err 0)原创 2013-10-08 18:30:43 · 10136 阅读 · 0 评论 -
网络编程 socket 之 bind 函数
网络编程socket之bind函数摘要 :在套接口中,一个套接字只是用户程序与内核交互信息的枢纽,它自身没有太多的信息,也没有网络协议地址和端口号等信息,在进行网络通信的时候,必须把一个套接字与一个地址相关联,这个过程就是地址绑定的过程。许多时候内核会我们自动绑定一个地址,然而有时用户可能需要自己来完成这个绑定的过程,以满足实际应用的需要,最典型的情况是一个服务器进程需要绑定一个众所周知的地址原创 2013-10-11 18:28:31 · 714 阅读 · 0 评论 -
setsockopt函数使用
int setsockopt (SOCKET s, int level, int optname, const char FAR * optval, int optlen );The Windows Sockets setsockopt function原创 2013-10-11 18:23:29 · 1267 阅读 · 0 评论 -
转载别人的错误,自己提高
编程不经历错误或警告,怎能见彩虹,没有人能随随便便成为高手。身为程序员的我们,如果哪一天没有了错误或警告的提示,一定会有一种不祥的预感,对吧,都懂的。编程N年来,碰到过的问题多得自己都记不清了,你也一样,如果可以选择,我愿时光倒流,真希望都能记下来,现在就可以写本《错误集》了,。下面是我心情好时,有想法时,随手记下的几个错误或警告,遗憾的是,这些年,就记下那么几个而已,见笑了,希望能给像我一样在路转载 2013-09-26 16:59:37 · 1413 阅读 · 0 评论 -
编译链接库的问题
gcc lib.c -c生成 lib.o编译库是ar -r lib.a lib.o, 这个时候要注意,一定是先生成*.o文件,在进行链接,其实库只是一个链接的过程的结果。然后gcc a.c lib.a -o hello最后就生成了hello可执行文件了。链接上了lib.a里面的函数了。原创 2013-10-16 16:42:59 · 507 阅读 · 0 评论 -
中断申请后在close(fd)之后,进行中断释放 free_irq,但是有一下报错
------------[ cut here ]------------WARNING: at kernel/irq/manage.c:1147 __free_irq+0x108/0x17c()Trying to free already-free IRQ 19Modules linked in: sar_adc hi3518_adec(P) hi3518_aenc(P) hi3518原创 2013-10-25 15:31:15 · 2026 阅读 · 2 评论 -
ubuntu 桥接方式 设置静态ip
1.虚拟机设置桥接方式 2.修改文件/etc/network/interfaces3.文件/etc/resolv.conf 配置dns(与宿主电脑的一样)4.重启网络 sudo /etc/init.d/networking restart.原创 2013-10-22 16:31:28 · 607 阅读 · 0 评论 -
有关于指针和指针变量的错误的理解
从cdsn上看到这么一篇程序:#include struct S{int i;int *p;};void main(){struct S s;int *p=&s.i;p[0]=1;p[1]=2;s.p=p;s.p[1]=3; pritnf("aa");s.p[0]=4;}以下是自己加的打印信息: 1 #in原创 2013-10-29 16:35:33 · 757 阅读 · 0 评论 -
异步通知机制=====》》fasync
应用层中启用异步通知机制其实在应用层启用异步通知只三个步骤:1)signal(SIGIO, sig_handler);调用signal函数,让指定的信号SIGIO与处理函数sig_handler对应。2)fcntl(fd, F_SET_OWNER, getpid());指定一个进程作为文件的“属主(filp->owner)”,这样内核才知道信号要发给哪个进程。3)f_fla原创 2013-10-23 17:12:36 · 716 阅读 · 0 评论 -
linux设备驱动:poll和sellct
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx接下来会讲系统调用select在驱动中的实现,如果对系统调用select不太懂的话,建议先看书补习一下。xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx转载 2013-11-18 14:13:52 · 774 阅读 · 0 评论 -
wait_event_interruptible_timeout和schedule_timeout的区别
上面提到的采用schedule()函数的解决方法之所以还不是最佳的,其根本原因在于调用schedule()函数的进程依然处于CPU的运行队列中。为了解决这个问题,此时应该能想到内核提供的另外一种可供设备驱动程序使用的调度类的基础设施:schedule_timeout。所以,如果一个延迟1 s的函数可以用下面的这样一个简单的代码段来实现:delay_1s() { set_curren转载 2013-11-19 15:02:27 · 2336 阅读 · 0 评论 -
ALSA声音编程介绍
这里了解一下各个参数的含义以及一些基本概念。样本长度(sample):样本是记录音频数据最基本的单位,常见的有8位和16位。通道数(channel):该参数为1表示单声道,2则是立体声。桢(frame):桢记录了一个声音单元,其长度为样本长度与通道数的乘积。采样率(rate):每秒钟采样次数,该次数是针对桢而言。周期(period):音频设备一次处理所需要的桢数,对于音频设备的转载 2014-06-18 19:23:31 · 715 阅读 · 0 评论