- 博客(88)
- 收藏
- 关注
原创 Linux驱动----总线
设备对象,用于描述设备信息,包括地址,中断号和其他的一些自定义数据。struct kobject kobj, //所有对象的父类const char *init_name, //在总线中的名字,用于做匹配,在sys/bus/mybus/device/名字struct bus_type *bus, //依附于总线的对象,也就是在哪个bus中void *platform_data, //自定义的数据,可以指向任何数据类型.....
2024-08-03 23:29:18 372
原创 Linux字符设备驱动编程概览
4、利用udev/mdev机制创建设备文件节点 class_create, device_create(与内核相关)7、实现操作硬件的方法 xxxx_open, xxxx_read, xxxx_write(与硬件相关)3、注册字符设备驱动 cdev_alloc , cdev_init , cdev_add(与内核相关)2、申请设备号 register_chrdev_region(与内核相关)============调用内核核心层接口。============注册到内核核心层。
2024-07-28 18:37:14 331
原创 Linux驱动------中断的上半部和下半部
对于中断处理函数来说,我们要求尽可能时间短,才不容易出现由于当前中断处理时间过长而导致的其他线程的一些异常,例如获取某些资源失败。但是可能因为某些原因导致中断的处理无法控制在一个比较短的时间内,因此引入了中断的上半部和下半部,在上半部处理一些简单时间短的任务,例如初始化设备,申请设备节点等,而将那些耗时的操作放在下半部去执行。操作系统在执行中断时,会先执行中断的上半部,然后中断处理函数就会返回,系统去执行中断之前的任务了,之后让系统调度下半部继续执行即可。
2024-07-28 17:33:10 443
原创 linux驱动----多路复用
poll是一种多路复用的IO模型,允许一个进程同时监控多个文件描述符是否就绪,当文件就绪时,poll返回可读,可写或异常事件数量,使得程序能够做出相应的处理。timeout:超时时间,-1表示一直等待(阻塞等),0表示不等待(非阻塞),正数表示等待毫秒数。其中:fds指向一个pollfd结构体数组的指针, 每一个结构体描述一个被监控的文件描述符。2、调用poll_wait,将当前的等待队列注册到系统中。nfds:监控的文件描述符的数量。1、返回一个mask值。
2024-07-28 16:31:10 216
原创 linux驱动--中断
通过设备树文件获取/dts/xxxx.dts文件中进行设备的设置在dts设备树文件中进行设备的定义,包括继承的设备,中断号的设置需要对我们的dts设备树文件进行编译,然后重启开发板,在proc目录下device-tree目录下可以找到我们添加的设备。
2024-07-27 22:43:55 448
原创 【Linux】以太网协议以及MTU
如果UDP协议携带的数据大于1472(1500-20(IP头部)-8(UDP头部)),在网络层就会被分为多个IP数据包,当多个IP数据包有任意一个丢失,都会导致对端网络层接收之后无法正常重组,整个数据被丢失的概率就会大大提升。由于TCP数据报的大小受MSS(最大报文段长度)限制,而MSS是在建立连接的过程中,双方的TCP进行协商的(协商双方传递报文段的最大长度),本质上是在协商应用层传输的数据大小。因此可以见,由TCP进行打包的应用层数据,已经天然满足了MTU的要求,就不会被网络层进行分片了。
2023-08-27 22:31:42 625
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人