Linux中断体系结构

发布者:SparklingRiver最新更新时间:2024-11-05 来源: cnblogs关键字:Linux  中断  体系结构 手机看文章 扫描二维码
随时随地手机看文章


//-----------------------------------------------


/*

NR_IRQS定义in linux/arch/arm/plat-s3c64xx/include/mach/irqs.h

*/

#define NR_IRQS (IRQ_EINT_GROUP9_BASE + IRQ_EINT_GROUP9_NR + 1)



asmlinkage void __init start_kernel(void)

-->early_irq_init();

-->init_IRQ();

-->init_arch_irq();


/*

arch/arm/kernel/irq.c中声明init_arch_irq函数指针

*/

void (*init_arch_irq)(void) __initdata = NULL; /*全局函数指针*/

void __init setup_arch(char **cmdline_p)

-->init_arch_irq = mdesc->init_irq;//s3c6410_init_irq


/*

linux/arch/arm/mach-s3c6410/mach-smdk6410.c中定义machine_desc结构体

*/

MACHINE_START(SMDK6410, 'SMDK6410')

/* Maintainer: Ben Dooks */

.phys_io = S3C_PA_UART & 0xfff00000,

.io_pg_offst = (((u32)S3C_VA_UART) >> 18) & 0xfffc,

.boot_params = S3C64XX_PA_SDRAM + 0x100,


.init_irq = s3c6410_init_irq,

.map_io = smdk6410_map_io,

.init_machine = smdk6410_machine_init,

.timer = &s3c24xx_timer,

MACHINE_END


/*

s3c6410_init_irq in linux/arch/arm/mach-s3c6410/cpu.c

*/

void __init s3c64xx_init_irq(u32 vic0_valid, u32 vic1_valid)

{

int uart, irq;


printk(KERN_DEBUG '%s: initialising interruptsn', __func__);


/* initialise the pair of VICs */

vic_init(S3C_VA_VIC0, S3C_VIC0_BASE, vic0_valid);

vic_init(S3C_VA_VIC1, S3C_VIC1_BASE, vic1_valid);


/* add the timer sub-irqs */


set_irq_chained_handler(IRQ_TIMER0_VIC, s3c_irq_demux_timer0);

set_irq_chained_handler(IRQ_TIMER1_VIC, s3c_irq_demux_timer1);

set_irq_chained_handler(IRQ_TIMER2_VIC, s3c_irq_demux_timer2);

set_irq_chained_handler(IRQ_TIMER3_VIC, s3c_irq_demux_timer3);

set_irq_chained_handler(IRQ_TIMER4_VIC, s3c_irq_demux_timer4);


for (irq = IRQ_TIMER0; irq <= IRQ_TIMER4; irq++) {

set_irq_chip(irq, &s3c_irq_timer);

set_irq_handler(irq, handle_level_irq);

set_irq_flags(irq, IRQF_VALID);

}


for (uart = 0; uart < ARRAY_SIZE(uart_irqs); uart++)

s3c64xx_uart_irq(&uart_irqs[uart]);

}


#define IRQ_EINT_GROUP(group, no) (IRQ_EINT_GROUP##group##_BASE + (no))

/*

IRQ_EINT_GROUP(1, 3)展开为

IRQ_EINT_GROUP1_BASE + 3

*/


[1] [2]
关键字:Linux  中断  体系结构 引用地址:Linux中断体系结构

上一篇:Linux异常处理体系结构
下一篇:u-boot.bin生成过程分析

推荐阅读最新更新时间:2024-11-07 19:26

51单片机中断方式(已消抖)
#include REG51.H #define uint unsigned int #define uchar unsigned char uchar flag,p; sbit l5=P0^4; sbit beep=P3^4; uchar scan_key(void) { uchar temp; temp=P0; return temp; } void delay(uint k) { uint i,j; for(i=0;i k;i++) { for(j=0;j 121;j++) {;} } } void init() interrupt 0 { EX0=0; delay(1); if(l5==0) //s1是外部中断
[单片机]
stm8s跳出中断程序c语言,STM8S I2C总线中断程序
/*========================================================================================================== 本源程序文件内部使用的一些操作指令的宏定义 ==========================================================================================================*/ /*-----------------------------------------------------------------------------
[单片机]
51单片机中断系统详解(定时器、计数器)
51单片机中断级别 中断源 默认中断级别 序号(C语言用) INT0---外部中断0 最高 0 T0---定时器/计数器0中断 第2 1 INT1---外部中断1 第3 2 T1----定时器/计数器1中断 第4 3 TX/RX---串行口中断 第5 4 T2---定时器/计数器2中断 最低 5 中断允许寄存器IE 位序号 DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 符号位 EA ------- ET2 ES ET1 EX1 ET0 EX0 EA---全局中允许位。 EA=1,打开全局中断控制,在此条件下,由
[单片机]
msp430f5529中断笔记(二)--中断嵌套
本例通过配置P1.1口按键为下降沿触发中断 ,进入中断后改变LED2的状态,然后进入Timer0中断,改变LED1的状态。 #include msp430.h void delay(unsigned int i) { volatile unsigned int j; for(;i 0;i--) for(j=0;j 2000;j++); // 延时 } int main(void) { volatile unsigned int i ; WDTCTL = WDTPW+WDTHOLD; // 关闭看门狗 P1DIR |= BIT0; // P1
[单片机]
mega32单片机最简单的中断程序——外部中断
学单片机的第二条槛:中断,每次我都选最简单的中断——外部中断。 ***************************************************************** //CPU:mega32 //编译器:iar #include ioavr.h void eint0_init(void); int main(void) { DDRD |= (1 7); //PD7置为输出 eint0_init(); //外部中断0初始化 asm( sei ); //开中断 while(1); } #pragma vector = INT0_vect //预编译指令,声
[单片机]
mega32单片机最简单的<font color='red'>中断</font>程序——外部<font color='red'>中断</font>
s3c2410触摸屏在linux下的驱动分析 一
触摸屏驱动在/kernel/drivers/char/s3c2410-ts.c 文件中。 该驱动总要有以下重要数据结构: 1.触摸屏的file_operations static struct file_operations s3c2410_fops={ owner: THIS_MODULE, open: s3c2410_ts_open, read: s3c2410_ts_read, release: s3c2410_ts_release, #ifdef USE_ASYNC fasync: s3c2410_ts_fasync, #endif poll: s3c2410_ts_poll, }; 2.全局变量T
[单片机]
Linux电子收款机的税源数据采集
1. 引言 税收是国家财政的重要组成部分,但是在税收领域依法纳税意识淡薄,偷税逃税现象依然比较严重,尤其是对财务核算不健全的*,税务机关难以实施有效监控。这种现状不但严重扰乱正常的经济秩序,而且导致国家税收大量流失。为了进一步加强税源监控,堵塞税收漏洞,减少税收流失,国家先后出台了税控收款机标准GB18240.1~GB18240.6 等六个部分,建立了以电子收款机+税控器+税控IC 卡+税控收款机管理系统的基本工作模式,明确了以票控税的基本原则。要求每当电子收款机上完成一笔销售时,收集其销售明细数据,将其交由税控器记录统计,并将税控器依据销售明细数据生成的税控码添加到销售小票上,以此来表示此笔销售已被税务机关记录。本文所讨论的
[嵌入式]
基于WiFi无线网络的嵌入式打印终端的设计
  目前,国内外大多数打印终端是以固定设备的方式为用户提供数据录入和打印服务,设备投资较大,并存在安装、使用不方便等缺陷。嵌入式无线打印终端可以很好地克服以上的缺点,它融入了无线网络的新技术,可以通过扫描仪、键盘和打印机来输入输出数据,同时通过 WiFi 无线网络,与远程服务器的数据库进行数据交互,能满足超市的收银系统、图书馆的借还书系统、火车站的售票系统等系统的基本功能的需求;同时随着打印终端运用的越来越广泛,它也会为流动性比较强的应用场合提供方便,例如节假日期间,在旅游区、火车站、电影院等增加临时售票点、在营业厅和各种消费场所的移动打印查询终端以及在仓库配送管理中的应用等等。   嵌入式打印终端的系统架构   无线移动
[网络通信]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved