- 1、本文档共23页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
nios调试
Nios II中断简述及中断调试技巧
发表于 2008/11/4 20:06:46
?NiosII 的中断处理方式带有典型的RISC处理器的特征,所有的中断处理都从同一入口进入,然后由软件加以分配。负责分配工作的软件叫系统ISR,它是由开发系统提供的,自动的连接到可执行程序上。系统ISR维护着一个中断向量表,表中的每一项代表着一个专项处理程序的入口。所有的专项处理程序都是由用户定义然后注册到中断向量表中的,叫做用户ISR。系统ISR的入口地址是在SOPC_Builder中定义的,叫Exception Address。和中断有关的CPU寄存器有:ctl0、ctl1、ctl3、ctl4。Ctl0 是程序状态字,它的bit0位是全局中断允许位,1代表允许,0代表禁止。Ctl1是程序状字的堆栈,当发生中断时,由它保留一个程序状态字的备份。Ctl3是中断允许寄存器,其中每一位控制着一个中断源,1代表允许,0代表禁止,共计32位。Ctl4是中断申请寄存器,每一位对应着一个中断源的中断请求,1代表有中断,0代表没有******计32位。 ????? NiosII的中断处理过程是这样的:1、 考备一份程序状态字到ctl1;2、 清除全局中断允许位PIE,禁止中断;3、 将下一条将执行的指令的地址存入R29,以便中断返回之用;4、 跳转到中断入口地址,进入系统ISR;5、 系统ISR保护现场;6、 系统ISR检测ctl1的PIE位,如为0则进入软中断处理程序从11继续,否则由7继续;7、 系统ISR检测Ctl4,如果有中断申请,则转到硬中断处理和序,否则进入软中断处理程序;8、 硬中断处理程序将检测中断申请号,并检索中断向量表,跳转到用户中断处理程序;9、 用户中断处理程序做出具体的处理,最后返回系统ISR;10、 系统ISR恢复现场,并返回;11、 软中断处理程序进行陷井指令、模拟指令判断,并做相应处理,然后返回系统ISR;12、 系统ISR恢复现场并返回; 软中断处理程序是用来处理由软件发起的中断事件的,包括调试指令引起的中断及未定义指令引起的中断。目前未定义指令的处理主要为乘、除法运算指令的处理,不支持用自定义的操作码,除用户自己修改系统程序。如果软中断处理程序遇到了一个不识别的操作码,将返回一个不确定的结果。与用户编程相关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函数。其原形为:??int alt_irq_register( alt_u32 id,void *context,void (* isr)(void *, alt_u32))???? id 代表被服务的中断向量号;???? context 是运行参数指针,将来作为第一个参数传给用户ISR;???? Isr 是一个函数指针,指向用户ISR入口;如果注册成功,函数返回0,并允许全局中断及被服务中断;不成功返回非0值。Alt_irq_disable()用来禁止某个中断服务。原形为:?????????????????? Int alt_irq_disable(alt_u32 id)?????????????????? Id 为对应的中断号;?????????????????? 返回值为0;alt_irq_enable()与alt_irq_disable()对应,用来开启某个中断服务。原形为:?????????????????? int alt_irq_enable(alt_u32 id)alt_irq_disable_all()用于关闭全局中断,原形为:??????????????????alt_irq_context alt_irq_disable_all(void)?????????????????? 返回值为中断控制寄存器的值。Alt_irq_enable_all()用于开启全局中断,原形为:?????????????????? void alt_irq_enable_all( alt_irq_context context)?????????????????? context 代表中断控制寄存器的值。用户定义的用户ISR程序要符合统一的原形定义,即:??????????? void isr(void * context, alt_u32 id)函数名没特别的要求,与一般函数一样。入口参数与返回值要严格按标准形式定义,否则系统ISR将不
您可能关注的文档
- ITW Polymer Technologies Insulcast 易速凯 演示宣传.ppt
- JH阻焦增收剂工业试验阶段性总结.doc
- JD_QC质量检验员.ppt
- JIT丰田.ppt
- john donne 约翰多恩.ppt
- Johnson_胜任力分析.ppt
- Just-In-Time_and_Lean_Production准时生产方式.ppt
- KfW银行集团概览.ppt
- KFC的本土化营销策略.ppt
- KM管理.ppt
- 新时期国企人力资源管理面临的问题及对策分析.docx
- 新时期企业人力资源管理中个人绩效考核工作解析_20250126_163418.docx
- 新时代背景下思政课的智慧课堂建设理念与原则.docx
- 江苏省苏州市太仓市2019-2020学年八年级下学期期中物理试题【含答案、解析】.docx
- 新时期烟草行业营销队伍高质量发展思考.docx
- 新能源企业成本控制研究.docx
- 新能源企业财务风险识别及措施应对.docx
- 新编大学语文(第四版)重点目课后研习与思考答案及补充简答题_.docx
- Module 3 (说课稿)-2023-2024学年外研版(一起)英语五年级下册.docx
- 新编会计学原理-基础会计第十二版课程设计 (2).docx
文档评论(0)