Linux中断编程

Linux中断编程
视频1-Linux中中断到概念和中断处理机制
题目:中断的作用是什么?
答案:中断是外设异步通知soc的一种高效的方式,当soc正在做其他事情的时候,如果外设产生了数据,可以打断soc,然后让soc去处理刚刚产生的数据的那个硬件,至于如何处理,arm和linux会提供这样的接口出来,让驱动工程师自由的去处理,可以去读数据,也可以不管它,都是可以的
题目: 内核中是如何区分不同的中断的?
答案: 内核中会为每个中断设置一个中断号,不同的外设在硬件设计的时候就已经对应好了一个中断号,只要通过原理图和数据手册就可以查到

视频2-设备树文件中定义中断号
题目:设备树是如何定义中断号的?
答案:设备树中定义好了中断控制器,我们只需要通过继承的方式去继承,比如interrupt-parent = <&gpx1>;然后通过interrupts = <2 4>;定义它的号码和触发方式

视频3-驱动代码中获取到中断号码的方法
题目:驱动代码中如何获取到中断号码?
答案:首先一定要获取到中断号码定义的节点,然后通过irq_of_parse_and_map函数就可以得到,实际就是一个整数,这个整数无需去管它是多少数字,因为它是在内核中重新去用一个数字去定义的,同时代码操作中断的时候,也无需去管他,只要在设备树上定义号,并验证能响应就行了

视频4/5-申请中断处理-request_irq的使用
题目:中断的触发方式有哪些?
答案:1,内部控制器触发中断的时候的标志
2,上升沿触发
3,下降沿触发
4,高电平触发
5,低电平触发

题目:中断处理方法中返回值是什么
答案: IRQ_HANDLED

题目: 如何查看中断是否申请成功
答案:cat /proc/interrupts

题目:如何去释放中断
答案:free_irq(),当我们申请的中断,就必须去释放,否则下次装载驱动就会报错

视频6/7-驱动中获取硬件数据并传递给用户的方法
题目:按键驱动中是如何封装数据?
答案:设计了一个数据对象,用于描述按键的状态,键值
struct key_event{
int code; // 表示按键的类型: home, esc, Q,W,E,R,T, ENTER
int value; // 表示按下还是抬起 1 / 0
};
题目:应用空间读取到数据后是如何解析的?
答案:应用空间读到时struct key_event event; 然后解析code和value就可以知道是什么按键和状态了

视频8-阻塞的概念和接口使用
题目:文件io模型有哪几种?
答案:1,非阻塞
2,阻塞
3,多路复用--select/poll
4, 异步信号通知faync
题目:什么叫阻塞?
答案:当进程在读取外部设备的资源(数据),资源没有准备好,进程就会休眠linux应用中,大部分的函数接口都是阻塞

视频9-阻塞的实现-等待队列的使用
题目:进程的状态有哪些?
答案:就绪态, 运行态,挂起态,终止态
题目:如何实现阻塞?
答案:1,将当前进程加入到等待队列头中
add_wait_queue(wait_queue_head_t * q, wait_queue_t * wait)
2,将当前进程状态设置成TASK_INTERRUPTIBLE
set_current_state(TASK_INTERRUPTIBLE)
3,让出调度--休眠
schedule(void)

视频10-非阻塞模式的实现.trec
题目:什么叫做非阻塞?
答案:在读写的时候,如果没有数据,立刻返回,并且返回一个出错码,用的会比较少,因为通过循环来完成,比较耗资源
题目:驱动中如何实现非阻塞?
答案:驱动中需要去区分,当前模式是阻塞还是非阻塞, 如果当前是非阻塞模式,并且没有数据,立马返回一个出错码
视频12/13/14-多路复用select和poll的概念
题目:什么叫多路复用?
答案:当代码中需要监控多个文件的读,写,出错时,如果不考虑多进程多线程的话,某个时刻只能处理一个文件的读写出错,而多路服用就指能够通过监控多个文件的读写出错,完成多个文件的阻塞的功能

题目:应用程序使用什么来实现多路复用?
答案:select或者是poll

视频15-poll驱动的实现
题目:驱动中如何实现多路复用?
答案:1,在file_operation的接口中实现poll接口
2, 调用poll_wait,,将当前到等待队列注册系统中
3,有数据返回一个POLLIN,无数据就返回0
视频16-异步信号通知应用程序编程
题目: 什么叫做异步信号通知?
答案:当有数据到时候,驱动会发送信号(SIGIO)给应用,就可以异步去读写数据,不用主动去读写,这种方式对于应用程序而言效率就比较高了
题目:应用程序如何去实现异步信号操作?
答案:1,设置信号处理方法
2,将当前进程设置成SIGIO的属主进程
3,将io模式设置成异步模式
视频17-异步信号的驱动编程实现.trec
题目: 驱动中如何实现异步信号通知?
答案:1,需要和进程进行关联--记录信号该发送给谁
2,在某个特定的时候去发送信号,在有数据的时候

视频18-中断下半部的由来.trec
题目: 为什么有中断下半部?
答案:中断的特点就是要快,因为中断比较霸道,中断产生后,如果cpu对该中断没有禁止,cpu就必须去处理,也即是说cpu原来做的事情就被迫被打断,去执行中断处理,所以如果中断处理的时间比较长,就会导致cpu原来执行的代码出现问题,故此中断处理要快,但是有些中断的处理时间确实比较长,比如触摸屏的坐标分析,网卡的数据帧的处理,这就违背了中断处理要快的原则,因此内核就采取将一些耗时的中断处理的工作延后处理,这就是中断下半部
题目: 中断下半部有哪些实现方法?
答案: 1,softirq: 处理比较快,但是内核级别的机制,需要修改整个内核源码,不推荐也不常用
2,tasklet: 内部实现实际调用了softirq
3, workqueue: 工作队列

视频19-tasklet的实现.trec
题目: 如何实现tasklet?
答案:1,初始化tasklet
2,tasklet_schedule,在上半部中放入到内核线程中--启动
视频20-work下半部的实现.trec
题目: 如何实现工作队列work?
答案:1,初始化work
2,schedule_work,在上半部中放入到内核线程中--启动
题目: tasklet和工作队列的不同?
答案:tasklet是运行在中断上下文中的,而work是运行在进程上下

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,723评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,485评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,998评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,323评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,355评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,079评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,389评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,019评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,519评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,971评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,100评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,738评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,293评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,289评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,517评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,547评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,834评论 2 345

推荐阅读更多精彩内容