keil_rtx调试技巧
超级循环结构的程序调试一般依赖于断点,单步,查看变量和内存变量(keil中的Memory Window 或者 Watch window);而带微操作系统的程序由于加了这个中间层调试方法可能传统的有些区别,函数内部还可以用原始的方法调试,但任务级的则需要新的调试方法(有时候需要硬件调试器的支持)。
ARM cortex-M 系列的芯片其实有很强的CoreSight片上调试支持,实际上就是一个小的调试硬件,作为ARM的标准,内嵌在ARM的芯片里。在ARM自家的调试器ULINK-pro等的帮助下,可以实现代码覆盖率,代码剖析,代码性能分析等非常强大的调试功能。不同架构的Cortex-M系列的芯片支持不同的CoreSight部件。
作为ARM自家的软件开发工具,Keil自然也在调试方面有很多相应的支持。我们这里简单介绍一下Keil对RTX的支持,操作系统感知调试(OS-aware debugging)。主要有两个功能,一个是 系统和进程观察窗口 (System and Thread Viewer),另外一个是 事件窗口 (Event Viewer)。
System and Thread Viewer:在Debug菜单中的OS Support栏中,点选System and Thread Viewer(Periodic Window Update被点选才能看到实时的更新):它可提供提供了RTX系统的基本设置,例如堆栈大小,时间片设置等和进程的基本信息,例如进程ID,进程优先度,当前进程状态,进程的delay时间,进程等待的事件值和当前的事件值和堆栈的适用程度。这个窗口还会实时更新各个进程的状态。
事件窗口(Event Viewer):这个调试功能需要SWV(Serial Wire Viewer)支持:Target Option
->Debug ->Debugger选择栏右侧的Settings按钮:然后点选里面的Trace(跟踪)栏目,开启Trace,失能Periodic和EXCTRC选项
其余配置参考下图:
清晰记录了具体某一时刻,哪个进程在运行,和进程运行之间的切换。
如果你勾选开启右上角的3个小功能:Task Info, Cursor和 Show Cycles,然后再把鼠标移至任一进程,就会出现进程信息框
其他RTX调试技巧
RTX本身提供了一个功能,能够返回当前相对于os_sys_init()的那一刻时间(以RTX设置的时间单位为单位,初始时间是RTX开始Initialize的时间,也就是os_sys_init()的那一刻):current_time=os_time_get();
最新文章
- Android ListView加载更多
- Async and Await
- Spring AOP在函数接口调用性能分析及其日志处理方面的应用
- APP_Store - 怎样为iOS8应用制作预览视频
- arraylist寻址
- Android(java)学习笔记249:ContentProvider使用之获得系统联系人信息01
- 浏览器的Storage做缓存需要注意的地方
- Day-18: 电子邮件
- bzoj 3033: 太鼓达人 [欧拉回路]
- Swift 产生 uuid
- 利用PIL和Selenium实现页面元素截图
- ElasticSearch(十)Elasticsearch检索出的数据列表按字段匹配的优先顺序及搜索单词拼音一部分搜不到数据
- C#Razor模板引擎简单使用
- Up-to-date cache with EclipseLink and Oracle
- 异步与并行~CancellationTokenSource对线程的作用
- 在Windows7系统上能正常使用的程序,Windows10运行后部分状态不能及时变更
- MySQL删除数据库时的错误(errno: 39)
- ExtJS 4.2 教程-07:Ext.Direct
- idea 换行设置
- POJ - 1743 后缀自动机
热门文章
- C++类定义 常量定义
- Asterisk func group
- MongoDB搭建ReplSet复制集群
- 使用基于Caffe的MobileNet分类踩坑备忘录
- [转载] C++ 类中的类成员变量怎么调用带参数的构造函数来初始化?
- CodeForces 1103E. Radix sum
- 4 pyspark学习---RDD
- Swift 4.0 中的 open,public,internal,fileprivate,private
- 详细分享UICollectionView的自定义布局(瀑布流, 线性, 圆形...)
- Apple Mach-O Linker Warning 警告解决办法