LXRT-RTAI用户空间编程.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
LXRT ——RTAI的用户空间编程 目录 TOC \o 1-3 \h \z \u HYPERLINK 一. rt_task_init_schmod(启用RTAI实时功能/实时任务的创建) 2 HYPERLINK 1. 函数 2 HYPERLINK 2. 参数 2 HYPERLINK 3. 注意 2 HYPERLINK 4. 示例代码 2 HYPERLINK 二. 实时任务定时器设置(rt_set_oneshot_mode等) 2 HYPERLINK 1. rt_set_oneshot_mode 3 HYPERLINK 2. rt_set_periodic_mode 3 HYPERLINK 3. start_rt_timer 3 HYPERLINK 4. 注意 3 HYPERLINK 5. 示例代码 3 HYPERLINK 三. rt_task_make_periodic(定期运行一个任务) 4 HYPERLINK 1. 函数 4 HYPERLINK 2. 参数 4 HYPERLINK 3. 注意 4 HYPERLINK 四. 代码基础框架 4 HYPERLINK 1. Makefile 4 HYPERLINK 2. run 4 HYPERLINK 3. .runinfo 4 HYPERLINK 4. 代码 4 HYPERLINK 五. 注意事项 7 HYPERLINK 1. 所谓的LXRT实即Linux Real Time module,不存在LXRT scheduler 7 HYPERLINK 2. LXRT下的硬实时相对于内核态下而言仍有若干微秒的差别 7 HYPERLINK 3. 在进入和离开LXRT域这两段时间,系统的实时性是无法保证的。 7 HYPERLINK 4. LXRT Tips And Tricks 8 HYPERLINK 六. 管道通讯 8 HYPERLINK 1. 发送函数 8 HYPERLINK 2. 接收函数 8 HYPERLINK 3. 示例代码 9 HYPERLINK 七. 共享内存通讯 12 HYPERLINK 1. 创建函数 12 HYPERLINK 2. Free函数 12 rt_task_init_schmod(启用RTAI实时功能/实时任务的创建) 实时任务的创建主要完成对代表实时任务实体的任务结构变量的初始化操作,包括分配任务栈、初始化任务栈、初始化链表指针等。 函数 RT_TASK* rt_task_init(unsigned long name, int priority, int stack_size, int max_msg_size) RT_TASK*rt_task_init_schmod(unsigned long name, int priority, int stack_size, int max_msg_size, int policy, int cpus_allowed) 正如你可以看到的,有两个选项可以用来创建一个用户模式下的实时任务。在用户模式下,rt_task_init被认为是一个更简单但因此有限的捷径。总之他们都可以用于这个特定的目的。只是为了记录第一个被定义为以下的: RTAI_PROTO(RT_TASK *,rt_task_init,(unsigned long name, int priority, int stack_size, int max_msg_size)) { return rt_task_init_schmod(name, priority, 0, max_msg_size, SCHED_FIFO, 0xFF); } 它的意思是,它使用SCHED_FIFO策略并且设置cpu允许0XFF。 他们创建一个新的实时任务在用户空间,或者更好的说法是,他们在用户空间为LINUX进程/任务创建了一个RTAI任务扩展。 参数 Name:任务名。 Priority:任务优先级,0最高。 stack_size:栈大小(不再被使用的遗留参数,只是为了可移植性才保留的)。默认值是512。 max_msg_size:可为0,在这种情况下使用一个默认的内部值。默认值为256。为了适合你的需求,有可能需要设置一个更大的值。在这种情况下,要么合理设置宏MSG_SIZE来重新编译sys.c,要么在这里明确分配大点的尺寸。但是,注意这点,消息大小不是关键的。事实上在任何需要的时候,模块都会重新分配它,动态并且设置好了合适的大小。 policy:调度策略,默认的是SCHED_FIFO,也可以设置成 RT_SCHED_RR。RR只是在有多个使

文档评论(0)

676200 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档