microblaze c语言,MicroBlaze

转自http://blog.163.com/gcs_gcs/blog/static/17448606620121193113914/

在最近的工程中,需要用到PS/2键盘和鼠标作为控制输入,所以在网上找了一些相关的资料,内容很丰富,看来已经有很多人做过了这方面的编程。本篇Blog算是实践总结,为以后的开发积累一些基础知识。

MicroBlaze支持重启(reset),中断( interrupt), 暂停(break)和异常(

exception)。这里粗略的介绍:

reset当外部按键发出reset信号或者XMD通过MDM(MicroBlaze

Debug

module)发出reset信号,这些信号都会被proc_sys_reset模块接收,然后该模块产生一个16周期长的高电平信号至MicroBlaze的MB_RESET管脚。MicroBlaze响应reset,

PC 寄存器指向0x0地址,依照向量表中代码执行。

exception异常是MicroBlaze对内部运行发生错误的情况发做出的响应,这些情况包括:非法指令,指令和数据总线错误和未对齐的访问(unaligned

access)。如除0操作,非法操作码异常,数据总线异常等。

breakbreak分为software break和hardware

break。hardware

break,这时MDM模块的输出端口Ext_BRK和Ext_NM_BRK跟MicroBlaze对应的输入端口相连。一旦break响应,暂停返回地址(break

return address)自动装入R16寄存器中。而software

break通过brk和brki指令来完成。

interruptMicroBlaze只支持一个外部中断源(连接于Interrupt

端口),所以需要多个中断输入的话,就得添加中断控制器(xps_intc)了。只有当机器状态寄存器(Machine Status

Register,MSR)中的中断使能位(interrupt

enable)置'1',MicroBlaze才能响应中断。MicroBlaze响应中断,PC指向中断向量(地址:0x10),R14存储了中断返回地址。

注:具体细节问题,请见参考1。

a4c26d1e5885305701be709a3d33442f.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值