首页 > 其他分享 >eCos系统的VSR支持(VSR Support)

eCos系统的VSR支持(VSR Support)

时间:2022-11-21 10:06:29浏览次数:37  
标签:VSR 中断 ISR Support vsr eCos interrupt


eCos系统为应用开发人员提供了抽象的中断处理机制,在这种抽象机制的帮助下,应用开发人员不需要知道特定硬件架构的中断机制就可以编写中断处理函数(ISR),但是这种机制会增加中断延迟,如果某个中断的实时性要求非常高,eCos可以提供替换掉这种机制直接处理中断从而最小化中断延迟的解决办法。


当产生中断时,硬件将跳转到一段被称作VSR的代码处执行,VSR也就是向量服务例程(Vector Service Routine)。默认情况下,VSR代码是由eCos系统提供的,通常使用汇编语言编写,但是某些架构也可以使用C语言实现VSR例程,这需要在作为VSR例程的C函数上添加interrupt属性。关于如何使用C语言实现VSR的更多内容可以查阅编译器文档。eCos系统的默认VSR将计算出哪个ISR函数应当处理当前产生的中断,然后创建一个适合该ISR函数执行的C运行时环境。

某些应用可能希望替换掉默认的VSR直接处理部分中断,这将最小化中断延迟,但是需要应用开发人员在更低的层次上进行编程。通常情况下,编写自定义VSR的最佳途径是拷贝一份eCos提供的现成的VSR代码,然后在这基础上进行适当地修改。cyg_interrupt_get_vsr函数可以用来获取指定中断向量的当前VSR,当自定义VSR不再需要时,可以恢复默认的VSR。cyg_interrupt_set_vsr函数可以用来安装替换默认VSR的自定义VSR,通常该函数的vsr参数对应于某个汇编源文件导出的符号。

When an interrupt occurs the hardware will transfer control to a piece of code known as the VSR, or Vector Service Routine. By default this code is provided by eCos. Usually it is written in assembler, but on some architectures it may be possible to implement VSRs in C by specifying an interrupt attribute. Compiler documentation should be consulted for more information on this. The default eCos VSR will work out which ISR function should process the interrupt, and set up a C environment suitable for this ISR.

For some applications it may be desirable to replace the default eCos VSR and handle some interrupts directly. This minimizes interrupt latency, but it requires application developers to program at a lower level. Usually the best way to write a custom VSR is to copy the existing one supplied by eCos and then make appropriate modifications. The function cyg_interrupt_get_vsr can be used to get hold of the current VSR for a given interrupt vector, allowing it to be restored if the custom VSR is no longer required. cyg_interrupt_set_vsr can be used to install a replacement VSR. Usually the vsr argument will correspond to an exported label in an assembler source file.

标签:VSR,中断,ISR,Support,vsr,eCos,interrupt
From: https://blog.51cto.com/zoomdy/5872657

相关文章

  • 使用nm分析eCos应用的内存使用情况
    eCos是开源免版税的抢占式实时操作系统。其最大亮点是可配置,与其配套的图形化配置工具提供组件管理、选项配置、自动化单元测试等。嵌入式系统的内存资源是非常有限的,如果配......
  • eCos中断响应详解,基于Cortex-M架构
    本文阐述eCos在Cortex-M架构中的中断响应过程。eCos是开源免版税的抢占式实时操作系统。其最大亮点是可配置,与其配套的图形化配置工具提供组件管理、选项配置、自动化单元测......
  • eCos启动过程详解,基于Cortex-M架构
    eCos是开源免版税的抢占式实时操作系统。其最大亮点是可配置,与其配套的图形化配置工具提供组件管理、选项配置、自动化单元测试等。eCos核心组件包括硬件抽象层(HAL)、设备驱......
  • eCos Synthetic实践(二)——简单外设
     1. 简介SyntheticTarget同样包含多种硬件设备,当然它们都是虚拟的,其中一部分设备通过Linux系统调用就可以实现,不需要I/O辅助进程的参与,这类设备包括Disk、ADC、Flash、......
  • eCos Synthetic实践(一)——Hello World!
     1. 简介eCos提供了LinuxSyntheticTarget,通过SyntheticTarget可以将eCos应用作为一个普通进程在Linux系统内运行,这既提供了体验eCos的机会又不需要繁琐的硬件准备工作......
  • eCos需要Synthetic虚拟目标板的理由
     eCos提供了Synth虚拟目标板(SyntheticTarget),为什么要使用虚拟目标板呢? 1. 在没有硬件的条件下学习eCoseCos是非常优秀的嵌入式操作系统,如果希望学习eCos但是又没有开发......
  • eCos中的同步原语简要
    信号量信号量是最基本的通信原语,可用于线程同步、事件通知、共享数据保护,包括二值信号量和计数信号量,在非嵌入式系统中,信号量还被用于进程间通信。eCos的计数信号量包含了两......
  • eCos仿真目标机(2)――安装
    宿主机软件为了获得仿真目标机的完整功能,用户必须编译安装I/O辅助进程ecosynth以及其它支持文件。没有辅助进程的情况下开发仿真目标机应用也是可以的,但是仅有少量的I/O设备......
  • 为仿真器添加eCos多线程调试支持,GDBServer Extender 0.0.1 使用说明
    可以使用RedBoot或者仿真器调试eCos系统,RedBoot集成的GDBStubs已经支持eCos的多线程调试,使用GDB命令infothreads就可以读取当前的线程状态。但是使用仿真器时,由于仿真器不......
  • eCos系统CPU负载测量
    cpuload组件包提供了一种估算CPU负载的方式。它可以估算最近0.1秒、1秒和10秒内的CPU负载百分比。负载测量API首先,必须在被测目标机上对测量算法进行校准,一旦校准完成后就可......