|
本帖最后由 yuanpooo 于 2014-5-22 08:56 编辑
关于CooCox CoOS的详细介绍请看这里
在此截取一段如下:
CooCox CoOS 是一款针对ARM Cortex-M系列芯片而设计的实时系统内核。
CoOS特征:
免费并开源
ARM Cortex M3及M0定制操作系统
高度可裁剪性,最小系统内核仅974Byte
支持优先级抢占和时间片轮转
自适应任务调度算法
中断延时时间趋近于零
堆栈溢出检测
信号量、邮箱、队列、事件标志、互斥等同步通信方式
支持多种编译器:ICCARM、ARMCC、GCC
CoOS是专门针对Cortex-M(目前只发现M0和M3)系列芯片的一个嵌入式实时操作系统,所以在Cortex-M系列芯片上的移植非常简单。其中有些接口和数据类型宏定义和uCOS的长得有点像,所以熟悉uCOS的童鞋看见它估计会觉得有点儿亲切。。。估计也会觉得有点别扭,关于其性能介绍,上面的网址里面有详细介绍。
Ok,说下硬件平台,前段时间花了28大洋在周立功X宝店买了个TinyM0,现在竟然发现还有东西送!!(我买的时候没有!坑爹的周立功~~ )。不过。。。吃了一个月的尘,看着有点对不起。。。。这28大洋。So,今天打算搞搞它。
开始移植前,要准备两个东西:一,一个能动起来的LPC1114裸跑例程,例程里不能修改SysTick的配置和Reload寄存器的值;二,CoOS的最新版源码。
裸跑例程我这里用的是一个GPIO例程,是操作TinyM0上的唯一一个LED闪烁的例程,不过用到了SysTick做延时。。。。。后面会删掉。
CoOS的源码,目前是1.1.5版,其结构如下:
Kernel里面是内核C和H文件,portable里面针对三大IDE的移植文件,这里我用的是KeilMDK
OK,开始正题。
一,将CoOS文件添加到例程中,直接将整个CoOS文件夹拖到工程文件,注意看图片中的文件路径,我的工程文件夹名为“LPC1114_T2_CoOS”
二,在Keil中的project面板中增加一个CoOS文件夹,专用于添加CoOS的文件,接着就将刚刚提到的Kernel文件中的所有.C文件,portable中的“arch.c”及portable\Keil中的"port.c"添加到keil工程的CoOS文件夹。然后将头文件路径添加到工程选项中:
图中,看左边的project面板,就是刚添加的系统源码,然后红框是需要添加的头文件目录。
三,上面已经把需要的加的文件和目录都加了,现在就可以开始写main函数了。也很简单,只需调用两个接口:一,初始化系统;二,启动系统。看代码如下
- #include "user_cfg.h"
- #include "user_inc.h"
- #include <CoOS.h>
- #define LED P2(7)
- void LED_Init(void)
- {
- //使能GPIO时钟
- SCM_AHBPeriphClkCtrl(SCM_AHBPeriph_GPIO, ENABLE);
-
- //配置LED引脚为GPIO管脚功能
- LPC_IOCON->PIO2_7 &= ~0x07;
- //配置为输出
- LPC_GPIO2->DIR |= 1<<7;
-
- }
- OS_STK taskA_stk[128];
- void taskA(void *pParam)
- {
- LED_Init();
-
- LPC_GPIO2->DATA = 0x00;
-
- while (1)
- {
- LED = 0xff;
- CoTickDelay (50);
- LED = 0x00;
- CoTickDelay (50);
- }
- }
- int main(void)
- {
-
- //初始化CoOS,内部会配置SysTick
- CoInitOS ( );
-
- CoCreateTask (taskA,0,0,&taskA_stk[128-1],128);
-
- CoStartOS ( );
- }
复制代码
这里我也顺便创建了一个任务做测试。
好了,编译,下载,代码在TinyM0上调试通过。下面放工程
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
阿莫论坛20周年了!感谢大家的支持与爱护!!
如果天空是黑暗的,那就摸黑生存;
如果发出声音是危险的,那就保持沉默;
如果自觉无力发光,那就蜷伏于牆角。
但是,不要习惯了黑暗就为黑暗辩护;
也不要为自己的苟且而得意;
不要嘲讽那些比自己更勇敢的人。
我们可以卑微如尘土,但不可扭曲如蛆虫。
|