当前位置: 首页 > news >正文

建设网站定位分析天堂在线资源种子

建设网站定位分析,天堂在线资源种子,外贸软件都是怎么收费的,dw 网页设计与制作教程驱动学习笔记 1、字符设备驱动 Linux 驱动有两种运行方式 第一种就是将驱动编译进 Linux 内核中,这样当 Linux 内核启 动的时候就会自动运行驱动程序。 第二种就是将驱动编译成模块(Linux 下模块扩展名为.ko),在 Linux 内核启动以后使用“insmod”命…

驱动学习笔记

1、字符设备驱动

Linux 驱动有两种运行方式

第一种就是将驱动编译进 Linux 内核中,这样当 Linux 内核启 动的时候就会自动运行驱动程序。

第二种就是将驱动编译成模块(Linux 下模块扩展名为.ko),在 Linux 内核启动以后使用“insmod”命令加载驱动模块。

 

2、Linux 并发与竞争

3、Linux 内核定时器

高节拍率会提高系统时间精度,如果采用 100Hz 的节拍率,时间精度就是 10ms

高节拍率会导致中断的产生更加频繁,频繁的中断会加剧系统的负担。但是现在的处理器性能都很强大,所以采用 1000Hz 的系统节拍率并不会增加太大的负载压力。

  • init_timer
  • add_timer 向内核注册定时器以后, 定时器就会开始运行
  • del_timer
  • del_timer_sync 会等待其他处理器使用完定时器再删除
  • mod_timer 修改定时值,如果定时器还没有激活的话,会激活

4、中断上下部

上半部与下半部

上半部:上半部就是中断处理函数,那些处理过程比较快,不会占用很长时间的处理就可以放在上半部完成。

下半部:如果中断处理过程比较耗时,那么就将这些比较耗时的代码提出来,交给下半部去执行,这样中断处理函数就会快进快出。

使用参考:

①、如果要处理的内容不希望被其他中断打断,那么可以放到上半部。

②、如果要处理的任务对时间敏感,可以放到上半部。

③、如果要处理的任务与硬件有关,可以放到上半部

④、除了上述三点以外的其他任务,优先考虑放到下半部。

上半部机制

request_irq 申请中断的时候注册的中断服务函数属于中断处理的上半部

  • request_irq 可能会导致睡眠,因此不能在中断上下文或者其他禁止睡眠的代码段中使用
  • free_irq
  • 中断处理函数 irqreturn_t (*irq_handler_t) (int, void *)
  • 中断使能与禁止函数 enable_irq disable_irq
    • disable_irq_nosync 函数调用以后立即返回,不会等待当前中断处理程序执行完毕
    • local_irq_enable 用于使能当前处理器中断系统,local_irq_disable 用于禁止当前处理器中断系统

下半部机制

获取中断号和获取字符设备号的函数不一样!!!

5、阻塞和非阻塞 IO

阻塞式 IO 就会将应用程序对应的线程挂起(休眠),直到设备资源可以获取为止。

非阻塞 IO,应用程序对应的线程不会挂起,它要么一直轮询等待,直到设备资源可以使用,要么就直接放弃。

 

6、异步通知

7、platform 设备驱动

驱动分离与分层

8、MISC 驱动

  • misc 的意思是混合、杂项的。当我们板子上的某 些外设无法进行分类的时候就可以使用 MISC 驱动
  • MISC 驱动其实就是最简单的字符设备驱动,通常嵌套在 platform 总线驱动中,实现复杂的驱动
  • 所有的 MISC 设备驱动的主设备号都为 10

9、INPUT 子系统

输入设备本质上还是字符设备,只是在此基础上套上了 input 框架,用户只需要负责上报输入事件,比如按键值、坐标等信息,input 核心层负责处理这些事件

驱动层:输入设备的具体驱动程序,比如按键驱动程序,向内核层报告输入内容。

核心层:承上启下,为驱动层提供输入设备注册和操作接口。通知事件层对输入事件进行处理。

事件层:主要和用户空间进行交互。

代码编写

  1. 使用 input_allocate_device 函数申请一个 input_dev。
  2. 初始化 input_dev 的事件类型以及事件值。
  3. 使用 input_register_device 函数向 Linux 系统注册前面初始化好的 input_dev。
  4. 卸载input驱动的时候需要先使用input_unregister_device函数注销掉注册的input_dev, 然后使用 input_free_device 函数释放掉前面申请的 input_dev。
  5. 上报输入事件 input_event

10、LCD驱动

Linux 内核将所有的 Framebuffer 抽象为一个叫做 fb_info 的结构体,fb_info 结构体包含了 Framebuffer 设备的完整属性和操作集合,因此每一个 Framebuffer 设备都必须有一个 fb_info

换言之就是,LCD 的驱动就是构建 fb_info,并且向系统注册 fb_info的过程

11、RTC驱动

RTC 设备驱动是一个标准的字符设备驱动

Linux 内核将 RTC 设备抽象为 rtc_device 结构体,因此 RTC 设备驱动就是申请并初始化rtc_device,准备好RTC设备驱动函数集 rtc_class_ops 。最后将 rtc_device 注册到 Linux 内核里面

12、I2C 驱动

I2C 总线驱动

与platform不同的是,platform 是虚拟出来的一条总线,目的是为了实现总线、设备、驱动框架。对于 I2C 而言,不需要虚拟出一条总线,直接使用 I2C 总线即可。

  • I2C 总线驱动,或者说 I2C 适配器驱动的主要工作就是初始化 i2c_adapter 结构体变量,然后设置 i2c_algorithm 中的 master_xfer 函数
  • 完成以后通过 i2c_add_numbered_adapter 或 i2c_add_adapter 这两个函数向系统注册设置好的 i2c_adapter

一般 SOC 的 I2C 总线驱动都是由半导体厂商编写的。因此 I2C 总线驱动对我们这些 SOC 使用者来说是被屏蔽掉的,我们只要专注于 I2C 设备驱动即可

I2C 设备驱动

i2c_client 就是描述设备信息的,i2c_driver 描述驱动内容,类似于 platform_driver。

  • 一个设备对应一个 i2c_client,每检测到一个 I2C 设备就会给这个 I2C 设备分配一个 i2c_client。
  • 重点工作就是构建 i2c_driver,构建完成以后需要向 Linux 内核注册这个 i2c_driver。i2c_driver 注册函数为 int i2c_register_driver
  • I2C 设备和驱动的匹配过程是由 I2C 核心来完成的

13、SPI 驱动

SPI 驱动框架和 I2C 很类似,都分为主机控制器驱动和设备驱动

主机控制器驱动

transfer 函数,和 i2c_algorithm 中的 master_xfer 函数一样,控制器数据传输函数。

SPI 主机驱动的核心就是申请 spi_master,然后初始化 spi_master,最后向 Linux 内核注册spi_master。

和 I2C 适配器驱动一样,SPI 主机驱动一般都是 SOC 厂商去编写的,所以我们作为 SOC 的使用者,这一部分的驱动就不用操心了

SPI 设备驱动

  • 我们在编写 SPI 设备驱动的时候需要实现 spi_driver
  • spi_driver 和 i2c_driver、platform_driver 基本一样,当 SPI 设备和驱动匹配成功以后 probe 函数就会执行。
  • spi_driver 初始化完成以后需要向 Linux 内核注册,spi_driver 注册函数为 spi_register_driver

14、RS232/485/GPS 驱动

串口分为 TTL 和 RS232。不管是什么样的接口电平,其驱动程序都是一样的

串口驱动没有什么主机端和设备端之分,就只有一个串口驱动,而且这个驱动也已经由 NXP 官方已经编写好了,我们真正要做的就是在设备树中添加所要使用的串口节点信息。当系统启动以后串口驱动和设备匹配成功,相应的串口就会被驱动起来,生成 /dev/ttymxcX(X=0….n)文件。

15、电容触摸屏驱动

  

老版本的 linux 内核是不支持多点电容触摸的(Multi-touch,简称 MT)。

TypeA时序

TypeB时序

使用“devm_”前缀的函数申请到的资源可以由系统自动释放,不需要我们手动处理。

16、音频驱动

音频编解码芯片,英文名字就是 Audio CODEC

采样率和采样位数就是衡量一款音频 CODEC 最重要的指标

I2S 总线接口

  • I2S 接口需要 3 根信号线(如果需要实现收和发,那么就要 4 根信号线,收和发分别使用一根信号线)

随着技术的发展,在统一的 I2S 接口下,出现了不同的数据格式,根据 DATA 数据相对于 LRCK 和 SCLK 位置的不同,出现了 LeftJustified(左对齐)和 RightJustified(右对齐)两种格式

17、CAN 驱动

CAN 的全称为 Controller Area Network,也就是控制局域网络

  1. 每个单元都是独立的 CAN 节点

同一个 CAN 网络中所有单元的通信速度必须一致

1.CAN 的特点主要有一下几点:

①、多主控制: 根据标识符(Identifier 以下称为 ID)决定优先级,仲裁失利的单元则立刻停止发送而进行接收工作

②、系统的柔软性: 没有类似于“地址”的信息。因此增加单元时其他单元不需要改变
③、通信速度快,距离远
④、具有错误检测、错误通知和错误恢复功能
⑤、故障封闭功能
⑥、连接节点多

2.CAN 电气属性

CAN 总线上没有节点传输数据的时候一直处于隐性状态

3.CAN协议

CAN 协议提供了 5 种帧格式来传输数据

18、USB驱动

1.usb接口类型

USB A

方口usb B

mini usb

micro usb

usb TypeC

2.USB 电气特性

3.USB 拓扑结构

USB 是主从结构,分为 HOST(主机)和从机(DEVICE)
USB OTG:既可以做 HOST 又可以做 DEVICE
支持 OTG 模式的 USB 接口一般都是 Mini USB Micro USB 等这些带有 ID 线的接口
ID 线的高低电平表示 USB 口工作在 HOST 还是 DEVICE 模式:
ID=1OTG 设备工作在从机模式。
ID=0OTG 设备工作在主机模式。

19、Linux 块设备驱动

前面我们都是在学习字符设备驱动

块设备驱动要远比字符设备驱动复杂得多,不同类型的存储设备又对应不同的驱动子系统
块设备驱动相比字符设备驱动的主要区别如下:
①、块设备只能以块为单位进行读写访问,块是 linux 虚拟文件系统(VFS)基本的数据传输单位。字符设备是以字节为单位进行数据传输的,不需要缓冲。
②、块设备在结构上是可以进行随机访问的,对于这些设备的读写都是按块进行的,块设备使用缓冲区来暂时存放数据,等到条件成熟以后在一次性将缓冲区中的数据写入块设备中。这么做的目的为了提高块设备寿命。
块设备结构的不同其 I/O 算法也会不同,比如对于 EMMCSD 卡、NAND Flash 这类没有任何机械设备的存储设备就可以任意读写任何的扇区(块设备物理存储单元)
块设备中最小的可寻址单元是扇区,一个扇区一般是 512 字节,有些设备的物理扇区可能不是 512 字节。不管物理扇区是多少,内核和块设备驱动之间的扇区都是 512 字节。

1.块设备 I/O 请求过程

内核将对块设备的读写都发送到请求队列 request_queue 中,request_queue 中是大量request(请求结构体),而 request 又包含了 biobio 保存了读写相关数据,比如从块设备的哪个地址开始读取、读取的数据长度,读取到哪里,如果是写的话还包括要写入的数据等。

 

 

20、Linux 网络驱动

1.嵌入式下的网络硬件接口

本章节讨论的都是有线网络!
网卡是独立的硬件,如果电脑要上网就得买个网卡插上去,类似现在的显卡一样。
随着技术的不断发展,现在只需要一个芯片就可以实现有线网卡功能
嵌入式网络硬件分为两部分:MAC PHY
==================================================================
先不学网络驱动,学不进去- -
http://www.yayakq.cn/news/268417/

相关文章:

  • 连云港网站 建设黄页推广app软件
  • 山东省住房和城乡城乡建设厅网站德阳网站制作公司
  • 帝国cms地方门户网站模板中国菲律宾南海争端
  • c程序设计课程网站建设论文学做吃的网站
  • 在线支付网站建设做网站的公司经营范围
  • 四平做网站网络营销模式理论
  • 沧浪公司网站建设电话注册域名卖钱很暴利吗
  • 3g电影网站排行榜迁安建设局官方网站
  • 北京网站建设找华网天下百度产品优化排名软件
  • 青岛高端网站开发网站代理工具
  • 公司网站备案需要什么材料网页设计代码图片
  • 塘沽网站制作wordpress前台用户中心
  • 一个好的网站的重要性上海装修公司排名榜单出炉
  • 怎么做电脑网站后台wordpress最新中文版
  • 比价网站源码广州手工外发加工网
  • 微网站建设合同wordpress主题 网站大全
  • 网站建设与维护书籍推荐网页升级紧急通知怎么关闭
  • 安徽省工程建设信息网站制作开发app的公司
  • 响应式相册网站模板网站后台上次图片
  • 大气简洁企业通用网站模板建一个国外的网站
  • 鞍山 中企动力提供网站建设wordpress php代码
  • 做网站还是app省钱建筑木模板报价清单
  • 如何把做的网站与域名连接不上重庆建设工程安全协会网站
  • h5手机制作网站开发wordpress小工具自定义
  • 网站系统维护一个月正常吗网上营销新观察网
  • 西安未央网站建设做网站注意
  • 海外推广工作内容网奇seo赚钱培训
  • 电话网站模版网站留白
  • 怎么建设网站让国外看网站项目建设申请汇报大纲
  • 域名备案和网站备案有什么不同杭州公司招聘