zoukankan      html  css  js  c++  java
  • Linux 驱动学习笔记

    最近用mini2440学习linux驱动,做一下笔记


    LED驱动:

    static int __init dev_init(void)

    在驱动的初始化函数中经常看到,__init 前缀, 这个在下面文件中定义

    file:/include/linux/init.h


    主要是将这个函数放在init段section中,这样可以在执行完成后,释放内存。


    关于s3c2410_gpio_cfgpin函数,只能了解到,设置某个GPIO的功能,但是怎么实现的没看明白,好像还用到虚拟地址了,最后也没有发现是怎么配置的GPCON寄存器的,

    而且,后面

    有个地方讲不通: (这个地方应该是都不满足 switch 的条件,所以, function 不改变)

    #define S3C2410_GPIO_LEAVE   (0xFFFFFFFF)

    #define S3C2410_GPIO_INPUT   (0xFFFFFFF0)  /* not available on A */

    #define S3C2410_GPIO_OUTPUT  (0xFFFFFFF1)

    #define S3C2410_GPIO_IRQ     (0xFFFFFFF2)   /* not available for all */

    #define S3C2410_GPIO_SFN2    (0xFFFFFFF2)  /* bank A => addr/cs/nand */

    #define S3C2410_GPIO_SFN3    (0xFFFFFFF3)  /* not available on A */

     

    #define S3C2410_GPB5_OUTP    (0x01 << 10)

    所以,

    s3c2410_gpio_cfgpin(S3C2410_GPB5, S3C2410_GPB5_OUTP);

    switch (function)

    根本对不上号?

     

    s3c2410_gpio_cfgpin(S3C2410_GPB5, S3C2410_GPB5_OUTP);

    s3c2410_gpio_cfgpin(37, S3C2410_GPB5_OUTP);

    s3c2410_gpio_cfgpin(37,  0x01 << 10 );

    剩下的37怎么变换出mask,怎么得到GPCON的地址没看懂?


    这个在 /arch/arm/mach-s3c2410/include/mach/regs-gpio.h 中定义

    #define S3C2410_GPB5         S3C2410_GPIONO(S3C2410_GPIO_BANKB, 5)

    #define S3C2410_GPB5_INP     (0x00 << 10)

    #define S3C2410_GPB5_OUTP    (0x01 << 10)

    #define S3C2410_GPB5_nXBACK  (0x02 << 10)

     

    S3C2410_GPIONO (S3C2410_GPIO_BANKB , 5)

     

    #define S3C2410_GPIONO (bank,offset) ((bank) + (offset))

    #define S3C2410_GPIO_BANKA   (32*0)

    #define S3C2410_GPIO_BANKB    (32*1)

     


    可以看一下这篇文章:

    http://www.linuxidc.com/Linux/2011-06/37322.htm


  • 相关阅读:
    洛谷P3569 [POI2014]KAR-Cards(线段树)
    洛谷P3295 [SCOI2016]萌萌哒(倍增+并查集)
    GFS分布式文件系统脚本
    源码安装apache脚本
    python如何安装cv2
    从npz文件中读取图片并显示的小例子
    读取npz,并显示图像
    Python中.npz文件的读取
    导出MNIST的数据集
    Keras下载的数据集以及预训练模型保存在哪里
  • 原文地址:https://www.cnblogs.com/yanhc/p/2175239.html
Copyright © 2011-2022 走看看