新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 8051与AndesCore的软件差异与移植

8051与AndesCore的软件差异与移植

——
作者:时间:2015-07-29来源:电子产品世界收藏

  5. 中断向量及异常处理函数例子 以中断向量及中断处理函数的例子说明差异及移植。

本文引用地址:http://www.eepw.com.cn/article/277989.htm

  5.1. 汇编实现中段向量表

  []

  该例子显示怎样用汇编设置的中断向量和中断处理函数,在汇编中ORG指定了后面汇编代码的位置,后面的中断向量通常是一个跳转语句。如下例第一个向量跳到主函数MAIN函数中,另外一个外部中断1, 也是一个跳转指令:LJMP INT 到后面的用汇编实现的中断处理函数 INT 中。

  [ ™]

  该例子显示怎样用汇编设置™的中断向量表和中断处理函数, 该例子中exception_vector 是中断向量表的label, 后面分别表示第0,1,2,3…个中断向量,它们只是简单的跳转指令,跳到具体的执行实体中去,如vector 0 跳到_start, 做系统相关的初始化操作,_start 是系统启动代码,用汇编语言来实现。vector 9 后面对应的是外部中断,中断处理函数如OS_Trap_Interrupt_HW0,OS_Trap_Interrupt_HW1… 它通常用C 来实现,可以参考后面5.2 章节的™中断处理函数范例。

  在上面用汇编设置AndesCore™的中断向量表的例子中,我们需要将中断向量表最终设定在0 地址处,可以通过 section语法配合sag 工具实现,例子中我们设定该段的 section 名为.vector, 所以在sag 中,我们自定义一个

  USER_SECTION 为.vector,并 将.vector放在0 开始的地方并作为第一个 section。

  通过上面的sag 语法,并使用andes 提供的sag 转ld 的工具,可以产生类似以下的ld ,在工程进行链接的时候选择该 ld 时就能确保 .vector链接的地址位于0 处。

  关于详细的SAG使用,可以参考我们的另一篇文章:《Andes 的分散聚合(SAG)机制

  5.2. 中断处理函数的C 实现

  6. 适用于MCU的Andes CPUs

  Andes 有三款非常适用于 MCU应用的CPU,分别是:N705,N801,N968A,如下图所列:

  N705和N801分别采用了两级和三级流水线,都具有很低的功耗和很好的性能,当应用需要的频率较低时,使用两级流水线的N705能发挥出更好的性能和更低功耗的特性,相比于8051,两级流水线的 N705 在频率方面高出许多,比如在TSMC 40nm LP 工艺下能跑到超过240MHz ,所以完全能胜任8051的应用需求。N968A使用了五级的流水线,同样有低功耗的特性和很好的性能,同时该款CPU具有很强的可配置性,如支持多种总线接口,还支持了专门为audio的加速指令,N968A是一个多面手,性能好,功耗低,又具备强大的可配置特性,适合于多种应用。


上一页 1 2 3 下一页

关键词: 8051 AndesCore

评论


相关推荐

技术专区

关闭