Nucleo-L053加入CoOS操作系统,对于CoOS,详情可见
http://www.coocox.org。
CooCox CoOS CooCox CoOS 是一款针对ARM Cortex-M系列芯片而设计的实时系统内核。
CoOS特征:
■免费并开源
■ARM Cortex M3及M0定制操作系统
■高度可裁剪性,最小系统内核仅974Byte
■支持优先级抢占和时间片轮转
■自适应任务调度算法
■零中断延时时间
■堆栈溢出检测
■信号量、邮箱、队列、事件标志、互斥等同步通信方式
■支持多种编译器:ICCARM、ARMCC、GCC
技术数据:
时间特性:
功能 时间 (无时间片轮转/有时间片轮转)
创建已定义的任务(无任务切换) 5.3us / 5.8us
创建已定义的任务(有任务切换) 7.5us / 8.6us
删除任务 (退出任务) 4.8us / 5.2us
任务切换 (切换内容) 1.5us / 1.5 us
任务切换 (在设置事件标志的情况下) 7.5us / 8.1us
任务切换 (在发送信号量的情况下) 6.3us / 7.0us
任务切换 (在发送邮件的情况下) 6.1us / 7.1us
任务切换 (在发送队列的情况下) 7.0us / 7.6us
设置事件标志(无任务切换) 1.3us / 1.3us
发送信号量(无任务切换) 1.6us / 1.6us
发送邮件(无任务切换) 1.5us / 1.5us
发送队列(无任务切换) 1.8us / 1.8us
IRQ中断服务程序的最大中断延迟时间 0 / 0
空间特性:
描述 空间
内核占RAM空间 168 Bytes
内核占代码空间 974 Bytes
一个任务占RAM空间 TaskStackSize + 24 Bytes(MIN)
TaskStackSize + 48 Bytes(MAX)
一个邮箱占RAM空间 16 Bytes
一个信号量占RAM空间 16 Bytes
一个队列占RAM空间 32 Bytes
一个互斥体占RAM空间 8 Bytes
一个用户定时器占RAM空间 24 Bytes
#include "mbed.h"
#include "CoOS.h"
//------------------------------------
// Hyperterminal configuration
// 9600 bauds, 8-bit data, no parity
//------------------------------------
OS_STK task1_stk[256];
OS_STK task2_stk[256];
Serial pc(SERIAL_TX, SERIAL_RX);
DigitalOut myled(LED1);
OS_FlagID Flag;
void task2(void* Pdata)
{
int i = 1;
while(1)
{
CoWaitForSingleFlag (Flag,0);
pc.printf("This program runs since %d seconds.\n", i++);
}
}
void task1(void* Pdata)
{
Flag = CoCreateFlag(1,0);
while(1)
{
CoTickDelay(100);
CoSetFlag(Flag);
myled = !myled;
}
}
int main() {
CoInitOS();
CoCreateTask(task1,0,10,&task1_stk[255],256);
CoCreateTask(task2,0,10,&task2_stk[255],256);
CoStartOS();
}
创建了两个任务和一个事件标志,详情见工程。