徐邦达书法价格:gpio linux 实现模型

来源:百度文库 编辑:偶看新闻 时间:2024/05/08 19:29:19
原文地址:http://lhsblog01.blog.163.com/blog/static/1020045192010221104237126/
     
       GPIO是与硬件体系密切相关的,linux提供一个模型来让驱动统一处理GPIO,即各个板卡都有实现自己的gpio_chip控制模块:request, free, input,output, get,set,irq...
        然后把控制模块注册到内核中,这时会改变全局gpio数组:gpio_desc[]. 
        当用户请求gpio时,就会到这个数组中找到,并调用这个GPIO对应的gpio_chip的处理函数。
        gpio实现为一组可用的 gpio_chip, 由驱动传入对应 gpio的全局序号 去 request, dataout ,datain, free. 这时会调用gpio_chip中具体的实现。
       寄存器读写函数:   __raw_writel()   __raw_writeb()   __raw_readl()   __raw_readb()
        gpio是一组可控件的脚,由多个寄存器同时控制。通过设置对应的寄存器可以达到设置GPIO口对应状态与功能。
数据状态,输入输出方向,清零,中断(那个边沿触发), 一般是一组(bank)一组的。
//****************linux 中 GPIO模型****************************************//
注册方法:
1:struct gpio_chip: 表示一个gpio controller.通过这个结构抽象化所有的 GPIO源,而让板上其它的模块可以用相同的接口调用使用这些GPIO。
2: struct gpio_desc: 表示一个gpio口,含对应的 gpio_chip.
3: ARCH_NR_GPIOS:  与板相关的GPIO口数量,即是全局GPIO数组:static struct gpio_desc gpio_desc[ARCH_NR_GPIOS];
4: 注册 gpio_chip时,就是根据 chip 的数据 修改全局 GPIO数组中 gpio_desc 字段(chip, flags)。
//************* twl4030 中 GPIO的实现 *******************//
首先 twl4030中的 GPIO模块: 在 twl4030的驱动注册时,probe中,生成了GPIO对应的 i2c_client 与 platform_device.
twl4030,当加载GPIO的驱动(匹配platform_device)时,首先进行对应的设置,GPIO设置。
然后设置结构: gpio_chip: twl_gpiochip: gpio_twl4030_pulls,pio_twl4030_debounce,
注册 之:ret = gpiochip_add(&twl_gpiochip);//添加到全局的 gpio_desc数组中。即是设? ......   全部文字 全部图文
相关文档:

Linux 2.6.19 内核编译配置选项简介


Code maturity level options
代码成熟度选项
Prompt for development and/or incomplete code/drivers 显示尚在开发中或尚未完成的代码与驱动.除非你是测试人员或者开发者,否则请勿选择
General setup
常规设置
Local version - append to kernel release 在内核版本后面加上自定义的版本字符串(小于64字符),可以? ......

Linux程序参数

Linux程序参数包括两部分: 命令行参数和环境变量
命令行参数传递给mian函数  int mian (int argc,char *argv[])
环境变量  extern char *environ[]
获得环境变量的函数: const char* getenv(const char* name)
设置环境变量的函数:
        (1)int putent (const c ......

linux 调度器发展简述


发布的 2.6.23 内核中包含了一个重要的变化,用CFS替代了以前的调度器。CFS 被合并到 mainline之前,关于内核调度器还有一个重要的 patch:RSDL。最终 2.6.23 决定将 CFS 合并到 mainline 而放弃了RSDL。为什么要引入新的调度器,CFS 和 RSDL 有什么联系和区别?本文试图对内核调度算法的发展历史做一个简要介绍,希望? ......

linux 中断处理

中断处理
 
在 2.4 内核和 2.6内核中都使用 request_irq()
函数来注册中断服务函数。在 2.4
内核中,需要包含的头文件是 #include ,2.6 内核中需要包含的头文件则是 #include
。函数原型如下:
2.4 内核
int
request_irq
(unsigned
int
irq ......

Linux下configure命令参数的详细说明

Linux环境下的软件安装,并不是一件容易的事情;如果通过源代码编译后在安装,当然事情就更为复杂一些;现在安装各种软件的教程都非常普遍;但万变不离其中,对基础知识的扎实掌握,安装各种软件的问题就迎刃而解了。Configure脚本配置工具就是基础之一,它是autoconf的工具的基本应用。
与一些技巧相比,Configure显得基础一 ......