linux内核与驱动
linux内核与驱动
我在这里啊@
小白
展开
-
移远RM500Q模块直连ubuntu实现拨号上网
1.环境配置与内核下载uname -r:查看当前内核版本sudo apt search linux-source:查看当前可用的内核sudo apt install linux-source-:下载跟当前内核版本相同的内核,命令的后面加上内核号例如,我的内核版本是linux-source-4.15.0,打开 /usr/src/linux-source-4.15.0 目录 解压内核 tar -jxvf linux-source-4.15.0.tar.bz2,最终 内核文件的位置为 /u原创 2020-11-28 15:27:47 · 9630 阅读 · 3 评论 -
linux驱动面试题
linux驱动面试题(面试题整理,含答案) 版权声明:本文为博主原创文章,未经博主允许不得转载。 转载请标明原址:https://blog.csdn.net/kai_zone/article/details/82021233 前言: 这篇文章主要是对linux驱动面试题一个整理跟总结,参考了很多网上的资料,基本涵盖linux驱动相关面试内容...原创 2020-10-03 09:44:06 · 688 阅读 · 0 评论 -
Linux下的设备树机制
什么是设备树:ARM平台下有许多的CPU,由此衍生出不计其数的开发板型号,为了统一管理描述这些开发板内容的板级信息文件,引入了设备树机制。用.dts文件来表达这些文件,而不是采用.c文件。注:老版本的Linux内核并没有采用设备树机制dts,dtb和dtcdts是设备树源文件的扩展名,dtb则是编译后的二进制文件,dtc可以理解为编译器通过make dtbs编译所有的dts文件,如果要编译某一个直接在make后面加上文件名即可DTS的基本语法设备树也有头文件,扩展名为.dtsi。存..原创 2020-07-10 08:55:50 · 234 阅读 · 0 评论 -
Linux内核定时器
定时器原理:每次定时器时间到的时候都会运行定时器处理函数,同时重新设定定时器的定时值函数:1.定时器结构体类型:struct timer_list { struct list_head list; 定时器链表的入口 unsigned long expires; 定时时间 void (*function)(unsigned long ); 定时器处理函数 unsigned long data; 传给定时器处理函数的长整型参数}2.setu.原创 2020-07-03 10:10:46 · 95 阅读 · 0 评论 -
Linux内核的驱动异步io机制
什么叫异步io,代码实现:#include <linux/module.h>#include <linux/kernel.h>#include <linux/init.h>#include "linux/cdev.h"#include "linux/kdev_t.h"#include "linux/fs.h"#include "asm/uaccess.h"#include "linux/sched.h"MODULE_LICENSE ("GPL").原创 2020-07-02 15:58:29 · 251 阅读 · 0 评论 -
Linux内核的驱动阻塞机制
什么叫阻塞,阻塞就是执行操作的时候,如果条件不满足则进程挂起,进入睡眠状态,知道等待的条件满足。阻塞的实现机制,应用程序是无法实现阻塞的,进程阻塞是通过Linux内核的等待队列来实现的。如果像将一个进程阻塞,就将它放入等待队列中,运行条件不满足的时候就将等待队列上的进程睡眠,实现阻塞的目的。实现函数:1.DECLARE_WAIT_QUEUE_HEAD(myQueue); 功能描述:定义一个等待队列头结点并初始化(相当于链式队列的头结点)2.DECLARE_WAITQUEUE(name,curr.原创 2020-07-01 16:03:45 · 758 阅读 · 0 评论 -
驱动程序的并发机制----原子操作
一个硬件设备会被多个进程同时使用,这就是并发,并发会导致设备乱序。例如scull设备就有可能在A 进程正在执行scull_read 函数(但尚未执行完)的时候就被B 进程打断,而B 进程执行的是scull_write 函数,当A 进程再次被执行的时候它读到的东西就不再是它以前应该读到的东西。要解决这个问题,就必须保证当scull_read 或scull_write 在执行时不被打断,这就需要并发控制。Linux 内核提供给驱动程序进行并发控制的手段主要有3 种,分别为原子变量、自旋锁和信号量。1.原子操作原创 2020-06-15 10:30:26 · 225 阅读 · 0 评论 -
Linux字符设备驱动编写的框架
1.1第一种字符驱动模板:#include <linux/init.h>#include <linux/kdev_t.h>#include <linux/module.h>#include <linux/fs.h>#include <linux/cdev.h>#include <linux/kernel.h>MODULE_LICENSE ("GPL");struct cdev myuart;struct file原创 2020-06-12 15:40:40 · 246 阅读 · 0 评论