搜索
bottom↓
回复: 34

线程切换行为:STM32 Radio播放电台时

[复制链接]

出0入0汤圆

发表于 2010-6-5 08:30:57 | 显示全部楼层 |阅读模式
用工具抓的,贴图是一个GIF动画,动态显示STM32 Radio上线程切换、线程运行情况

开始的时候还未播放网络电台,变动比较小。后面选择电台,GUI线程运行时间比较长,然后是做缓冲(最后那个0x68056034是nbuf线程,用于获取网络音频数据,线程名称未从板子上获取上来),最后开始进行音频播放。从图中可以看得出来,idle线程(tidle)在播放的时候还是比较空闲的,50%都不到。


(原文件名:radio.gif)

初始这张图上,key线程可以很明显的看出,它会周期性的运行(大约100ms运行一次),每次运行的时间非常短暂(大约54us)

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

 楼主| 发表于 2010-6-5 08:33:17 | 显示全部楼层
需要点击图片才能看到GIF动画

出0入0汤圆

发表于 2010-6-5 10:10:42 | 显示全部楼层
好 加油

出0入0汤圆

发表于 2010-6-5 11:38:40 | 显示全部楼层
说实话,看的不是很明白

出0入663汤圆

发表于 2010-6-5 16:55:30 | 显示全部楼层
回复【3楼】cat_li
说实话,看的不是很明白
-----------------------------------------------------------------------

补充介绍一下收音机中的几个主要线程:
tidle:系统空闲线程,相当于Windows任务管理器中的System Idle Process,它的运行时间相当于CPU空闲时间
erx/etx:网卡数据包收发线程,负责数据包搬运工作
tcpip:TCP/IP数据包处理线程,负责TCP/IP协议解析
ply_ui:播放器界面线程,处理界面事件
ply_bg:后台播放线程,负责MP3软解码,开始播放后,ply_bg线程和tidle线程运行时间基本上各占一半,即软解MP3的CPU占用率在50%左右
key:按键检测线程,100ms延时循环检测,图中能看到非常固定的运行间隔
0x68056034:网络缓冲线程,负责缓冲接收到的MP3数据流和传递给ply_bg线程解码

这下应该比较清晰了吧?

出0入0汤圆

发表于 2010-6-5 18:00:54 | 显示全部楼层
明白了,看清楚了。能直接在液晶屏上显示吗?

出0入0汤圆

发表于 2010-6-5 18:02:38 | 显示全部楼层
太棒了。

出0入0汤圆

 楼主| 发表于 2010-6-5 20:51:47 | 显示全部楼层
工具还做得比较粗糙,这里解析下:
横轴是时间轴,目前刻度条还未做好,所以显示的总是0 -- 100 -- 200,做好后会显示实际的时间刻度。纵轴是线程,表示系统中目前目前存在的线程。内部的条就代表了这个线程的运行情况,从一个时间刻度到另外一个时间刻度,从这个可以看出系统的运行状况,例如系统空闲时,idle线程将运行并且占极大部分的时间。

(原文件名:rti2.jpg)

上面这个图还可以进行放大,能够更准确的看到时间段:

(原文件名:rti_zoomin.jpg)

这个图中,先是idle线程运行,然后切换到erx线程(目前图上还未标识出相应的事件,标上事件后就能更清晰的看到是因为erx从邮箱中获得了一封邮件而唤醒),在图上移动鼠标会看出erx线程这段运行的时间起点是87294929,终点是87294428,然后切换到tcp线程(应该是唤醒了tcpip线程而抢占当前线程,tcpip线程的优先级是10,erx/etx的优先级是12,erx线程一次运行过程并未结束)。当tcpip线程处理结束后(时间点:87294432 - 87295101),返回到erx线程继续后续处理(时间点:87295019 - 87295146);erx线程完成后续处理后,因为nbuf那边在读取网络数据包,此时被唤醒进行数据读取(nbuf线程应该是被tcp线程唤醒的,但nbuf线程的优先级没有erx线程优先级高,所以tcp线程运行结束后是先继续erx线程,然后才切换到nbuf线程)。。。在STM32上,这些时间点的精度是1us。

后面仔细看了看,应该两个线程切换点的时间应该一致才对,后来把图形继续放大,数据就能够对得上了。现在工具做得还很粗糙,系统的信息都已经监控并被传送出来(部分还需要完善,例如线程名并不是100%能够获取成功),目前主要是工具的完善,完善后会包括:
- 通过拖拉鼠标获得两点间的时间长度;点击某段线程运行时间段,能够直接显示实际的起始、结束时间点,而不需要自己去计算。
- 系统中其他事件在图上的反映,例如某个时间点,释放了一个信号量,申请了一块内存等;同样的,点击这个事件能够给出更为具体的信息。
- 系统内所有对象的信息

再后续会包括:
- lwip网络协议栈的状态,TCP连接状态等
- gui事件发送情况。
- 用户扩展事件。

出0入0汤圆

发表于 2010-6-5 21:08:02 | 显示全部楼层
好,这下终于看明白点了。现在就等着收Radio了,有实物对比了好好学习

出0入0汤圆

发表于 2010-6-5 21:33:54 | 显示全部楼层
是通过什么送上来的?JLINK还是串口呢?

出0入0汤圆

 楼主| 发表于 2010-6-5 22:26:12 | 显示全部楼层
目前是串口,设备上的监控软件并不非常依赖于特定通讯方式,应该能够支持USB,网络等方式,后续应该会包括一个用lpc cm3制作的swd设备。

出0入0汤圆

发表于 2010-6-5 23:48:44 | 显示全部楼层
点击看了gif 呵呵
不错的工具···
··
汗一个···
mp3软解 竟然要不了50%mcu资源····

出0入0汤圆

发表于 2010-6-6 09:38:52 | 显示全部楼层
我也在做类似的东西。也是通过串口来的,目的是监视cpu和ram的使用情况。想模仿ucprobe。

出0入0汤圆

发表于 2010-6-10 14:29:44 | 显示全部楼层
^_^ 强贴留名

出0入0汤圆

 楼主| 发表于 2010-6-30 20:52:28 | 显示全部楼层
继续放图


主窗口图 (原文件名:rti_overview.jpg)


对事件进行放大分析图 (原文件名:rti_analysis.jpg)

添加更好的缩放操作,现在只需要用鼠标在图上划一个框就可以对框里的图形进行放大到窗口大小,易用度有了很大的提高。

出0入0汤圆

发表于 2010-6-30 22:33:51 | 显示全部楼层
mark!~~

出0入0汤圆

发表于 2010-7-1 09:16:37 | 显示全部楼层
真强!
不过这个工具是不是不开放,只供核心开发人员呢?运行的信息是通过串口发到PC机上吗?

出0入0汤圆

 楼主| 发表于 2010-7-1 13:15:50 | 显示全部楼层
具体还为定,先把它做好了再说。目前是串口送给PC机,打算弄个link类似的东西自动从板子上抓出来。

出0入0汤圆

发表于 2010-7-1 13:39:11 | 显示全部楼层
拜读,很喜欢这样的insight

出0入0汤圆

发表于 2010-7-1 14:20:21 | 显示全部楼层
看上去就很爽,调试方便很多啊。。。工具的便利性是推广的重要助力啊!

出0入0汤圆

发表于 2010-7-1 14:30:06 | 显示全部楼层

出0入0汤圆

 楼主| 发表于 2010-7-1 22:11:33 | 显示全部楼层
播放转播的美国_之音,CPU占用30%
播放id920.com电台,CPU占用70%
播放普通SD卡的mp3歌曲,CPU占用率50%

在线抓去系统行为数据相对稳定很多,各个对象信息也能够正常回报上来。

出0入0汤圆

发表于 2010-7-2 08:37:22 | 显示全部楼层
期待!
有偿也没问题:)

出0入0汤圆

 楼主| 发表于 2010-7-5 12:19:07 | 显示全部楼层
回复【27楼】softwind  
期待!
有偿也没问题:)
-----------------------------------------------------------------------

针对购买Radio套件,应该会给出一个专门的版本出来(代码是没有的,而且PC端的工具代码估计大家也不会感兴趣),等工具READY了,购买套件的各位可以向我索取。

出0入0汤圆

发表于 2010-7-5 12:49:55 | 显示全部楼层
回复【28楼】ffxz  
回复【27楼】softwind  
期待!
有偿也没问题:)
-----------------------------------------------------------------------
针对购买radio套件,应该会给出一个专门的版本出来(代码是没有的,而且pc端的工具代码估计大家也不会感兴趣),等工具ready了,购买套件的各位可以向我索取。
-----------------------------------------------------------------------
如果可能的话,希望有PC端的代码学习一下。

出0入0汤圆

 楼主| 发表于 2010-7-5 14:14:10 | 显示全部楼层
回复【29楼】softwind  

如果可能的话,希望有pc端的代码学习一下。

-----------------------------------------------------------------------

可能性基本上是0,并且即使代码给你你也看不懂。

出0入0汤圆

发表于 2010-7-5 16:49:11 | 显示全部楼层
回复【30楼】ffxz  
回复【29楼】softwind  
如果可能的话,希望有pc端的代码学习一下。
-----------------------------------------------------------------------
可能性基本上是0,并且即使代码给你你也看不懂。
-----------------------------------------------------------------------
嗯,知道了。

出0入0汤圆

发表于 2010-7-5 23:42:33 | 显示全部楼层
想不到定套件还有这样的优待阿 哈哈哈哈
专用调试工具 如果提供受限制的免费版本和功能强大的收费版本,配上良好的服务的话,这样的经济前景应该也是不错的吧!
如果收费版本配上类似Jlink一样的通信端,防盗版应该也能保证吧~就跟uc/probe可以用jlink来实现通信那样~

出0入0汤圆

发表于 2011-6-27 16:40:31 | 显示全部楼层
路过

出0入9汤圆

发表于 2011-6-27 16:58:49 | 显示全部楼层
mark
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-6-4 19:41

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表