本帖最后由 zt1234 于 2018-6-6 10:03 编辑
工控离不开实时性,大概有几个问题:如何度量实时性?LINUX的实时性怎么样?AM335X的PRU的性能和使用方法?xenmai的使用。
所谓实时是在限定的时间内必须对激励事件做出及时响应,并且响应的时间是可以预测。实时性指标包括上下文切换时间、任务响应时间、最大关中断时间、中断延迟时间以及任务调度。传统的LINUX是分时操作系统,内核进程不能被抢占,进程能够禁止中断,采用1KHz的时钟中断比较慢,同时有的动态优先级调度、时间片轮转调度、先来先服务调度三种方法也不能保证实时性。通过在2.6内核中改进调度器、可抢占内核、新的本地Posix线程库NPTL,使得它的实时性得到了较大的增强。1<实时系统性能测试方法的研究及应用> apt-get install rt-tests安装rt测试工具集,运行其中的cyclictest测试工具,默认创建5个SCHED_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-ICSS或PRUSSv2简称PRU),改善实时性。这两个CPU可以分别运行不同的软件。每个PRU有8KB的程序存储区和8KB的数据存储区映射到PRU0、PRU1和ARM寻址空间。使用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后的镜像啊。。。需要需要需要。
|