Chinaunix首页 | 论坛 | 博客
  • 博客访问: 224789
  • 博文数量: 39
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 584
  • 用 户 组: 普通用户
  • 注册时间: 2015-04-18 20:24
个人简介

学习总结,分享快乐。 望指正错误, 共同提高!!!

文章分类

全部博文(39)

分类: 嵌入式

2015-06-19 11:29:54

0> 环境:

               硬件:Tiny4412

               软件:linux-3.5内核源码包

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

1> 将物理地址动态映射---- > 虚拟地址: 

     _ _arm_ioremap(unsigned long phys_addr,   // 物理起始地址

                                                    size_t size,  //映射虚拟空间大小,以字节为单位

                                         unsigned int mtype   //映射空间权限

    );


/linux-3.5/include/asm-generic/sizes.h 中定义了size_t 宏值:

例:#define SZ_1                            0x00000001

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

使用:以led为例:

          #define GPM4BASE 0x11000000
          #define GPM4CON  0x02e0
          #define GPM4DAT  0x02e4

         unsigned longvir = ioremap(GPM4BASE, SZ_4K);    //调用到_ _arm_ioremap( );
         tmp = ioread32(vir+GPM4CON);   //读数据

         iowrite32(tmp, vir+GPM4CON);    //写数据

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx


2> 静态映射:struct map_desc



待解决??????

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

3> gpio:参考/linux-3.5/Documentation/gpio.txt


1》/linux-3.5/arch/arm/mach-exynos/include/mach/gpio.h 为Exynos4412的GPIO编了号:

  int led1_n = EXYNOS4X12_GPM4(0);   //得到编号

2》gpio_is_valid(int number);         //判断gpio编号是否合法

3》 gpio_request(led1_n, "led1");  //注册GPIO编号

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

使用:

              int gpio_direction_input(unsigned gpio);    //设为输入功能

              int gpio_direction_output(unsigned gpio, int value); //设为输出功能,并写入值

              int gpio_get_value(unsigned gpio);    //读值

               void gpio_set_value(unsigned gpio, int value) ;    //写值

note:

             void gpio_free(unsigned gpio) ;  //用完必须释放GPIO资源

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

4> 获得中断资源:以key1为例:

     1》 int key1_n = EXYNOS4_GPX3(2);  //获得GPIO编号

     2》 gpio_to_irq(key1_n);    //将GPIO号转换为中断号

     3》request_irq( );  //注册中断

     4》free_irq( );   //释放中断资源



阅读(3932) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~