• 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


  • 相关阅读:
    JVM致命错误日志(hs_err_pid.log)分析
    JVM调优-命令大全(jps jstat jmap jhat jstack jinfo
    GC日志分析详解
    简单的学习,实现,领域事件,事件存储,事件溯源
    学习DDD的初步尝试,从最基础的开始,业务介绍,划分限界上下文 ,建立模型
    .Net Core + DDD基础分层 + 项目基本框架 + 个人总结
    第三节:使用Log4net和过滤器记录异常信息,返回异常给前端
    从一层到多层架构的学习笔记
    学习服务之间的调用,三个方法的演化
    .Net Core3.0 WEB API 中使用FluentValidation验证,实现批量注入
  • 原文地址:https://www.cnblogs.com/yanhc/p/2175239.html
Copyright © 2020-2023  润新知