搜索
bottom↓
回复: 7

RTX 声明函数后又加了__SVC_0什么意思?

[复制链接]

出50入0汤圆

发表于 2012-12-24 17:18:17 | 显示全部楼层 |阅读模式
在RTX的RTL.h文件中,有几个声明如下:
extern void      _os_sys_init(U32 p, void (*task)(void), U32 prio_stksz,void *stk) __SVC_0;
extern OS_TID    _os_tsk_create (U32 p, void (*task)(void), U32 prio_stksz,void *stk, void *argv) __SVC_0;
extern OS_TID    _os_tsk_create_ex (U32 p, void (*task)(void *), U32 prio_stksz, void *stk, void *argv) __SVC_0;
extern OS_TID    _os_tsk_self (U32 p)                                  __SVC_0;
后面都根有__SVC_0;是什么意思?
在上面也能找到#define __SVC_0         __svc_indirect(0)
但是找不到__svc_indirect(0);   _os_tsk_create_ex ;          _os_tsk_create ;
没有使用库(在文件里加了源码),编译无错误,无警告。


出0入0汤圆

发表于 2012-12-24 17:22:21 | 显示全部楼层
本帖最后由 dr2001 于 2012-12-24 17:27 编辑

把函数调用的BL/BLX操作用SVC指令来完成。后边的后缀是编译器扩展,具体Google或者直接查看编译器手册。

ARM里的SVC指令可以当函数调用用。执行后SVC指令后,CortexM应该是进入特权模式的Service异常(记不清了);CortexA/R系列和Cortex之前的ARM版本,基本上是进SVC模式(特权模式,和IRQ模式并列)。然后由对应的异常处理函数完成处理。

这个典型用于操作系统或者后台功能调用,尤其是用户代码运行于非特权模式的情况下(CortexM忘记是哪个标志了,标准架构是USR模式),可以用SVC重新获得特权。问题在于,不同的大系列处理器上,SVC不完全通用,主要是指令集和模式的问题。

这个的类比就是Linux的内核接口(DOS的系统调用),Linux在x86上印象中用的是INT 3H(DOS是INT 21H)。只不过这里改成SVC 0H bla bla了。

出0入0汤圆

发表于 2012-12-24 18:44:08 | 显示全部楼层
{:smile:

出0入0汤圆

发表于 2012-12-24 19:31:32 | 显示全部楼层
手册和文档里应该有介绍.

出50入0汤圆

 楼主| 发表于 2012-12-25 08:28:56 | 显示全部楼层
感谢dr2001,又学了一招。

出50入0汤圆

 楼主| 发表于 2012-12-25 13:07:27 | 显示全部楼层
好像这个RTX也不是全部开源吧?_os_tsk_create ,_os_tsk_create_ex 等根本在源码中找不到

出0入0汤圆

发表于 2012-12-25 18:14:19 | 显示全部楼层
RTX在最新的MDK,似乎是4.6好像就是开放源代码的了。你可以找找看,最开始RTX是需要单独授权的,后来好像变成MDK一部分了。

现在ARM推生态环境,CMSIS的RTOS API的一个参考实现是RTX,于是似乎这个就开放源代码了。
注意,开放源代码!= GNU/BSD这种开源的协议,具体参考MDK中的版权声明。

出0入0汤圆

发表于 2014-9-15 15:16:55 | 显示全部楼层
__svc_indirect(0),在arm官网可以找到定义,其做法是用r12来传递第一个参数,r0-r3正常传递原来的参数。rtx独占0号svc作为系统调用入口,r12传递真正的系统调用。。。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-10 14:29

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表