第三周作业

一、阅读笔记(介绍Sylixos性能特点)

1.Sylixos简介

SylixOS 是一款为嵌入式系统设计的硬实时操作系统(RTOS)。 此 系统于 2006 年开始 开发工作。设计之初只是为了验证相关操作系统算法,后来经过多年的持续开发与改进, SylixOS 已经不只是一个实时操作系统,它已经成为一个可靠稳定,功能全面,易于开发调 试的实时嵌入式系统开发平台(SylixOS 至今依然保持以开放源代码的形式存在)。 SylixOS 的诞生可以摆脱国内一些关键性设备对国外嵌入式操作系统的依赖,为国内的 嵌入式信息技术行业提供一个全新的选择。 目前 SylixOS 已经成功应用于工业控制与通信、武器装备及国家安全、新能源应用等国 家基础领域中。 需要说明的是:为了保证 SylixOS 能够持续开发,并且吸引大批开发人员参与测试,所 以 SylixOS 目前是以公开源代码项目的形式存在。

2.Sylixos特点

SylixOS 作为抢占式多任务硬实时操作系统,具有如下功能与特点: 1. 兼容 IEEE 1003(ISO/IEC 9945)操作系统接口规范 2. 兼容 POSIX 1003.1b(ISO/IEC 9945-1)实时编程的标准 3. 优秀的实时性能(任务调度与切换、中断响应算法都是 O(1)时间复杂度算法) 4. 支持无限多任务 5. 抢占式调度支持 256 个优先级 6. 支持协程(windows 称为纤程) 7. 支持虚拟进程 8. 支持优先级继承,防止优先级翻转 9. 极其稳定的内核,很多基于 SylixOS 开发的产品都需要 7x24 小时不间断运行 10. 内核 CPU 占用率低 11. 柔性体系(Scalable) 12. 核心代码使用 C 编写,可移植性好 13. 支持紧耦合同构多处理器(SMP), 例 如 : ARM Cortex-A9 SMPCore 14. 全世界独一无二的硬实时多核调度算法 15. 支持标准 I/O、多路 I/O 复用与异步 I/O 接口 16. 支持多种新兴异步事件同步化接口,例如:signalfd、timerfd、eventfd 等 17. 支持众多标准文件系统:FAT、YAFFS、ROOTFS、PROCFS、NFS、ROMFS 等等 18. 支持文件记录锁,可支持数据库 19. 支持统一的块设备 CACHE 模型 20. 支持内存管理单元(MMU) 21. 支持第三方 GUI 图形库,如:Qt、Microwindows、µC/GUI 等等 22. 支持动态装载应用程序、动态链接库以及模块 23. 支持扩展系统符号接口 24. 支持标准 TCP/IPv4/IPv6 双网络协议栈,提供标准的 socket 操作接口 25. 支持 AF_UNIX, AF_PACKET, AF_INET, AF_INET6 协议域 26. 内部集成众多网络工具,例如:FTP、TFTP、NAT、PING、TELNET、NFS 等等 27. 内部集成 shell 接口、支持环境变量(与 Linux 操作习惯基本兼容) 28. 内部集成可重入 ISO/ANSI C 库(支持 80%以上标准函数) 29. 支持众多标准设备抽象,如:TTY、BLOCK、DMA、ATA、GRAPH、RTC、PIPE 等。同时支持多种工业设备或总线模型,如:CAN、I2C、SPI、SDIO 等 30. 提供高速定时器设备接口,可提供高于主时钟频率的定时服务 31. 支持热插拔设备 32. 支持设备功耗管理 33. 内核、驱动、应用程序支持 GDB 调试 34. 提供内核行为跟踪器,方便进行应用性能与故障分析

3.Sylixos与Vxworks对比

二、团队开发兴趣的模块以及倾向的角色

  初初选实时控制这门课程主要以为是偏硬件的课程,但是学到了我才知道是偏软件的。虽然我语言编程能力较差,但是我并没有后悔选择这门课程,我觉得作为一名机械专业大四的学生,应该多多接触各方面知识的基础,以便以后深入,也因此想借着这个机会深入了解一下语言编程的魅力所在。也是由于编程能力较弱和本着了解实时控制知识的原因,我比较有兴趣在于用户接口任务这一块。

  在团队协作中,我比较善于团队管理以及需求分析,我认为个人的管理能力和逻辑能力比较强,但是由于自己的编程语言太过薄弱,写软件编程作业时,我往往把这个编程作业的逻辑思路理清楚,然后去向一些善于编程的朋友请教,与他讨论,告诉他这个编程的逻辑思路是怎样,什么时候入参,什么时候改变状态,输入和输出又是怎样的。也是上述的原因以及讨论编程作业的经历,让我意识到在一个实时控制的团队协作里,有一个角色能帮助大家理清好逻辑的思路,帮大家总结,从而能让各个角色方便完成沟通以及完成任务,使得工作效率提高。

 三、编程作业

  先写了个简单的,带有数值的梯形加减速代码,接下来的时间我会先改变入参条件和加入new_cmd的控制指令,先把这个特别简单的C++代码发出来先,以后会逐步完善这个C++代码,请老师不要急T T 我会持续更新的。

  代码如下:

#include <iostream>
using namespace std;
 
#define m 20 //m 定义速度最大值值
#define a 5 //a 定义加速度 每毫秒加速度
#define v 0 //定义初始速度为零
#define maxt 2000000 //定义最大时间为零
#define t 1 //加速间隔

int main(){

double v1;
bool flag;
cout<<"输入1 开始加速"<<endl;
cin>>flag;
if(flag==1){
while(v1<m)
{
  v1=a*t+v1;

  cout<<v1<<" "<<t<<endl;
}
v1=m; // 如果需要持续匀速可以引入WHILE(v1=m)
}

cout<<"输入0 开始减速速"<<endl;
cin>>flag;

if(flag==0){
while(v1>0)
{
  v1=-a*t+v;
}
v1=0;
}
return 0;
}

 

运行结果:

 

根据这个简单的思路以及参考其他同学的代码,能力有限只能用C++语言写了 T T。。我已经把最新的代码更新到GITHUB上,

posted @ 2016-12-12 13:12  小灰爱吃鱼  阅读(288)  评论(4编辑  收藏  举报