查看: 3093|回复: 2

盈鹏飞EVB335x试用之四:实时性问题

[复制链接]
  • TA的每日心情
    开心
    2020-6-4 18:11
  • 签到天数: 75 天

    连续签到: 1 天

    [LV.6]常住居民II

    发表于 2018-5-21 18:29:46 | 显示全部楼层 |阅读模式
    分享到:
    本帖最后由 zt1234 于 2018-6-6 10:03 编辑

    工控离不开实时性,大概有几个问题:如何度量实时性?LINUX的实时性怎么样?AM335X的PRU的性能和使用方法?xenmai的使用。
        所谓实时是在限定的时间内必须对激励事件做出及时响应,并且响应的时间是可以预测。实时性指标包括上下文切换时间、任务响应时间、最大关中断时间、中断延迟时间以及任务调度。传统的LINUX是分时操作系统,内核进程不能被抢占,进程能够禁止中断,采用1KHz的时钟中断比较慢,同时有的动态优先级调度、时间片轮转调度、先来先服务调度三种方法也不能保证实时性。通过在2.6内核中改进调度器、可抢占内核、新的本地Posix线程库NPTL,使得它的实时性得到了较大的增强。
    1<实时系统性能测试方法的研究及应用>
    apt-get install rt-tests安装rt测试工具集,运行其中的cyclictest测试工具,默认创建5SCHED_FIFO策略的realtime线程,优先级76-80,周期是1000,1500,2000,2500,3000微秒
    sudo cyclictest -p 80 -t5 –n
    https://blog.csdn.net/wzwind/article/details/50517619
    实时性通过Cyclictest测试。压力环境通过HackBench提供。


    2打补丁改进实时性参见https://wiki.linuxfoundation.org/realtime/documentation/howto/applications/preemptrt_setup
    飞凌推出实时操作系统,Linux RT-Preempt在http://www.forlinx.com/dongtai/187.htm


    3PRU改进实时性。Am335X添加了两个额外的CPU(称为PRU-ICSSPRUSSv2简称PRU),改善实时性。这两个CPU可以分别运行不同的软件。每个PRU8KB的程序存储区和8KB的数据存储区映射到PRU0PRU1ARM寻址空间。使用PRU主要步骤如下:1在BB-Black上使能PRU系统,2将PRU汇编程序安装到BBB上,3编写代码。PRU应用程序分为两部分而且相互之间能够通过存储器寻址来进行通信,即(a)汇编代码编译为.bin机器指令文件以便在PRU上运行(b)C语言代码运行于主处理器上也就是Linux系统上这些代码负责将汇编代码下载到RPU。4 配置Linux设置树,启用所有引脚用于输入输出。5运行程序。难点主要在于和设备树相关的东西。


    4XENOMAIL改善实时性。xenomail基于Adeos实现了双内核,其中实时内核的优先级高于Linux 内核,中断到来后,Adeos先调度Xenomai进行处理执行实时任务,之后才会调度Linux 运行。移植需要将Xenomai 作为目标内核的一部分进行编译。API包括实时线程调度与管理、用户空间实时任务支持、线程同步服务、时钟服务、中断服务、动态内存申请和实时对象注册等。入输出。5运行程序。需要找到对应的内核源代码和XENOMAI的源代码,重新配置编译,而后利用其API开发程序。没有找全相应的内核源代码和XENOMAI源代码,但是找到一个raspberry的XENOMAI的IMG,下载到raspberry可以进行编程测试啊。http://www.cs.ru.nl/lab/xenomai/。有没有大手做个AM335X的打补丁XENOMAI后的镜像啊。。。需要需要需要。

    回复

    使用道具 举报

  • TA的每日心情
    开心
    2024-1-16 17:48
  • 签到天数: 592 天

    连续签到: 1 天

    [LV.9]以坛为家II

    发表于 2018-5-26 20:43:21 | 显示全部楼层
    板子上是 am3352 芯片,没有 pru 子系统哦
    内核原本就是可以实现抢占的,是不是实时不知道
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2020-6-4 18:11
  • 签到天数: 75 天

    连续签到: 1 天

    [LV.6]常住居民II

     楼主| 发表于 2018-5-28 09:02:09 | 显示全部楼层
    需要实现ETHERCAT的设备端功能,调研资料发现AM3357和AM3359可以实现,都是在LINUX上补丁XENOMAI实现的,看来LINUX内核的实时性不能满足工业以太网的要求啊。从LINUX内核2.6以后已经支持任务的枪战了,但需要配置编译吧?没有具体操作过。不知道现在的调度周期是多少?以前是1MS的。可不够用的
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /2 下一条

    手机版|小黑屋|与非网

    GMT+8, 2024-4-27 11:45 , Processed in 0.153708 second(s), 19 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.