![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux
zcabcd123
这个作者很懒,什么都没留下…
展开
-
Serial Programming Guide for POSIX Operating Systems
Serial Programming Guide for POSIX Operating SystemsPOSIX操作系统串行编程指南5th Edition, 3rd Revision Copyright 1994-2003 by Michael R. SweetTranslated by Cedar Peng ( 翻译 彭雪松 )-->允许转载 2012-05-23 13:06:07 · 1861 阅读 · 0 评论 -
linux 0v9650驱动分析
学习了裸机OV9650的P通道LCD直接显示程序,作为这点基础开始分析OV9650在linux设备驱动程序。昨天看了点这个驱动程序,让我很郁闷的是写这个程序的人是有毛病还是怎么回事,简简单单的IO口功能引脚的定义,整出了一个套一个的定义,看的我晕乎乎的,也可能是哥根本没有入门,看别人牛逼的程序就看迷糊了。鉴于上面这种情况,我在程序跟踪时只能带一下了。我们跟踪程序按照常规方法,跟着驱动的编写转载 2012-10-14 15:27:10 · 1391 阅读 · 0 评论 -
kmalloc()和__get_free_pages()
kmalloc()和__get_free_pages() 2011-09-21 15:53:34| 分类: 嵌入式驱动|字号 订阅在Linux内核中对应进程内存区域的数据结构是: vm_area_struct, 内核将每个内存区域作为一个单独的内存对象管理,相应的操作也都一致。采用面向对象方法使VMA结构体可以代表多种类型的内存区域--比如内存映射文转载 2012-10-14 15:52:31 · 1643 阅读 · 0 评论 -
Linux SPI框架(上)
Linux SPI框架(上)分类: Linux驱动程序2012-07-10 16:51 451人阅读 评论(1) 收藏 举报 水平有限,描述不当之处还请指出,转载请注明出处http://blog.csdn.net/vanbreaker/article/details/7733476 Linux的SPI子系统采用主机驱动和外设驱动分离的思想,首先主机SPI控制转载 2012-11-08 10:16:11 · 779 阅读 · 0 评论 -
Linux SPI框架(中)
Linux SPI框架(中)分类: Linux驱动程序2012-07-11 09:30 545人阅读 评论(1) 收藏 举报水平有限,描述不当之处还请指出,转载请注明出处http://blog.csdn.net/vanbreaker/article/details/7734150 上节介绍了SPI子系统中的一些重要数据结构和SPI子系统初始化的第一步转载 2012-11-08 10:18:31 · 1334 阅读 · 0 评论 -
Linux SPI框架(下)
Linux SPI框架(下)分类: Linux驱动程序2012-07-11 20:44 424人阅读 评论(1) 收藏 举报水平有限,描述不当之处还请之处,转载请注明出处http://blog.csdn.net/vanbreaker/article/details/7737833 本节以spidev设备驱动为例,来阐述SPI数据传输的过程。spidev是内核转载 2012-11-08 10:19:23 · 2453 阅读 · 0 评论 -
linux spi驱动分析
[转]linux spi驱动分析 (2011-07-21 16:11)分类: 设备驱动关于spi的学习,我觉得最好的方法还是看Linux的源代码,主要是driver/spi/spi.c(h),spidev.c(h)。spi dev的示例可以看看at25.c,spi总线的示例可以看omap_uwire或者spi_s3c24xx.c和spi_s3c24xx_gpio.c。在看这转载 2012-11-08 10:29:35 · 954 阅读 · 0 评论 -
linux用户态和内核态通信之netlink机制
这是一篇学习笔记,主要是对《Linux 系统内核空间与用户空间通信的实现与分析》中的源码imp2的分析。其中的源码,可以到以下URL下载: http://www-128.ibm.com/developerworks/cn/linux/l-netlink/imp2.tar.gz [size=3]参考文档[/size] 《Linux 系统内核空间与用户空间通信的实现与分析》 陈转载 2012-12-08 12:53:07 · 3141 阅读 · 0 评论 -
Linux Netlink通信机制详解
前面有一篇文章其实已经介绍过Netlink方面的知识,还有一个内核和用户空间之间的一个交互例子,这篇文章主要是更细节和基础的知识介绍!Netlink 是一种特殊的 socket,它是 Linux 所特有的,由于传送的消息是暂存在socket接收缓存中,并不被接收者立即处理,所以netlink是一种异步通信机制。 系统调用和ioctl 则是同步通信机制。用户空间进程可以通过标准socket转载 2012-12-08 13:32:58 · 17468 阅读 · 0 评论 -
linux netlink机制介绍与实例
开发和维护内核是一件很繁杂的工作,因此,只有那些最重要或者与系统性能息息相关的代码才将其安排在内核中。其它程序,比如GUI,管理以及控制部分的代码,一般都会作为用户态程序。在linux系统中,把系统的某个特性分割成在内核中和在用户空间中分别实现一部分的做法是很常见的(比如linux系统的防火墙就分成了内核态的Netfilter和用户态的iptables)。然而,内核程序与用户态的程序又是怎样行通讯转载 2012-12-08 14:58:41 · 31921 阅读 · 1 评论 -
Linux内核学习:netlink的内核实现原理
注: 当用户态进程发送数据时,调用sendmsg实现,其调用内核netlink_sendmsg函数完成,新建了sk_buff,然后给其cb私有缓存中保存了源地址信息,然后把数据拷贝到sk_buff中[nlmsghdr头部已经附在数据部分前面,作为数据部分了]然后利用netlink_unicast发送出去 而当内核态发送时,新建了一个sk_buff,头部填写了nlmsghd转载 2012-12-09 01:49:57 · 5337 阅读 · 0 评论 -
Linux 系统内核空间与用户空间通信的实现与分析
开心网 新浪微博 搜狐博客 百度收藏 谷歌收藏 qq书签 豆瓣 淘江湖 Facebook Twitter Digg Yahoo!Bookmarks[http://www.ibm.com/developerworks/cn/linux/l-netlink/index.html]多数的 Linux 内核态程序都需要转载 2012-12-09 01:51:29 · 2593 阅读 · 0 评论 -
netlink---Linux下基于socket的内核和上层通信机制(上)
目录(?)[+]我最近有一个项目需求,需要在linux网卡驱动中加入一个自己的驱动,实现在内核态完成一些报文处理(这个过程可以实现一种零COPY的网络报文截获),对于复杂报文COPY下必要的数据交给用户态来完成(因为过于复杂的报文消耗CPU太大,会导致中断占用时间太长)。因此需要一种内核和用户态配合的通信机制,尝试了很多方式都不太理想,最后采用netlink+内存映射的模式转载 2012-12-09 21:53:54 · 14489 阅读 · 0 评论 -
2440-中断寄存器详解[转]
S3C2440的中断寄存器:1.中断分两大类:内部中断和外部中断。2.外部中断。24个外部中断占用GPF0-GPF7(EINT0-EINT7),GPG0-GPG15(EINT8-EINT23)。用这些脚做中断输入,则必须配置引脚为中断,并且不要上拉。具体参考datesheet数据手册。寄存器:EXTINT0-EXTINT2:三个寄存器设定EINT0-EINT23的触发方式。转载 2012-12-12 13:29:10 · 771 阅读 · 0 评论 -
gpio_request 原形代码
gpio_request 原形代码分类: 我所知的linux2011-08-22 19:24 2502人阅读 评论(0) 收藏 举报 其原型为 int gpio_request(unsigned gpio, const char *label) 先说说其参数,gpio则为你要申请的哪一个管脚,label则是为其取一个名字。其具体实现如下:[cpp] v转载 2012-12-13 14:23:10 · 1619 阅读 · 0 评论 -
linux 内核的链表操作
linux 内核的链表操作(好文不得不转)以下全部来自于http://www.ibm.com/developerworks/cn/linux/kernel/l-chain/index.html 无任何个人意见。 本文详细分析了 2.6.x 内核中链表结构的实现,并通过实例对每个链表操作接口进行了详尽的讲解。一、 链表数据结构简介链表是一种常用的组织有转载 2012-10-13 15:52:10 · 621 阅读 · 0 评论 -
linux 内在映射
一. 概述 内存映射,简而言之就是将用户空间的一段内存区域映射到内核空间,映射成功后,用户对这段内存区域的修改可以直接反映到内核空间,相反,内核空间对这段区域的修改也直接反映用户空间。那么对于内核空间用户空间两者之间需要大量数据传输等操作的话效率是非常高的。 首先,驱动程序先分配好一段内存,接着用户进程通过库函数mmap()来告诉内核要将多大的内存映转载 2012-10-12 14:17:17 · 738 阅读 · 0 评论 -
Linux USB Gadget--各环节的整合
Linux USB Gadget软件结构一文中分析Linux USB Gadget软件分为三层。这三层其中两层是与硬件无关的,分别是Gadget功能驱动层,USB设备层一层是与硬件相关的是UDC层。每一层都提供一种关键的数据结构与函数与其他层交互。 Gadget功能驱动层: 最主要的结构是struct usb_composite_driver,这个结构在这层定义,并转载 2012-10-04 16:59:18 · 7542 阅读 · 0 评论 -
linux 串口应用开发
linux下串口应用开发1人收藏此文章, 我要收藏发表于2年前 , 已有703次阅读 共0个评论 据通信的基本方式可分为并行通信与串行通信两种。· 并行通信是指利用多条数据传输线将一个资料的各位同时传送。它的特点是传输速度快,适用于短距离通信,但要求传输速度较高的应用场合。· 串行通信是指利用一条传输线将资料一位位地顺序传送。特点是通信线路简单,转载 2012-05-23 18:54:11 · 674 阅读 · 0 评论 -
linux串口资料
linux串口资料NAMEtermios, tcgetattr, tcsetattr, tcsendbreak, tcdrain, tcflush, tcflow, cfmakeraw, cfgetospeed, cfgetispeed, cfsetispeed, cfsetospeed - 获取和设置终端属性,行控制,获取和设置波特率 SYNOPSIS 总览#include #i转载 2012-05-23 20:01:51 · 1189 阅读 · 0 评论 -
串口VMIN VTIME 详解
以前跟着做过VxWorks的开发,主要通信方式是串口,因为底层BSP包已经做好了,串口通信非常简单。后来接触Linux,在一块OK6410上跑Linux串口通信,才发现原来天真的以为甚是简单的串口变得如此的不简单。#include 1、串口的操作1.1打开:fd = open("/dev/ttySAC1", O_RDWR | O_NOCTTY | O_NDELAY);转载 2012-05-23 20:05:53 · 27681 阅读 · 1 评论 -
关于Linux下串口通信的一点心得
关于Linux下串口通信的一点心得 (2007-10-28 17:03)分类: 串口产品这几天,由于长春门检系统项目的需要,涉及到了读卡器信息的串口读取,所以在Linux下串口信息的读取有了一点心得体会。1. 打开串口 与其他的关于设备编程的方法一样,在Linux下,操作、控制串口也是通过操作起设备文件进行的。在Linux下,串口的设转载 2012-05-23 20:14:08 · 1292 阅读 · 0 评论 -
linux likely and unlikely解析
看内核时总遇到if(likely( )){}或是if(unlikely( ))这样的语句,最初不解其意,现在有所了解,所以也想介绍一下。likely() 与 unlikely()是内核(我看的是2.6.22.6版本,2.6的版本应该都有)中定义的两个宏。位于/include/linux/compiler.h中,具体定义如下:#define likely(x) __builtin_e转载 2012-07-08 11:04:26 · 3044 阅读 · 1 评论 -
linux list解读
作者:Sam (甄峰) sam_code@hotmail.com Sam之前看2.4 kernel时,常看到List.也仔细看了一下,但现在长期没有看kernel,没有写程序,已经忘记了很多。今天又看一看并记录下来。 Linux Kernel中,常常需要使用双向链表。在~/include/linux/list.h中,就定义了双向链表和常用的function.转载 2012-07-08 13:08:23 · 4879 阅读 · 0 评论 -
优化屏障和内存屏障
优化屏障和内存屏障 优化屏障编译器编译源代码时,会将源代码进行优化,将源代码的指令进行重排序,以适合于CPU的并行执行。然而,内核同步必须避免指令重新排序,优化屏障(Optimization barrier)避免编译器的重排序优化操作,保证编译程序时在优化屏障之前的指令不会在优化屏障之后执行。Linux用宏barrier实现优化屏障,gcc编译器的优化屏障宏定义列出如下(在incl转载 2012-07-08 13:11:04 · 612 阅读 · 0 评论 -
linux 等待队列
Linux内核的等待队列是以双循环链表为基础数据结构,与进程调度机制紧密结合,能够用于实现核心的异步事件通知机制。在这个链表中,有两种数据结构:等待队列头(wait_queue_head_t)和等待队列项(wait_queue_t)。等待队列头和等待队列项中都包含一个list_head类型的域作为"连接件"。它通过一个双链表和把等待tast的头,和等待的进程列表链接起来。从上图可以清晰看到。所转载 2012-08-14 10:24:37 · 464 阅读 · 0 评论 -
Linux 休眠唤醒(一)
说明:1. Based on linux2.6.32, only for mem(SDR)2. 有兴趣请先参考阅读: 电源管理方案APM和ACPI比较.docLinux系统的休眠与唤醒简介.doc3. 本文先研究标准linux的休眠与唤醒,android对这部分的增改在另一篇文章中讨论4. 基于手上的一个项目来讨论,这里只讨论共性的地方 虽然linux支持三种省电模式转载 2012-09-29 20:43:02 · 728 阅读 · 0 评论 -
Linux 休眠唤醒(二)
三、pm_test属性文件读写int pm_test_level = TEST_NONE; static const char * const pm_tests[__TEST_AFTER_LAST] = { [TEST_NONE] = "none", [TEST_CORE] = "core", [TEST_CPUS] = "proces转载 2012-09-29 20:45:22 · 632 阅读 · 0 评论 -
Linux休眠唤醒(三)
五、suspend和resume代码走读 下面对suspend分的几个阶段都是按照pm test的5中模式来划分的:freezer、devices、platform、processors、core。suspend第一阶段:freezerint enter_state(suspend_state_t state){ int error;转载 2012-09-29 20:46:05 · 1103 阅读 · 0 评论 -
linux休眠唤醒(四)
suspend第三、四、五阶段:platform、processor、corestatic int suspend_enter(suspend_state_t state){ int error; if (suspend_ops->prepare) { // 平台特定的函数,mtkpm.c, 有定义,对pmic和cpu dll的一些设置转载 2012-09-29 20:46:41 · 1298 阅读 · 0 评论 -
翻译:Linux的电源管理架构
目录(?)[+]设备电源管理Copyright (c) 2010 Rafael J. Wysocki, Novell Inc.Copyright (c) 2010 Alan Sternstern@rowland.harvard.edu *************************************************************本转载 2012-09-29 20:47:48 · 776 阅读 · 0 评论 -
Linux USB Gadget--软件结构
USB Gadget是分层的软件结构,本文分析的是2.6.32.2版本的Gadget软件结构,这个软件结构与以前版本的变化很大。USB Gadget软件结构总共分为三层:一. UDC层 这一层是与硬件相关层。相关文件s3c2410_udc.c s3c2410_udc.h。s3c2410设备控制器作为一个linux设备在这一层是作为platform设备而注册到linux设备转载 2012-10-04 15:17:09 · 1910 阅读 · 3 评论 -
中断服务下半部之工作队列【转】
工作队列概述 工作队列 (work queue) 是另外一种将工作推后执行的形式,它和我们前面讨论的所有其他形式都不相同。工作队列可以把工作推后,交由一个内核线程去执行—这个下半部分总是会在进程上下文执行,但由于是内核线程,其不能访问用户空间。 最重要特点的就是工作队列允许重新调度甚至是睡眠。 通常,在工作队列和软中断 /tasklet 中作出选择非常容易。可使用以下规则:转载 2012-12-13 12:59:31 · 732 阅读 · 0 评论