zoukankan      html  css  js  c++  java
  • SRAM,SDRAM,网卡

    SRAM,SDRAM,网卡有地址总线。由cpu统一编址。

    NAND flash没有地址总线。 因 此有这两者寻址方式不同。


    字符设备驱动程序的框架。
    驱动程序 1.有led.read,led.write,led.open 这些函数,2.定义了—个结构体fileoperation,这个结构体包括指向led.read的.read 函数。包括指向led.write的.write函数,包括指向led.open 的.open函数。3.入口函数(把fileoperation结构体告诉内核的函数),通过register_chedev(main,name,fileoperation)。




    编译驱动程序要依赖内核。
    ioremap把物理地址映射为虚拟地址。


    本来主设备号能够手动分配。但驱动程序也能够自己主动分配主设备号。
    应用程序打开一个设备open("/dev/xxx"),这个设备哪里来的。


    1.手工建立, 
    mknod   /dev/xxx   c  主  次  
    此时须要知道主设备号
    2.自己主动创建,mdev(mdev是udev的—个简化版本号)依据系统信息创建设备节点。所以驱动程序要提前提供上面所需的系统信息,这样才干自己主动创建。






    写一个驱动程序。

    (用查询方式点亮led灯)
    1.写出框架。
    a.写出fileoperation结构体。里面有.open,.read,.write 等成员。
    b.该结构体通过入口函数注冊到内核。同一时候须要出口函数。修饰入口函数。修饰出口函数。
    c.给内核提供系统信息。这样udev机制能够自己主动创建设备节点。祥细步骤。在入口函数创建class,并创建clasd device 。

    同一时候要在出口函数将这些东西卸载掉。
    d.最后加上一个lisence。
    2.硬件操作,
    a.看原理图,确定是哪些引脚接到按键上。
    b.看2440手冊,确定怎么操作这些引脚。以及操作什么寄存器。


    c.编程。
    上面三步在单片机里面基本同样。不同之处是单片机直接操作物理地址,而此时驱动程序採用虚拟地址。

    VA=ioremap(PA,size)。
    ……………………………………………
    写一个驱动程序(用中断方式点亮led灯)
    1.在open函数将引脚配置为中断引脚,即request_irq()。
    2.右fileoperation结构体里添加成员.release()函数 ( 用来释放中断引脚)。


    即. .release()=second_drv_close();
    3.实现函数second_drv_close()
    4.实现request_irq()函数中的—个參数buttons_irq()。
    5.添加头文件irq.h等。










    在open函数配置引脚,在read函数读引脚状态(通过copy_to_user()函数将引脚状态传给用户)。

    在入口函数进行地址映射。

    在出口函数解除映关系。


    top命令相当于任务管理器。


    共享中断,中断来源有非常多种,共享同一个引脚。
    中断是异常的—种。单片机下的中断处理过程:
    1.分辨中断源。
    2.调用对应的处理程序,
    3.清中断。
    在linux内核中,这三项由asm_do_IRQ()函数实现。

  • 相关阅读:
    python遍历字典元素
    Asp.net网站优化【转】
    三、HTTP协议
    二、 OSI模型的实现TCP 、IP
    一、OSI模型
    JVM原理:4 运行期优化
    JS:jquery插件表格单元格合并.
    28-语言入门-28-1的个数
    27-语言入门-27-成绩转换
    26-语言入门-26-兄弟郊游问题
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/5187015.html
Copyright © 2011-2022 走看看