网络设备接收数据的主要方法是由中断引发设备的中断处理函数,中断处理函数判断中断类型,如果为接收中断,则读取接收到的数据,分配 sk_buffer 数据结构和数据缓冲区,将接收到的数据复制到数据缓冲区,并调用 netif_rx() 函数将 sk_buffer 传递给上层协议。下面是完成这个过程的函数模 ...
分类:
系统相关 时间:
2020-07-27 09:34:12
阅读次数:
87
1) 根据中断的来源可分为内部中断和外部中断,内部中断的中断源来自于CPU内部(软件中断指令、溢出、除法错误等),例如操作系统从用户态切换到内核态需要借助CPU内部的软件中断,外部中断的中断源来自于CPU外部,由外设触发。 2) 根据中断是否可以被屏蔽,中断可分为可屏蔽中断和不可屏蔽中断,可屏蔽中断 ...
分类:
系统相关 时间:
2020-06-04 01:22:58
阅读次数:
104
抢占式调度 两种情况: 执行太久, 需切换到另一进程; 高优先级进程被唤醒 切换到另一进程实现: 时钟中断处理函数会调用 scheduler_tick()查看是否是需要抢占的时间点 void scheduler_tick(void) { int cpu = smp_processor_id(); s ...
分类:
系统相关 时间:
2020-02-21 20:13:40
阅读次数:
87
我使用了两种驱动开发的模型来写了smart210上的按键驱动程序,这里做一下总结以及提供他人参考以及建议和改进,最后一个原因是自己很久没有写过博客了,现在想分享一下linux驱动开发程序的编写。 首先是Linux的中断处理机制。裸机开发中,通过中断标识一个函数指明该函数是中断处理函数,在编译器处理时 ...
分类:
系统相关 时间:
2020-01-17 22:44:26
阅读次数:
120
随着使用单片机次数越来越多,对单片机中断处理函数的理解更加升入。下面写了曾经血的教训,供大家参考。 1、单片机的不同中断是有优先级的区别,当同时发生两个不同中断时,一般先处理优先级别低的中断处理函数。特殊的处理器对中断的定义不同。 2、进入中断处理函数,一定记得清理标志位。或者第一件事情就是手动清理 ...
分类:
其他好文 时间:
2019-12-06 21:41:31
阅读次数:
118
一、linux中断注册 1、request_irq函数 函数就是驱动开发者向内核注册一个中断的接口。它有五个参数,分别是响:中断号,应中断时的中断处理函数,中断的触发方式,中断的名字,传给中断处理的参数。代码块如下: 2、setup_irq函数 代码块如下: 和 这些指针都是在 的 函数初始化,在 ...
分类:
系统相关 时间:
2019-11-24 00:05:55
阅读次数:
86
一直不太理解回调函数的作用,下面是找到的一些关于回调函数的作用的解答。 1.回调函数是一个很有用,也很重要的概念。当发生某种事件时,系统或其他函数将会自动调用你定义的一段函数。 2.回调函数就相当于一个中断处理函数,由系统在符合你设定的条件时自动调用。为此,你需要做三件事:1,声明;2,定义;3,设 ...
分类:
其他好文 时间:
2019-11-05 01:06:57
阅读次数:
76
背景: 最近在做一个stm32的项目,其中用到RTC的实时时钟功能。时钟源采用外部32.768K晶振,时钟预分频设置为32767,目的是为了产生1秒的中断,然后在中断处理函数中更新实时年月日时分秒。 解决方案: 但是由于缺乏经验,RTC中断处理函数中并没有使用RTC_ClearITPendingBi ...
分类:
其他好文 时间:
2019-09-21 21:02:50
阅读次数:
99
有时(但是很少!)一个驱动需要禁止一个特定中断线的中断递交. 内核提供了 3 个函数为 此目的, 所有都声明在 <asm/irq.h>. 这些函数是内核 API 的一部分, 因此我们描述它 们, 但是它们的使用在大部分驱动中不鼓励. 在其他的中, 你不能禁止共享的中断线, 并 且, 在现代的系统中, ...
分类:
系统相关 时间:
2019-07-06 13:05:12
阅读次数:
114
在中断处理函数中,调用gpio_get_value/gpio_set_value()函数来获取/设置gpio端口的值,在这里简单分析一下内核的实现流程。 gc = { .base = (S5P_VA_GPIO + 0xC40), .config = &gpio_cfg_noint, .irq_bas ...
分类:
其他好文 时间:
2019-06-26 22:02:50
阅读次数:
1506