cos操作系统从哪里下载(cos操作系统哪里可以下载啊)

wanfu 百科 74 0

cos操作系统从哪里下载

刚发布 应用实例 ,还没有,只能下载安装演示 还没有发现有提供下载连接
 中科院软件研究所所长李明树直言,COS的研发是为了“打破微软、苹果和谷歌在基础软件领域的垄断地位”。目前苹果和谷歌的操作系统都存在一些问题:iOS过于封闭而Android又过于开放,COS正好解决了这两个问题。COS目前可以运行的应用程序超过10万个。据称,COS从底层代码到用户界面构建完全是独立演进。在用户界面方面,据悉COS拥有原生应用以及HTML5应用,同时也能加载虚拟机运行JAVA应用。在设备支持上可以实现手机、平板等手持设备与家电、机顶盒、个人电脑等家用、商用设备的无缝拓展。
  中科院软件研究所主任武延军接受记者采访时表示,COS会像苹果商店一样封闭管理,应用需全部通过安全审核,但接口对所有开发商开放。会上,上海联彤以搭载COS系统的HTC手机作为演示,讲解了该系统生态系统安全性、云端服务的特点。COS还系统支持多任务,在同时播放四个视频时,还能操作短信能应用。

cos操作系统哪里可以下载啊

百度搜索一下 cos操作系统 排在之一的就是了

下面分享相关内容的知识扩展:

柜面业务集中处理时,cos_t系统的预警不包括

柜面业务集中处理时,cos_t系统的预警不包括预警信号。

一、客户交易行为异常

当客户在柜面业务集中处理时,出现交易行为异常的情况,比如交易频繁、资金流向单一、交易金额过大等,cos_t系统会发出预警信号。此时,银行应加强对该客户的监管,并及时联系客户进行核实和调查。

嵌入式实时操作系统uc/uo-II在ARM上的移植 这个设计有做过吗,给点线索 非常感谢

机电的, 单片机。
所谓移植,就是使一个实时内核能在某个微处理器或微控制器上运行。为了方便移植,大部分的µC/OS-Ⅱ代码是用C语言写的;但仍需要用C和汇编语言写一些与处理器相关的代码,这是因为µC/OS-Ⅱ在读写处理器寄存器时只能通过汇编语言来实现。由于µC/OS-Ⅱ在设计时就已经充分考虑了可移植性,所以µC/OS-Ⅱ的移植相对来说是比较容易的。[5,6]
要使µC/OS-Ⅱ正常运行,处理器必须满足以下要求:
(1) 处理器的C编译器能产生可重入代码。
(2) 用C语言就可以打开和关闭中断。
(3) 处理器支持中断,并且能产生定时中断(通常在10至100Hz之间)。
(4) 处理器支持能够容纳一定量数据(可能是几千字节)的硬件堆栈。
(5) 处理器有将堆栈指针和其它CPU寄存器读出和存储的指令
图2-1说明了µC/OS-Ⅱ的结构以及它与硬件的关系。从图中可以看到整个系统的架构。更底层是硬件层,该层主要涉及到CPU处理器的架设,以及它与外部各功能模块的连接,对于CPU处理器的初始化也是构架嵌入式系统的重要内容,特别是对定时器的设置,将是构建操作系统的基础,它决定整个系统的性能。对于软件部分,更底层是与处理器相关的程序代码,该段代码直接对CPU处理器进行初始化,这部分代码就是移植操作系统的主要内容,也是最难以理解的部分。这段代码绝大部分程序是用汇编语言编写的,因为在程序运行的时候,这部分代码的调用次数最频繁。在向上的代码就与处理器没有任何的关系,其中一部分包括操作系统的配置文件,像OS_CORE.c,OS_FLAG.c等文件。这部分代码是用来编写一些基本的底层函数,这些函数将作为以后应用部分的基本函数库进行调用,这部分函数构成了操作系统的基本构架,不同的操作系统所对应的系统的设计思想不同,主要体现在这些函数的设计中。除了系统的基本函数外,还有应用部分的基本配置文件。该文件声明的是与具体的应用配置有关的一些设置文件。比如,各任务的一些基本参数,所使用的信号量的声明,以及液晶的参数配置等。不同的应用程序对应的该文件参数配置也不同。有了底层的基本配置文件,就可以编写具体的应用程序了,最上层就是应用程序,针对不同的应用需求,编写不同的应用程序。
μCOS-II不使用C语言中的short、int、long等数据类型的定义,因为它们与处理器类型有关,隐含着不可移植性。代之以移植性强的整数数据类型,这样,既直观又可移植,不过这就成了必须移植的代码。根据ADS编译器的特性,这些代码如程序清单图2-2所示。
与所有的实时内核一样,µC/OS-Ⅱ需要先禁止中断再访问代码的临界段,并且在访问完毕后重新允许中断。这就使得µC/OS-Ⅱ能够保护临界段代码免受多任务或中断服务例程(ISRs)的破坏。为了隐藏编译器厂商提供的具体实现 *** ,µC/OS-Ⅱ定义了两个宏来禁止和允许中断:OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()。
μCOS-II使用结构常量OS_STK_GROWTH中指定堆栈的生长方式:置OS_STK_GROWTH为0表示堆栈从下往上长。置OS_STK_GROWTH为1表示堆栈从上往下长。虽然ARM处理器核对于两种方式均支持,但ADS的C语言编译器仅支持一种方式,即从上往下长,并且必须是满递减堆栈,所以OS_STK_GROWTH的值为1。
µC/OS-Ⅱ的移植实例要求用户编写四个简单的汇编语言函数: OSStartHighRdy();OSCtxSw();OSIntCtxSw();OSTickISR()。如果用户的编译器支持插入汇编语言代码的话,用户就可以将所有与处理器相关的代码放到OS_CPU_C.C文件中,而不必再拥有一些分散的汇编语言文件。
使就绪状态的任务开始运行的函数叫做OSStart(),如下示意函数所示。在用户调用OSStart()之前,用户必须至少已经建立了一个任务。OSStartHighRdy()假设OSTCBHighRdy指向的是优先级更高的任务的任务控制块。为了简单一点,堆栈指针总是储存在任务控制块(即它的OS_TCB)的开头。换句话说,也就是要想恢复的任务堆栈指针总是储存在OS_TCB的0偏址内存单元中。
如果当前任务调用µC/OS-Ⅱ提供的系统服务,并使得更高优先级任务处于就绪状态,µC/OS-Ⅱ就会借助上面提到的向量地址找到OSCtxSw()。在系统服务调用的最后,µC/OS-Ⅱ会调用OSSched(),并由此来推断当前任务不再是要运行的最重要的任务了。软中断 (或陷阱) 指令会强制一些处理器寄存器(比如返回地址和处理器状态字)到当前任务的堆栈中,并使处理器执行OSCtxSw()。这些代码必须写在汇编语言中,因为用户不能直接从C中访问CPU寄存器。注意在OSCtxSw()和用户定义的函数OSTaskSwHook()的执行过程中,中断是禁止的。

OSIntExit()通过调用OSIntCtxSw()来从ISR中执行切换功能。因为OSIntCtxSw()是在ISR中被调用的,所以可以断定所有的处理器寄存器都被正确地保存到了被中断的任务的堆栈之中。实际上除了需要的东西外,堆栈结构中还有其它的一些东西。OSIntCtxSw()必须要清理堆栈,这样被中断的任务的堆栈结构内容才能满足人们的需要。
要想了解OSIntCtxSw(),大家可以看看µC/OS-Ⅱ调用该函数的过程。假定中断不能嵌套(即ISR不会被中断),中断是允许的,并且处理器正在执行任务级的代码。当中断来临的时候,处理器会结束当前的指令,识别中断并且初始化中断处理过程,包括将处理器的状态寄存器和返回被中断的任务的地址保存到堆栈中。至于究竟哪些寄存器保存到了堆栈上,以及保存的顺序是怎样的,并不重要。
CPU会调用正确的ISR。µC/OS-Ⅱ要求ISR在开始时要保存剩下的处理器寄存器。一旦寄存器保存好了,µC/OS-Ⅱ就要求或者调用OSIntEnter(),或者将变量OSIntNesting加1。在这个时候,被中断任务的堆栈中只包含了被中断任务的寄存器内容。现在,ISR可以执行中断服务了。并且如果ISR发消息给任务(通过调用O *** boxPost()或OSQPost()),恢复任务(通过调用OSTaskResume()),或者调用OSTimeTick()或OSTimeDlyResume()的话,有可能使更高优先级的任务处于就绪状态。
假设有一个更高优先级的任务处于就绪状态。µC/OS-Ⅱ要求用户的ISR在完成中断服务的时候调用OSIntExit()。OSIntExit()会告诉µC/OS-Ⅱ到了返回任务级代码的时间了。调用OSIntExit()会导致调用者的返回地址被保存到被中断的任务的堆栈中。
OSIntExit()刚开始时会禁止中断,因为它需要执行临界段的代码。根据OS_ENTER_CRITICAL()的不同执行过程,处理器的状态寄存器会被保存到被中断的任务的堆栈中。OSIntExit()注意到由于有更高优先级的任务处于就绪状态,被中断的任务已经不再是要继续执行的任务了。在这种情况下,指针OSTCBHighRdy会被指向新任务的OS_TCB,并且OSIntExit()会调用OSIntCtxSw()来执行任务切换。调用OSIntCtxSw()也同样使返回地址被保存到被中断的任务的堆栈中。
用户切换任务的时候,用户只想将某些项保留在堆栈中,并忽略其它项。这是通过调整堆栈指针(加一个数在堆栈指针上)来完成的。加在堆栈指针上的数必须是明确的,而这个数主要依赖于移植的目标处理器(地址空间可能是16,32或64位),所用的编译器,编译器选项,内存模式等等。另外,处理器状态字可能是8,16,32甚至64位宽,并且OSIntExit()可能会分配局部变量。有些处理器允许用户直接增加常量到堆栈指针中,而有些则不允许。在后一种情况下,可以通过简单的执行一定数量的pop(出栈)指令来实现相同的功能。一旦堆栈指针完成调整,新的堆栈指针会被保存到被切换出去的任务的OS_TCB中。
这些代码必须写在汇编语言中,因为用户不能直接从C语言中访问CPU寄存器。如果用户的编译器支持插入汇编语言代码的话,用户就可以将OSIntCtxSw()代码放到OS_CPU_C.C文件中,而不放到OS_CPU_A.A *** 文件中。正如用户所看到的那样,除了之一行以外,OSIntCtxSw()的代码与OSCtxSw()是一样的。这样在移植实例中,用户可以通过“跳转”到OSCtxSw()中来减少OSIntCtxSw()代码量。
µC/OS-Ⅱ要求用户提供一个时钟资源来实现时间的延时和期满功能。时钟节拍应该每秒钟发生10-100次。为了完成该任务,可以使用硬件时钟,也可以从交流电中获得50/60Hz的时钟频率。
这些代码必须写在汇编语言中,因为用户不能直接从C语言中访问CPU寄存器。如果用户的处理器可以通过单条指令来增加OSIntNesting,那么用户就没必要调用OSIntEnter()了。增加OSIntNesting要比通过函数调用和返回快得多。OSIntEnter()只增加OSIntNesting,并且作为临界段代码中受到保护。
µC/OS-Ⅱ的移植实例要求用户编写六个简单的C函数:OSTaskStkInit(); OSTaskCreateHook();OSTaskDelHook();OSTaskSwHook();OSTaskStatHook(); OSTimeTickHook()。唯一必要的函数是OSTaskStkInit(),其它五个函数必须得声明但没必要包含代码。
OSTaskCreate()和OSTaskCreateExt()通过调用OSTaskStkInt()来初始化任务的堆栈结构,因此,堆栈看起来就像刚发生过中断并将所有的寄存器保存到堆栈中的情形一样。显示了OSTaskStkInt()放到正被建立的任务堆栈中的东西。注意,在这里我假定了堆栈是从上往下长的。下面的讨论同样适用于从下往上长的堆栈。
在用户建立任务的时候,用户会传递任务的地址,pdata指针,任务的堆栈栈顶和任务的优先级给OSTaskCreate()和OSTaskCreateExt()。虽然OSTaskCreateExt()还要求有其它的参数,但这些参数在讨论OSTaskStkInt()的时候是无关紧要的。为了正确初始化堆栈结构,OSTaskStkInt()只要求刚才提到的前三个参数和一个附加的选项,这个选项只能在OSTaskCreateExt()中得到。
该函数主要是对相关的几个寄存器进行初始化工作,初始化的寄存器对应于

创建cos系统遇到了哪些问题和优化设计

System(片内操作系统),它一般是紧紧围绕着它所服务的智能卡的特点而开发的。由于不可避免地受到了智能卡内微处理器芯片的性能及内存容量的影响,因此,COS在很大程度上不同于我们通常所能见到的微机上的操作系统(例如DOS、UNIX等)。首先,COS是一个专用系统而不是通用系统。即:一种COS一般都只能应用于特定的某种(或者是某些)智能卡,不同卡内的COS一般是不相同的。因为COS一般都是根据某种智能卡的特点及其应用范围而特定设计开发的,尽管它们在所实际完成的功能上可能大部分都遵循着同一个国际标准。其次,与那些常见的微机上的操作系统相比较而言,COS在本质上更加接近于监控程序、而不是一个通常所谓的真正意义上的操作系统,这一点至少看来仍是如此。因为在当前阶段,COS所需要解决的主要还是对外部的命令如何进行处理、响应的问题,这其中一般并不涉及到共享、并发的管理及处理,而且就智能卡在现在的应用情况而言,并发和共享的工作也确实是不需要的。

抱歉,评论功能暂时关闭!