打印

一款适合CORTEX MO的操作系统

 关闭 [复制链接]
1028|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
受到警告 楼主
hjz007|  楼主 | 2014-6-27 11:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
and| | 2014-6-28 17:23 | 只看该作者
砸场子来了,:lol
32字节的时候,各模块是什么配置?

使用特权

回复
板凳
hjz007|  楼主 | 2014-6-28 18:30 | 只看该作者
本帖最后由 hjz007 于 2014-6-28 19:21 编辑
and 发表于 2014-6-28 17:23
砸场子来了,
32字节的时候,各模块是什么配置?

32个字节的时候是指静态占用。运行时的动态堆栈不算,比如一个函数调用R0~R7的堆栈需求。
所有功能全有,只是任务数和内存占用有关,这个系统不采用配置方式来裁剪模块的。

占用内存计算:

一个任务控制块8个字节
任务链表4个字节(一个任务的时候,链表头尾自指向)
一个阻塞任务链表,四个优先级READY任务链表5*4=20个字节
以上是必须的。
一个事件对象4个字节,一个句柄1个字节(如果不需要事件同步,则不占内存)。

如果系统配置成2个任务的话,需要的RAM非常小的,因为其中一个为IDLE任务,是不需要任务控制块的,也不需要链表管理。
typedef struct HOST_LISTPOOL
{
        U16        u16TaskMap;  //任务调度的所有数据和关系保存在此表之中
        U8        u8Head;
        U8  u8Tail;
} HOST_LISTPOOL;

typedef  struct HOST_TCB
{
    HOST_STK        *pxStk;
        U32                        u32Delay;
        U8                        u8Head;
        U8                        u8Tail;
        unsigned int u4EventId                :4;
        unsigned int u2Flag                 :2;
        unsigned int u1TOE                         :1; //time out of event
        unsigned int u2State                 :2;
        unsigned int u2Prio                  :2;
        unsigned int u1Block                :1;
        unsigned int u4TaskId                 :4;
} HOST_TCB,*PHOST_TCB;

使用特权

回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

37

主题

372

帖子

5

粉丝