niosii中断简述及中断调试技巧

niosii中断简述及中断调试技巧

ID:34198903

大小:113.00 KB

页数:23页

时间:2019-03-04

niosii中断简述及中断调试技巧_第1页
niosii中断简述及中断调试技巧_第2页
niosii中断简述及中断调试技巧_第3页
niosii中断简述及中断调试技巧_第4页
niosii中断简述及中断调试技巧_第5页
资源描述:

《niosii中断简述及中断调试技巧》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、NiosII中断简述及中断调试技巧发表于2008/11/420:06:46 NiosII的中断处理方式带有典型的RISC处理器的特征,所有的中断处理都从同一入口进入,然后由软件加以分配。负责分配工作的软件叫系统ISR,它是由开发系统提供的,自动的连接到可执行程序上。系统ISR维护着一个中断向量表,表中的每一项代表着一个专项处理程序的入口。所有的专项处理程序都是由用户定义然后注册到中断向量表中的,叫做用户ISR。系统ISR的入口地址是在SOPC_Builder中定义的,叫ExceptionAddress。和中断有关的CPU寄存器有:ctl0、ctl1、ctl3、c

2、tl4。Ctl0是程序状态字,它的bit0位是全局中断允许位,1代表允许,0代表禁止。Ctl1是程序状字的堆栈,当发生中断时,由它保留一个程序状态字的备份。Ctl3是中断允许寄存器,其中每一位控制着一个中断源,1代表允许,0代表禁止,共计32位。Ctl4是中断申请寄存器,每一位对应着一个中断源的中断请求,1代表有中断,0代表没有******计32位。     NiosII的中断处理过程是这样的:1、考备一份程序状态字到ctl1;2、清除全局中断允许位PIE,禁止中断;3、将下一条将执行的指令的地址存入R29,以便中断返回之用;4、跳转到中断入口地址,进入系统IS

3、R;5、系统ISR保护现场;6、系统ISR检测ctl1的PIE位,如为0则进入软中断处理程序从11继续,否则由7继续;7、系统ISR检测Ctl4,如果有中断申请,则转到硬中断处理和序,否则进入软中断处理程序;8、硬中断处理程序将检测中断申请号,并检索中断向量表,跳转到用户中断处理程序;9、用户中断处理程序做出具体的处理,最后返回系统ISR;10、系统ISR恢复现场,并返回;11、软中断处理程序进行陷井指令、模拟指令判断,并做相应处理,然后返回系统ISR;12、系统ISR恢复现场并返回;  软中断处理程序是用来处理由软件发起的中断事件的,包括调试指令引起的中断及未

4、定义指令引起的中断。目前未定义指令的处理主要为乘、除法运算指令的处理,不支持用自定义的操作码,除用户自己修改系统程序。如果软中断处理程序遇到了一个不识别的操作码,将返回一个不确定的结果。与用户编程相关API函数有:1、alt_irq_register();2、alt_irq_disable();3、alt_irq_enble();4、alt_irq_disable_all();5、alt_irq_enable_all();alt_irq_register()是向系统ISR注册用户ISR的API函数。其原形为:  intalt_irq_register(alt_u

5、32id,void*context,void(*isr)(void*,alt_u32))    id代表被服务的中断向量号;    context是运行参数指针,将来作为第一个参数传给用户ISR;    Isr是一个函数指针,指向用户ISR入口;如果注册成功,函数返回0,并允许全局中断及被服务中断;不成功返回非0值。Alt_irq_disable()用来禁止某个中断服务。原形为:                  Intalt_irq_disable(alt_u32id)                  Id为对应的中断号;                  

6、返回值为0;alt_irq_enable()与alt_irq_disable()对应,用来开启某个中断服务。原形为:                  intalt_irq_enable(alt_u32id)alt_irq_disable_all()用于关闭全局中断,原形为:                  alt_irq_contextalt_irq_disable_all(void)                  返回值为中断控制寄存器的值。Alt_irq_enable_all()用于开启全局中断,原形为:                  voida

7、lt_irq_enable_all(alt_irq_contextcontext)                  context代表中断控制寄存器的值。用户定义的用户ISR程序要符合统一的原形定义,即:           voidisr(void*context,alt_u32id)函数名没特别的要求,与一般函数一样。入口参数与返回值要严格按标准形式定义,否则系统ISR将不能正确的对其调用。系统分类:嵌入式用户分类:NIOS

8、

9、标签:无标签来源:转贴发表评论阅读全文(300)

10、回复(0)0NIOSII开发常见问题发表于2008/9/2614:34:451.

11、怎样在TCL脚本分配管脚

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。