完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本帖最后由 3guoyangyang7 于 2016-10-13 21:39 编辑 忙里偷闲写连载,说出去的话泼出去的水,大话都说出去了,累死都要实现,哈哈,信条吗,嘿嘿。今天要讲的就是CCS自带的简单的操作系统ti-RTOS,当然CC3200不止能用TI-RTOS一款操作系统,官方还推荐了Freeos,但是首先应该明确的是任何一款操作系统,不管大小,不可能用一两篇帖子就讲一个操作系统的,所以,小狂这里就讲些基本的概念,然后测试一个工程,嗯,就这样,如果各位看官,小伙伴们看的不过瘾可以参考CCS里自带的说明文档,里边讲的相当清楚。 先说说RTOS,英文名Real Time Operating System,中文名实时操作系统,百度给出的定义是实时操作系统是保证在一定时间限制内完成特定功能的操作系统,常见的RTOS有MDK中自带的RTX,Freeos,飞鸟OS,以及μcos,Tirtos,VXworks等等,在我用过的这些操作系统中个人感觉现在功能最完善的是μcos,完整的保护机制,扩展功能,最神秘的是vxworks,听说美国的F22上都有它的身影,这个东西的稳定性肯定没的说,但是要钱啊,要钱啊,要钱啊,对于我等屌丝来说,钱是最致命的问题,哎,谁让咱穷呢,是不是,所以啊,我们只能玩免费的操作系统。我们下面先说一些简单的概念吧。 在这之前先解释一下操作系统,我们都知道,在单片机中同一个时刻只能执行一段代码,做一件事,单任务系统具有简单直观、易于控制的优点。然而由于程序只能按顺序依次执行,缺乏灵活性,只能使用中断函数实时地处理一些较短的任务,在较复杂的应用中使用极为不便。嵌入式多任务操作系统的出现解决了这个问题。在多任务系统中,可以同时执行多个并行任务,任务之间可以相互跳转,这样我们很多时候都需要在同一时刻能执行多个任务,人类的智慧是伟大的,操作系统就产生了。用大白话解释上边一段话的内容,就是用单核的芯片跑出多核的效果。 一、概念说明 1、任务or进程 任务或者进程,不要纠结,在RTOS中你叫任务也行,叫进程也行,没有区别,他是操作系统中最基础的个体,每一个任务都是一个功能模块,可以这么理解,一般理想的做法,也就是一个功能用一个任务实现,我们用操作系统的目的也就是希望这些任务能按照我们指定的模式,或串行,或并行来执行。 2、时间片 只要是RTOS就少不了这个概念,什么叫时间片,就是时间片段,一个操作系统运行的基础就是要有个时间片,一个任务都是靠时间片来运转的,一个任务执行的时间就是时间片的整数倍,这个是可以根据你的设定来选择的。基于时间片的轮询,这个概念不是每个操作系统给都有的,TI-RTOS就没有这个概念,但是也解释一下,因为这个自己就可以尝试着用单片机做到,一个任务执行的时间是确定的,只要分配的时间片执行完成之后无论有没有执行完整个任务,那么这个任务都会被挂起,然后让出cpu控制权给其他任务,然后其他任务再次执行其的时间片,就这么轮转下去,基于时间片的轮询是没有优先级概念的,或者说是相同的优先级任务之间的切换。 3、优先级 优先级,这个呢就举个栗子吧,就比如说部队吧,有司令军师旅团营连排班,一级大一级,谁的级别大,谁的权利就高,对应我们系统中,谁的优先级高,谁就能获得优先执行权,只要任务就绪,就行执行,但是在我们系统中没有文字,只有数字,不同的RTOS所支持的最大优先级的数字不一样,有可能大的优先级高,也有可能小的优先级高。说完优先级,我们来唠一唠抢占式任务调度,大白话解释,小狂感觉更能被接收,怎么说呢,就是领导来了,想要获得某个东东的控制权,下边的小弟目前谁占用这个东东都不好使,必须让给领导,哈哈,不知道这个解释恰当不。也就是说高优先级的任务就绪好,目前占用CPU的任务挂起,让出CPU给高优先级的任务使用。就这样,篇幅有限,小狂说的很粗糙,当然里边的机制肯定不是这么简单,所以想要详细了解一个操作系统,最好的方法就是看其手册,品其精髓。 懂了这些概念,不能说你懂操作系统,最起码出去吹牛逼说你是学过RTOS的也能说的过去,哈哈。 4、栈 有深入研究过中断的都应该会知道,这个是单片机里重要的东西,我们得操作系统任务的调度主要使用的就是栈,当任务调度的时候,会把当前执行的位置,以及一些参数压入栈,然后等再次执行的时候会再次回到上次执行的位置,这个其实和中断差不多,所以你分配的栈空间的大小直接决定了你能运行的任务的数量,当然你也可以为每个栈分配不同的栈尺寸,这要看你这个任务里代码量,以及变量的多少了。 当然还有些重要的概念就是RTOS应用的问题啦,比如邮箱机制,信号量机制,互斥量机制,事件机制,队列机制,时钟设定啊,等等这些,篇幅有限不能在此一一介绍,请见谅啊,要是有不懂得,可以加小狂qq,一起交流,一起学习,qq:838239071 二、运行一个简单的程序 下面讲的应该在前边建工程的时候讲过的,这里不详细说明,首先你应该在你的工程中加入图中红框中的内容 第一个是TI出了一个简明的TI-RTOS的调用库,最后一个是ti_rtos的配置文件,按照如下图配置 这个要是跟我不一样选最新的就行,基本上到这就可以用了,要是想使用其他的可以双击app.cfg进行配置,界面长这样 以后要是需要使用什么,信号量啊,在这里边打开,勾上就可以,下边的图就是task的主要配置 所有的配置完后我们写两个任务让其交替调用,第一个任务输出test1,第二个任务输出test2 函数如下图所示 其中pvParameters是一个空参量指针,然后我们创建任务 解释一下这几个参数,第一个是函数名,第二个是任务标识文本,第三个是分配给任务的栈指针,第四个是传给任务的参量,就是pvParameters这个接收的,第五个是任务的优先级,我们这里给的一样,第六个是任务创建时的句柄,标识任务用的。osi_Sleep是任务延时函数,这里的意思是执行完操作后让人物休眠10ms,因为没有时间片轮询调度,我们只能手动开启调度器,执行了osi_Sleep函数后就会释放控制权,执行其他的任务 然后我们启用操作系统 把程序下载到开发板中,通过串口,我们能看到如下的现象,test1和test2交替出现 三、总结 写到这,这篇帖子已经写了2300多字了,小狂感觉根本没有讲到操作系统的精髓,只是演示性的讲了一下概念,还是那句话,在这里,小狂只能带小白朋友们入门,其他的还要靠自己啊,没事多翻翻手册,说明文档还是有好处的,虽然英文看起来比较费劲,但是学的东西都是自己的,是不是,好了,这篇帖子到这里就结束了,看完的朋友来了就留下脚印,写的好呢,就撒撒花,留留言啥的,如果写的不好能就提提意见,大家一起学习一起进步吗,是不是,下一站讲点简单的,哈哈,从后往前讲,咱就说说CC3200里边M4的事吧,哈哈,敬请期待。 其他跟着小狂玩CC3200系列请移步如下连接 评分 |
|
相关推荐
5 个讨论
|
|
|
|
|
|
|
|
不错,学习了
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
332 浏览 1 评论
528 浏览 2 评论
NA555DR VCC最低电压需要在5V供电,为什么用3.3V供电搭了个单稳态触发器也使用正常?
772 浏览 3 评论
MSP430F249TPMR出现高温存储后失效了的情况,怎么解决?
649 浏览 1 评论
对于多级放大电路板,在PCB布局中,电源摆放的位置应该注意什么?
1124 浏览 1 评论
AT32F407在USART2 DMA发送数据时,接包接到了要发送的数据,程序还是处于等待传输完成的标识判断中,为什么?
54浏览 29评论
90浏览 23评论
请问下tpa3220实际测试引脚功能和官方资料不符,哪位大佬可以帮忙解答下
248浏览 20评论
请教下关于TAS5825PEVM评估模块原理图中不太明白的地方,寻求答疑
196浏览 14评论
两个TMP117传感器一个可以正常读取温度值,一个读取的值一直是0,为什么?
54浏览 13评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-21 19:58 , Processed in 0.789090 second(s), Total 54, Slave 46 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号