请教:RT-Thread怎样深入
呵呵,不是使用,是深入理解分析,有结构说明文档?辅助工具?光啃代码,头晕,不知道从哪下手。 你可以先看RT-Thread编程手册,里面有对RT-Thread内核较为详细的介绍。http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=3868799&bbs_page_no=1&bbs_id=3066 谢谢 有一个问题,看RTT MANUAL里面的例程:
/* 生成者线程入口*/
void producer thread entry(void* parameter)
{
int cnt = 0;
/* 运行100次*/
while( cnt < 100)
{
/* 获取一个空位*/
rt sem take(&sem empty, RT WAITING FOREVER);
/* 修改array内容,上锁*/
rt sem take(&sem lock, RT WAITING FOREVER);
array = cnt + 1;
rt kprintf("the producer generates a number: %d\n", array);
set++;
rt sem release(&sem lock);
/* 发布一个满位*/
rt sem release(&sem full);
cnt++;
/* 暂停一段时间*/
rt thread delay(50);
}
rt kprintf("the producer exit!\n");
}
这个任务为什么不象其他的RTOS那样,必须是WHILE(1)没有返回的形式?
在打印生产者退出后,任务就要返回了,而这会打乱任务调度的。
RTT如何做到这一点? 上面这个例子仅仅是不想让它永远继续下去,所以设置了一个counter值。
RTT是支持线程运行结束的,一个函数调用时,它的返回值是LR寄存器(假设是ARM),所以在线程栈初始化时,已经把退出函数放在栈的LR寄存器位置,所以如果运行结束它能够自动做后面的收尾处理。 回复【楼主位】winshton
呵呵,不是使用,是深入理解分析,有结构说明文档?辅助工具?光啃代码,头晕,不知道从哪下手。
-----------------------------------------------------------------------
核心代码没多少行,编程指南已经露出一些端倪,所以剩下的仔细分析下就可以了,很容易的。 今天学了一招,仔细看了一下RTX:
typedef struct OS_SCB {
U8 cb_type; /* Control Block Type */
U16 tokens; /* Semaphore tokens */
struct OS_TCB *p_lnk; /* Chain of tasks waiting for tokens */
} *P_SCB;
struct OS_SCB a;
P_SCB B;
a是结构体,B是指针,不浪费RAM。 对了,ffxz老兄,想请教一个问题。
RTX manual里面有如下函数:OS_TID os_tsk_create (
void (*task)(void), /* Task to create */
U8 priority ); /* Task priority (1-254) */
在它的头文件里,是如下定义:
#define os_tsk_create(tsk,prio) _os_tsk_create((U32)rt_tsk_create,tsk,prio,NULL,NULL)
而在RTOS源程序里面,我找不到_os_tsk_create, 只找到:
extern OS_TID rt_tsk_create (FUNCP task, U32 prio_stksz, void *stk, void *argv);
到哪里都找不到_os_tsk_create, 那么,它到哪里去了呢? 呵呵,对RTX没有什么研究,你说的这个实现是否是在库中了? 回复【楼主位】winshton
呵呵,不是使用,是深入理解分析,有结构说明文档?辅助工具?光啃代码,头晕,不知道从哪下手。
-----------------------------------------------------------------------
发现你把RT-Thread的名称都写错了,这个似乎有些说不过去,帮你把标题中的名字改过来了。如果觉得RT-Thread太英文化了,那么用它的中文名称:实时线程操作系统 即可。 回复【9楼】ffxz
-----------------------------------------------------------------------
抱歉没注意,春节期间如果有空闲时间的话,准备研究一下RT-Thread,正好手里有块7x256的板子 回复【5楼】ffxz
回复【楼主位】winshton
呵呵,不是使用,是深入理解分析,有结构说明文档?辅助工具?光啃代码,头晕,不知道从哪下手。
-----------------------------------------------------------------------
核心代码没多少行,编程指南已经露出一些端倪,所以剩下的仔细分析下就可以了,很容易的。
-----------------------------------------------------------------------
可否有空写一个核心代码的说明文档:)
我也是,直接啃,不知道怎么开始下手,有文档做指引,感觉会顺畅好多 RT-Thread的实现条理性是非常清晰的,不过需要些预备知识,
list链表的实现 --> kservice.h
对象的实现 --> object.c
基础知识在编程指南中有提及
页:
[1]