这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » 软件与操作系统 » 悠龙(μTenux系统)开发进程贴--智能--物联

共46条 4/5 |‹ 1 2 3 4 5 跳转至
高工
2013-07-31 13:24:40     打赏
31楼

8. 实验七 (集合点端口)


1. 概念学习

        概念:

        集合点端口:通过一个任务向另外一个任务产生处理请求和将处理结果返回给发出请求的任务。所有这些任务等待的对象被称为一个集合点端口。

        应用场合

        通常用来实现客户机 /服务器 (Client/Server) 模型中的任务通信

        构成:

        结合点条件以一个位模式来指示。如果两方的位模式(调用一个集合点端口集合点的任务的集合点条件位模式和接受集合点的任务的集合点条件位模式 )的按位逻辑“ 与” 结果不为0,则建立集合点。

        相关函数:

        建立集合点端口:ID porid = tk_cre_por ( T_CPOR  *pk_cpor)

        删除集合点端口:ER ercd = tk_del_por(ID porid)

        调用集合点端口: INT rmsgsz = tk_cal_por(ID porid, UINT calptn, VP msg, INT cmsgsz, TMO tmout)

        接受集合点端口: INT cmsgsz = tk_acp_por(ID porid, UINT acpptn, RNO *p_rdvno, VP msg, TMO tmout)

        回应集合点:ER ercd = tk_rpl_rdv (RNO rdvno, VP msg, INT rmsgsz)

        查询端口状态: ER ercd = tk_ref_por(ID porid, T_RPOR *pk_rpor)


2.实验操作


3. 程序分析


高工
2013-07-31 13:34:21     打赏
32楼

9.  实验八 (固定尺寸内存池)



1. 概念学习

        概念:

        内存池包括固定尺寸内存池和可变尺寸内存池。

        固定尺寸内存池:存储块的分配和回收时间是确定的, 不会出现存储碎片,不需要回收存储碎片,进行合并等工作。

        可变尺寸的内存池:会出现碎片,分配时间可能无法确定,内存不会浪费。

        支持等待队列,避免暂时的内存耗尽导致任务停止。

        不支持MMU。

        构成属性:

        一个内存池。

        等待申请内存块的任务的等待队列。等待队列属性可以是FIFO或者优先级方式。

        相关函数:

        创建固定尺寸内存池:ID mpfid =  tk_cre_mpf ( T_CMPF*pk_cmpf )

        获取固定尺寸内存块:ER ercd = tk_get_mpf ( ID mpfid, VP *p_blf, TMO tmout )

        释放固定尺寸内存块:ER ercd = tk_rel_mpf ( ID mpfid, VP blf )

        删除固定尺寸内存池:ER ercd = tk_del_mpf ( ID mpfid )

        查询固定尺寸内存池:ER ercd = tk_ref_mpf ( ID mpfid, T_RMPF *pk_rmpf )


2. 实验操作


3. 程序分析

 


高工
2013-07-31 14:58:01     打赏
33楼

10. 实验九 (可变尺寸内存池)


1. 概念学习

    除函数相关的内容在前一实验进行讲述,具体参考官方的教程!

        相关函数:

        创建可变尺寸内存池:ID mpfid = tk_cre_mpl ( T_CMPF*pk_cmpl)

        获取可变尺寸内存块:ER ercd = tk_get_mpl ( ID mplid, W blksz, VP *p_blk, TMO tmout )

        释放可变尺寸内存块:ER ercd = tk_rel_mpl ( ID mplid, VP blk )

        删除可变尺寸内存池:ER ercd = tk_del_mpl ( ID mplid )

        查询可变尺寸内存池:ER ercd = tk_ref_mpl ( ID mplid, T_RMPL *pk_rmpl )


2. 实验操作


3. 程序分析


高工
2013-07-31 15:33:24     打赏
34楼

11. 实验十 (系统时间管理)


1. 概念学习

    系统时间管理主要注意三点:相对时间(REL TIM)、系统时间(SYS TIM)、超时的时限(TMO);

    1.1 相对时间(REL TIM):用作系统调用超时,定时等计时使用,时间基准为1ms,是一个32位的无符号整数,即最大可以设定的时间长度为65535ms。

    1.2 系统时间(SYS TIM):用作表示系统当前时间,改变系统时间不会影响相对时间,而系统时间也是以1ms为时间基准,时间基准是一个64位的有符号整数,因处理器为32位的,因些系统时间需要定义自已的结构体:

    typedef struct systim{

    W hi;

    UW lo;

    }SYSTIM;

    1.3 超时的时限(TMO):用作系统调用的超时处理。时间基准同样是1ms,是一个32位的无符号整数,需要任务作进程作无限制等待时可以使用语句:TMO_FEVR(=-1);

    相关函数:

    设置系统时间: ER ercd=tk_set_tim(SYSTIM *pk_tim)
    获得系统时间:ER ercd=tk_get_tim(SYSTIM *pk_tim)
    获得系统工作时间:ER ercd=tk_get_otm(SYSTIM *pk_tim)


2. 实验操作


3. 程序分析


专家
2013-07-31 16:06:18     打赏
35楼
jlink的i上的点变成草绿色的led,更亮了。

高工
2013-07-31 16:25:14     打赏
36楼

12. 实验十一 (周期性处理)


这一章先放在这里,因为在看教程时没有看懂,预习都不算,目前有个问题,就是那个周期性指的是整个操作系统休眠还是用于管理系统中的某个任务,猜是整个系统,因为某个任务要休眠的话可以直接用前几张的延时函数就可以解决或者任务的休眠函数。先暂时放在这里是为了回去做完实验后再更新……

1. 概念学习


2. 实验操作


3.程序分析


高工
2013-07-31 16:53:48     打赏
37楼

13. 实验十二 (警报处理)


1. 概念学习

    应用环境:

    警报处理比较容易理解,这里所说的报警处理的依据是时间长度,即设定的延时是否到达,与其他因素无关。从激活某一个ID的报警处理的函数参数中的时间参数类型(RELTIM)可以看出,这里的延时长度仍然是以1ms为基准,且最多设置65535ms的延时长度。

    报警程序在运行时属于与任务无关的部分,对任务状态的切换有分派延迟,即任务状态的切换请求会等到已被触发启动的报警处理程序结束后才执行。

    相关函数:

    创建警报处理:ID almid = tk_cre_alm(T_CALM * pk_calm)

    启动警报处理:ER ercd = tk_sta_alm(ID almid,RELTIM almtim)

    停止警报处理:ER ercd = tk_stp_alm(ID almid)

    删除警报处理:ER ercd = tk_del_alm ( ID almid )

    查询警报处理:ER ercd = tk_ref_alm(ID almid, T_RALM * pk_ralm)

    警报处理程序形式(采用C语言编写,属性指定TA_HLNG)
    Void AlarmHandler (VP_INT exinf ){
            // 实际的处理代码在这下面添加
           return;
    }


2. 实验操作


3. 程序分析


高工
2013-08-01 10:06:58     打赏
38楼

14. 实验十三 (中断处理)




1. 概念学习

    概念:

    uT/Keunel 规范中有两种类型的中断:1. 包括设备引发的外部中断;2. CPU异常产生的中断。

    每个中断都有一个中断号,这个中断号可定义一段中断服务程序。中断处理函数可以设计成直接启动的,基本上无须操作系统的干预;同样也可以通过一个高级语言的支持函数来启动。 中断管理函数用于执行外部中断及CPU异常等处理操作。

    uT/Kernel的中断是可嵌套的中断,在低优先级服务函数运行的过程中可能会被高优先级的中断停止,待高优先级中断完成后才能继续执行低优先级中断,最后等所有中断执行完成后继续执行其他任务,具体如下图:

    相关函数:


    定义中断处理程序:ER ercd=tk_def_int(UINT dintno, T_DINT *pk_dint)

    从中断处理程序中返回:void tk_ret_int( )

    禁止所有外部中断:DI(UINT intsts)

    允许所有外部中断:EI(UINT intsts)

    获得存放在 intsts 中外部中断禁止的状态 BOOL isDI( UINT intsts )


2. 实验操作【待更新】



3. 程序分析


高工
2013-08-01 13:18:31     打赏
39楼

15. 实验十四 (系统状态管理)



1. 概念学习

    概念:

    系统状态管理函数是用来改变和查询系统状态的函数,这些函数所提供的功能为:翻转队列中的任务优先级、并取出处于运行状态的任务ID、禁止或使能任务派送、查询上下文和系统,以及查询uT/Kernel版本。

    相关函数:

    翻转就绪队列: ER ercd = tk_rot_rdq ( PRI tskpri )

    获取任务标识符: ID tskid = tk_get_tid ( ) 

    禁止分派: ER ercd = tk_dis_dsp ( ) 

    允许分派; ER ercd = tk_ena_dsp ( ) 

    查询系统状态: ER ercd = tk_ref_sys ( T_RSYS *pk_rsys ) 

    查询版本信息:ER ercd = tk_ref_ver ( T_RVER* pk_rver )


2. 实验操作



3. 程序分析



高工
2013-08-02 15:36:29     打赏
40楼
今天发现一个很严重的问题啊,就是利用悠龙写好的框架测试学习操作系统还好办,但是如果要加其他的东西到系统里面,还是麻烦啊,因为我等还没有认真地看AT91SAM3S4C的器件及编程手册啊,捉急了啊

共46条 4/5 |‹ 1 2 3 4 5 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]