zoukankan      html  css  js  c++  java
  • 嵌入式驱动视频2019.03.24

    愿自己每天都有更新。

    字符设备驱动程序之概念介绍

    u-boot:启动内核

    内核:启动应用

    应用层,调用c库,产生中断

    系统调用接口,接收中断,调用不同处理函数。

    VFS,虚拟文件系统。

    驱动程序框架,就是把应用程序中的open,read和write对应

    驱动中的open,read和write

    【我有个疑惑,为什么不把open去掉。只用读写不就行了吗???】

    写驱动的路程

    1.写出open、read、write等功能函数

    2.告诉内核我已写出:定义file_operations结构体,然后填充它。

    3.把file_operations告诉内核,register_chrdev,即注册函数。注册驱动程序。

    4.驱动的入口函数。 first_drv_init(),,还可以有好几个。它调用了register_chrdev

    5.修饰入口函数,用宏实现。module_init(first_drv_init),实际上是个函数指针。

    【其实感觉过程有点复杂,还不如,直接指到函数???】

    主设备号,次设备号。(注册的时候有主设备号。)

    根据设备类型,和主设备号来找到驱动程序。

    内核数组中chrdev,根据设备类型和主设备号major,找到file_operation。这是通过register_chrdev注册到数组中的。

    有注册就有卸载。

    有入口函数,就有出口函数

    first_drv_exit

    unregister_chrdev

    需要修饰,用宏定义结构体,有指针指向first_drv_exit。

    除此之外还要创建设备节点。

    之后程序的改进,led点灯,,

    【这里我想到可以把灯的函数,也就是板子上的操作写到一个地方。】

    单片机是操作物理地址,但这里是操作虚拟地址。

    ioremap进行映射到虚拟地址。

    【还有一点,为什么要使用虚拟地址呢???】

    《字符设备驱动之LED驱动程序_操作LED》

    次设备号是自己规定怎么用的。

    比如用次设备号,点亮不同的灯。

    自动创建设备点。

  • 相关阅读:
    Scons 三
    Scons 二
    vs code插件
    Scons一
    实例演示 C# 中 Dictionary<Key, Value> 的检索速度远远大于 hobbyList.Where(c => c.UserId == user.Id)
    ASP.NET Core 如何用 Cookie 来做身份验证
    如何设计出和 ASP.NET Core 中 Middleware 一样的 API 方法?
    小记编程语言的设计
    解决 VS2019 打开 edmx 文件时没有 Diagram 视图的 Bug
    一款回到顶部的 jQuery 插件,支持 Div 中的滚动条回到顶部
  • 原文地址:https://www.cnblogs.com/chulin/p/10588170.html
Copyright © 2011-2022 走看看