【uTenux实验】中断处理】的更多相关文章

中断处理是一个比较有意思的东西.uTenux的中断处理包括了处理外部中断.CPU异常等.他是OS中任务无关部分.因此,当中断到来的时候OS会停止任务调度,不会发生任务切换.直到程序从中断中返回. uTenux的中断处理部分API如下: 1.定义中断处理程序 ER ercd= tk_def_int(UINT dintno,T_DINT* pk_dint); 这个函数定义一个中断定义编号为dtintno的中断处理程序,并允许中断处理程序运行. 中断定义编号是0-255的,比如Cortex-M3中NM…
1.使用的uTenux内核代码:http://www.uloong.cc/cn/download/uTenux_V1.6.00r180.zip 2.uTenux的特性: 1.微内核  2.开放源码.完全免费  3.不需要MMU,占用ROM/RAM少   4.可移植.可固化.可裁剪   5.抢占式实时多任务操作系统   6.支持所有32位ARM7/9和Cortex M系列的微控制器   7.可配置任意多个的任务.任务的优先级最多255个 3.实验软硬件环境: OS软件版本:uTexux1.60 开…
任务就是一个无限循环.uTenux提供的任务管理功能是很强大的,包括建立和删除一个任务,启动或退出任务,取消一个任务的启动请求,改变任务的优先级和査询任务状态,使任务进人睡眠状态和唤醒状态,取消唤醒请求,强制释放任务等待状态,使任务状态变成挂起状态.延迟调用任务的执行和禁止任务等待状态. 任务是一个通过ID来识别的对象,每个任务都有基础优先级和当前优先级,可用来控制任务的执行次序 任务管理的核心是调度.uTenux会根据创建任务时为任务设置的初始属性和任务运行是获得的动态属性,对任务进行调度.…
信号量(semaphore)是一个用来指示可用的资源并将可用资源的数量以数值的形式表示出来的对象.当使用一组资源时,信号量用来实现互斥控制和同步.uTenux提供了信号量出来的API,可以很方便地使用信号量. uTenux中,信号量包含一个资源计数(用来指示是否存在相应的资源以及资源的数量)和一个等待信号量的任务队列. 当一个任务返回m个资源时,信号量资源计数加m.当一个任务获得n个资源时,信号量资源计数减n.如果信号量资源的数量不够(进一步减少信号量计数可能使其值变成负数),则尝试获取资源的任…
事件标志是一个用来实现同步的对象,由多个位组成,用作指示对应事件存在的标志.事件标志由用来指示对应事件存在的位模式(bitpattern)和一个等待事件标志的任务队列组成. uTenux提供了一组API用于处理事件标志:创建.删除.设置.等待.清除. 1.创建事件标志:tk_cre_flg 为建立的事件标志分配一个控制块 事件结构体: typedef struct t_cflg { VP exinf; /* 事件标志扩展信息 */ ATR flgatr; /* 事件标志的属性 */ UINT i…
邮箱是一个通过在系统(共享)内存空间传递消息来实现同步和通信的对象.uTenux中每个邮箱都包含一个用来发送消息的消息队列和一个用于等待接收消息的任务队列,其使用邮箱功能的消息内容放置在发送方和接收方共享的内存中,因此,实际发送和接收的只有位于这片共享空间的消息起始地址.消息的内容本身并不复制. 消息邮箱的API包括创建删除发送接收删除的功能. 1.使用tk_cre_mbx创建一个消息邮箱.属性设置很简单. 2.向邮箱发送消息 ER ercd= tk_snd_mbx(ID mbxid,T_MSG…
互斥体,维基百科中交互斥锁.其定义是这样的:互斥锁(英语:英语:Mutual exclusion,缩写 Mutex)是一种用于多线程编程中,防止两条线程同时对同一公共资源(比如全局变量)进行读写的机制.该目的通过将代码切片成一个一个的临界区域(critical section)达成.临界区域指的是一块对公共资源进行访问的代码,并非一种机制或是算法.一个程序.进程.线程可以拥有多个临界区域,但是并不一定会应用互斥锁. 关于互斥体,最经典的有两个例子.一个是串口的使用,另一个是打印机的使用. 串口在…
uTenux的消息缓冲区是一个通过传递大小可变的消息来实现同步和通信的对象. 消息缓冲区由三部分组成:1.待发消息队列  2.等接收消息的任务队列  3.用来保存缓冲消息的空间. 和信号相比,消息队列能够传递更多的信息.与管道相比,消息队列提供了有格式的数据,这可以减少开发人员的工作量.但消息队列仍然有大小限制. 在uTenux中当缓冲区空时,接收消息的任务进入等待状态.当缓冲区满时,发送消息的任务进入等待状态. 每个消息只能接收一次,消息被接收接收后消息从消息缓冲区中删除. 使用tk_snd_…
这个是头一次接触的概念.比较不好理解.内核规范中的说明就要20页! 看了王总写的uTenux内核规范之后,有那么一点明白了但理解不深. 集合点端口就像每次工作前的收集情况会.首长下达收集情况指令,各个部门聆听.当给某个部门下达指令之后,这个部门开始工作.并返回信息.所有部门都会报完信息之后,首长心里就有数了:今天天气不错,昨天的机器故障排除了,原料到位.可以开工了!于是,一天的生产工作就此开始.各个部门反馈完情况,就自由活动了.没事唠嗑都行.. 这里的首长,就是创建这个集合点端口的任务.各个部门…
1.固定内存池管理实验 内存管理是操作系统的一个基础功能.uTenux的内存池管理函数提供了基于软件的内存池管理和内存块分配管理.uTenux的内存池有固定大小的内存池和大小可变的内存池之分,它们被看成是互相独立的对象,需要不同的系统调用集来进行操作. 内存池管理函数管理的内存全部包含在系统空间以内. 1.固定尺寸内存池实验 固定尺寸内存池是一个用来动态管理固定尺寸内存块的对象.每个固定尺寸内存池都有一个用作固定尺寸内存池的内存空间(简称为内存池区)和一个等待内存块分配的任务队列. uTenux…