中断与时钟机制
2016-07-13 17:21
344 查看
一.中断 IRQ
中断安装与释放
1.申请中断线
int request_irq(unsigned int irq,irq_handler_t handler,unsigned long irqflags,const char *devname,void *dev_id) 中断号 中断处理函数 中断触发方式 设备名称 共用中断信号线时使用到(一般设备为NULL)
一般在init函数中设置
2.释放中断线
void free_irq(unsigned int irq,void *dev_id); 中断号 NULL
一般在exit函数中设置
3.端口映射函数
void *ioremap(unsigned long phys_addr,unsigned long size);
phys_addr实际物理地址
size地址长度,arm为4字节
返回映射后的虚拟地址
二.时钟机制 RTC
linux中全局变量HZ,不同平台取值不同,一般取值HZ 1000,意思是每秒发生中断1000次,每次中断内部计数器jiffies加1,也就是说这个变量记录了系统自引导以来经历的时间值。
1.内核级别短延时函数
static inline void ndelay(unsigned long x) 纳秒级延时
static inline void udelay(unsigned long x) 微秒级延时
static inline void mdelay(unsigned long x) 毫秒级延时
<
4000
div style="white-space:pre-wrap;line-height:1.5;font-size:14px;">2.睡眠方式延时
void msleep(unsigned int msec) 毫秒
unsigned long msleep_interruptible(unsigned int msec)
static inline void ssleep(unsigned int seconds) 秒
3.长延时
unsigned long timeout = jiffies + 3*HZ;
while(time_before(jiffies,timeout));
中断安装与释放
1.申请中断线
int request_irq(unsigned int irq,irq_handler_t handler,unsigned long irqflags,const char *devname,void *dev_id) 中断号 中断处理函数 中断触发方式 设备名称 共用中断信号线时使用到(一般设备为NULL)
一般在init函数中设置
2.释放中断线
void free_irq(unsigned int irq,void *dev_id); 中断号 NULL
一般在exit函数中设置
3.端口映射函数
void *ioremap(unsigned long phys_addr,unsigned long size);
phys_addr实际物理地址
size地址长度,arm为4字节
返回映射后的虚拟地址
二.时钟机制 RTC
linux中全局变量HZ,不同平台取值不同,一般取值HZ 1000,意思是每秒发生中断1000次,每次中断内部计数器jiffies加1,也就是说这个变量记录了系统自引导以来经历的时间值。
1.内核级别短延时函数
static inline void ndelay(unsigned long x) 纳秒级延时
static inline void udelay(unsigned long x) 微秒级延时
static inline void mdelay(unsigned long x) 毫秒级延时
<
4000
div style="white-space:pre-wrap;line-height:1.5;font-size:14px;">2.睡眠方式延时
void msleep(unsigned int msec) 毫秒
unsigned long msleep_interruptible(unsigned int msec)
static inline void ssleep(unsigned int seconds) 秒
3.长延时
unsigned long timeout = jiffies + 3*HZ;
while(time_before(jiffies,timeout));
相关文章推荐
- sqoop导入数据至hive
- 并查集操作
- Android如何解决多次fork进程的问题
- python获取当前 昨天 及所有时间
- A*算法的Javascript实现(最短路径算法)
- 几个经典sql
- 通道控制方式
- 使用HorizontalScrollView简单实现柱状图
- Android三种播放视频的方式
- CSS滤镜详解
- CentOS6.5下安装mongodb
- winform插件机制学习
- solr从数据库为solr_home导入数据
- 最短编辑距离
- 三线程联系输出abc
- Java中的main()方法详解
- 两个有序list合并
- 最大子列
- printk 消息打印级别
- 关于mapreduce解析xml的方法