sopc课件第八章分解.ppt

  1. 1、本文档共230页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第 8 章 Nios II系统深入设计 主讲人:李兰英 哈尔滨理工大学计算机学院 本章讨论Nios II处理器系统的深入设计 内容包括: (1)异常处理程序的开发 (2)缓存和紧耦合存储器的编程 (3)μC/os II实时操作系统 (4)以太网与轻量IP (5)Nios II多处理器系统 (6)定制Nios II用户指令和定制基于Avalon的用户外设等。 第八章 目录 ※ 8.1 异常处理程序的开发 8.1.1 Nios II异常分类 8.1.2 硬件抽象层的实现 8.1.3 中断服务程序(ISRs) ※ 8.1 异常处理程序的开发 8.1.1 Nios II异常分类 8.1.2 硬件抽象层的实现 8.1.3 中断服务程序(ISRs) 1.ISRs的HAL API 利用HAL API实现ISRs分为2步。首先,为某一特定外设中断写一中断服务程序。其次,必须使用alt_irq_register()函数注册该ISRs。在ISR执行期间,程序中可用alt_irq_enable_all()和alt_irq_disable_all()函数允许和禁止中断。 注意:禁止中断影响中断延迟,故影响系统性能。 2. 利用alt_irq_register()函数注册ISR HAL把alt_irq_register()函数指针注册到一查找表中,当某一个ISR出现时,HAL在查找表中查找该IRQ且调度(dispatch)已注册的ISR。 若ISR成功注册,从alt_irq_register()返回后,相应中断(由id定义)被允许。 3.ISR的编写 用户编写的ISR必须与alt_irq_register()要求的原型匹配,ISR函数的原型应该与void isr(void*context, alt_u32 id)原型匹配。 Context和id参数的定义与alt_irq_register()函数中的定义相同。ISR函数负责清除或屏蔽相应的中断条件,之后返回到中断处理程序。 ISRs运行环境受到一定限制,在ISRs中许多HAL API调用不可用。例如,在ISRs中不允许访问HAL文件系统。一般来讲,ISR中决不应包括那些可能影响等待中断的函数调用。 注意:当最慢的ISR中指令少于70条指令时,允许中断嵌套增加了较高优先级中断的中断延迟。此时中断处理程序中不应该开中断。 4. ISRs的允许和禁止 HAL提供alt_irq_disable()、alt_irq_enable()、 alt_irq_disable_all()、alt_irq_enable_all()和 alt_irq_enabled()等函数,允许在某段程序之前关中断,之后再开中断。alt_irq_disable()和alt_irq_enable()可禁止和允许某个中断,alt_irq_disable_all()禁止所有中断,返回一个上下文相关值。调用alt_irq_enable_all()开放所有中断,且传递上下文参数,采用这种方式,中断返回到调用alt_irq_disable_all()之前的状态。若中断被允许,alt_irq_enabled()返回一非零值,允许程序检查中断的状态。 注意:关中断的时间应尽可能短,原因是当关中断时间增加时,最大中断延迟也增加。 5.ISR的快速处理 要提高ISRs的性能,应遵守以下原则: 把异常地址映射到快速存储器可提高异常处理程序的执行速度。例如,与速度较慢的SDRAM相比,应优先选择具有零等待状态的片上RAM。这不是通过软件选择的,异常地址在系统创建时就已被确定,是很容易修改的Nios II CPU硬件的一个属性。 ISR函数也应该映射到快速存储器。 一般地,在ISR中应避免进行长时间的计算。 6.描述ISR性能的参数 7.ISRs的调试 在Nios II IDE环境下通过在ISR内设断点可对ISR进行调试。调试器完当执行到断点处,全停止处理器的运行,同时,系统中硬件继续工作。因此当处理器停止时,其他的IRQs可能被忽略。利用Debugger可单步调试ISR,但其他采用中断驱动的设备驱动程序的状态只有当处理器回到正常的状态时才有效。必须使处理器复位才能使系统回到已知状态。在单步期间,Ipending寄存器(ct14)被屏蔽为全0,这使得单步期间CPU不响应IRQs。结果,若单步调试需读取ipending寄存器的异常处理程序(例_irq_entry()或alt_irq_handler())时,代码无法检测任何已登记的IRQs。断点不影响软件异常的调试。可以在ISR中设断点(且单步运行),因为异常处理程序已使用Ipengding来

文档评论(0)

jiayou10 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8133070117000003

1亿VIP精品文档

相关文档