总结S3C2440的一些知识和概念

知识点主要参考《ARM System Developer’s Guide Designing and Optimizing System Software》的翻译书籍和《S3C2440 datasheet》。

以下是S3C2440中断控制器的简单说明:

1.中断模式寄存器:INTMOD C语言编程时CPSR不可见,可用此寄存器置1决定FIQ,置0决定IRQ
2.中断挂起寄存器:INTPND ;中断源挂起寄存器:SRCPND 指示中断是否被激活,中断源请求请求中断时SRCPND相应位置1,当中断被激活时INTPND相应位置1
    1)中断屏蔽位置1,相应SRCPND相应位置1,但INTPND相应位不会改变.
    2)假如INTPND被置位,只要I和F被清零,就会执行中断服务。
    3)在服务程序需要向SRCPND中相应位写1来清除挂起状态,INTPND也类似清除
3.INTMSK 相应位置1对应中断被禁止,反之允许
4.INTOFFSET看哪个IRQ模式被响应,通过清除SRCPND和INTPND自动清零
5.EXTINTn 配置触发类型
6.EINTMASK 置1相应外部中断被禁止,反之允许

7.EINTPND  指示哪个外部中断发生,写1清除

注:S3C2440的datasheet有很详细的说明,这里只是简单提示。

一些概念:

满堆栈:利用sp存(读)时,先存入(读取)后再更新sp。sp始终指示满位置

空堆栈:先更新sp再存入(读取)。所以sp始终指示空位置

APCS规定了使用递减满堆栈,可使用fd后缀的load/store指令进行堆栈操作。递减堆栈:堆栈是向下生长的,sp向低地址方向更新。

由于流水线下一条指令为pc+8,调用bl时lr保存为pc,lr硬件自动减4,此时返回子函数后指示下一条指令。

产生中断IRQ异常时,链接寄存器lr指向最后指令地址+8,因为只有执行完当前指令后才能进入异常处理,所以返回地址应该指向下一条指令即lr=lr-4,FIQ也是一样。

比较难记忆的堆栈操作和多寄存器的load/store操作:


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值