SYD8801是一款低功耗高性能蓝牙低功耗SOC,集成了高性能2.4GHz射频收发机、32位ARM Cortex-M0处理器、128kB Flash存储器、以及丰富的数字接口。SYD8801片上集成了Balun无需阻抗匹配网络、高效率DCDC降压转换器,适合用于可穿戴、物联网设备等。具体可咨询:http://www.sydtek.com/

µVISION DEBUGGER: SOURCE LEVEL DEBUGGING OF LIBRARY CODE


Information in this article applies to:

  • MDK-ARM all versions
  • Keil C51 Compiler All Versions
  • Keil C251 Compiler All Versions
  • Keil C166 Compiler All Versions

QUESTION

I have created a library, which will be used by other projects. Isit possible to have source-level debugging into this library code,while working with it in other projects?

ANSWER

Yes. This is possible, however, the library source code must beavailable.

Taking the CMSIS RTX v4.x library file 'RTX_CM4.lib' as anexample, when you include this 'RTX_CM4.lib' in your project and wantto have source-level debugging into the CMSIS RTX source code in thedebug session of µVision, please follow these steps:

  1. When building the library, in this case the 'RTX_CM4.lib' file, enable 'Debug information' under Options for Target - Output. In order to have more debug info and be able to set breakpoints, this library should be built with the optimization level-O0. The µVision project to rebuild the 'RTX_CM4.lib' file can be found under C:\Keil\ARM\PACK\ARM\CMSIS\4.5.0\CMSIS\RTOS\RTX\SRC\ARM\ , after you installed the CMSIS Pack.
  2. When using this library into your own project, in this case the 'RTX_CM4.lib' file, after each debug session is started, before running the application, use theSET SRC debug command to tell the µVision Debugger where the source code of 'RTX_CM4.lib' can be found. e.g.
    SET SRC = C:\Keil\ARM\PACK\ARM\CMSIS\4.5.0\CMSIS\RTOS\RTX\SRC
    

    The SET SRC debug command shown above can be alsowritten into a debug.ini file and set it underOptions for Target- Debug - Initialization File, so that it will be automaticallyloaded every time when you start a debug session.

MORE INFORMATION

  • Refer to SET in the µVision User's Guide.

SEE ALSO

  • µVision DEBUGGER: PROGRAMS BUILT WITH MAKE UTILITIES
  • µVision DEBUGGER: SOURCE LEVEL DEBUGGING WITH GNU ARM

FORUM THREADS

The following Discussion Forum threads mayprovide information related to this topic.

  • ARM uVision 3: Debugging files using relative paths

Last Reviewed: Friday, February 24, 2017

调试模式快捷键

Ctrl+F7

编译当前文件

仿真调试操作

F5

仿真执行程序,直到遇到一个断点

Ctrl+F5

开始/停止调试模式

F11

单步执行,遇到子程序则进入

Ctrl+F11

执行到当前函数的结束

F10

单步执行,跳过子程序

Esc

停止程序仿真执行

debug init脚本

 Pre-Download Script into脚本(utilities下init file)

uVision/Keil如何将数据导出到文件

本文摘录于:https://blog.csdn.net/wuhenyouyuyouyu/article/details/72457360这里只是做学习备份之用,绝无抄袭之意,如果作者觉得有所不妥请联系本人,一定妥当处理!同时这里望阅读者查看原文章!

1前言

在Keil中,有的时候需要将调试过程中的一些存储区数据(数组或结构体等)导出到文件,以便于对数据进行分析,可是找遍了菜单,也没有找到能够直接导出的功能,如何做呢?

2应用举例

笔者在调试一款产品时,定义了一个256个元素的数组RpmFeedback,每个元素是一个无符号的32位数据。每个元素实际上是对同一个外部IO信号上升沿时刻的采样数据,这些数据用于分析上升沿产生的频率是否一致,其偏差有多大。

在调试过程中,可以将此数组添加到Watch窗口中观察其数据,如下图:

但是由于Watch窗口只能够显示数据,大量的数据分析在程序未被完善前是无法直接使用的,如果能够将数据存储下来,使用Excel等进行简单地分析,以检查数据是否符合要求的话就太完美了。

可以,没有工具支持的话,如果用从Watch窗口中逐一将每个元素手动抄到记事本或Excel中的办法,这种方法一是太麻烦,二是也可能出现错误,尤其是数据量很大的情况下出错概率也会很大。

怎么办呢?

3解决办法

经过查询资料,发现使用命令窗口可以实现自动的数据导出功能。

方法如下:

3.1 打开命令窗口

打开Command窗口,如果没有,请在系统菜单“View”下,找到“Command Window”并点击,会显示出如下窗口。

3.2 输入存盘命令

在窗口的下方有一个输入框,在其中输入以下语句:

SAVE D:\C.TXT  0x20000130,0x2000230

后回车执行。

这里我输入的命令如下:SAVE ..\memory.TXT  0x20022250,0x20023250

命令的含义:

其中SAVE是存盘命令,用于将指定的存储区的数据存储到电脑文件中。

D:\C.TXT是文件路径和文件名。可以根据具体要求进行修改。

0x20000130是待存储的起始地址

0x20000230 是待存储的终止地址

3.3  文件验证

打开D:盘,发现多了一个名为C.TXT的文件。

3.4  文件内容

打开C.TXT,发现其数据如下:

红色字体是与Watch窗口中其第一个元素相符合的地址。

这个文件结构和HEX文件结构是类似的,可以根据相关的标准进行解释。

从数据上看,文件的第一行、最后两行、每行前的冒号、每行的前4字节如10013000,以及每行的最后一个字节如04,这是与数据无关的。

:020000042000DA

:100130007325050016070A00B24E0500F1FD040004

:10014000CD5F040084AD06008A5A1F00ADCA0700C7

:10015000DDA5050057E50400B7490600AA14110003

:100160008C8B0B00EDCF0F00426408004588040023

:100170006D31570021780800F7780400F45A170011

:10018000B3F70400C86F2F00108917007C710700B7

:1001900068310500135F070000A60E00AD1E0600C3

:1001A000B3F7040031690500932C9B0071A9050089

:1001B00025310400B77C0B0017400400F5B80B0094

:1001C000990C040058181500262F050004B60800E5

:1001D0002BDF2800182C0E00D0A81B00345504007B

:1001E000A7A7050085F10400472D1100AC0A0D00FA

:1001F000F8490C00BF500800D4E30B00892B1C0009

:10020000C71D0A002B461100B99F0D006059180048

:10021000C3D30600EB9D040062120A00B2BDAC001D

:10022000489405019902070072A55A00DBF13900D4

:010230008F3E

:00000001FF

3.5 文件处理

简单地将无效数据去除,包括第一行和最后两行,每行的冒号,还有每行的前4个字节如10013000,以及每行的最后一个字节如04,再把剩余数据每4字节添加一个空格,排版后数据如下,这样每个元素的关系就出来了。

剩下的只需要调整一下字节顺序,再转换为十进制,就可以在Excel中进行简单分析了。

73250500 16070A00 B24E0500 F1FD0400

CD5F0400 84AD0600 8A5A1F00 ADCA0700

DDA50500 57E50400 B7490600 AA141100

8C8B0B00 EDCF0F00 42640800 45880400

6D315700 21780800 F7780400 F45A1700

B3F70400 C86F2F00 10891700 7C710700

68310500 135F0700 00A60E00 AD1E0600

B3F70400 31690500 932C9B00 71A90500

25310400 B77C0B00 17400400 F5B80B00

990C0400 58181500 262F0500 04B60800

2BDF2800 182C0E00 D0A81B00 34550400

A7A70500 85F10400 472D1100 AC0A0D00

F8490C00 BF500800 D4E30B00 892B1C00

C71D0A00 2B461100 B99F0D00 60591800

C3D30600 EB9D0400 62120A00 B2BDAC00

48940501 99020700 72A55A00 DBF13900

4版本要求

在查到的资料中是以uVision3为基础讲的,笔者使用的是uVision4,也可以正常使用

5参考文件

本方法参见Keil官网资料

保存内存数据到文件:http://www.keil.com/support/docs/3262.htm

SAVE命令解释:http://www.keil.com/support/man/docs/uv3/uv3_cm_save.htm

KEIL 调试【调试lib库】【调试模式快捷键】【debug init脚本】【 Pre-Download Script into脚本(utilities下init file)】【将数据导出到文件】相关推荐

  1. Keil C 里面Lib库文件的生成与调用

    附件里是制作方法介绍,还有LCD1602的例子,有视频教程,呵呵,自己做的. Keil C里面 lib文件生成方法 包含关系 LCD1602.C里面包含LCD1602.H LCD1602.H的文件格式 ...

  2. Keil MDK生成LIB库以及使用LIB库

    问题引出:为什么要做成lib库? 1.不想将自己写的源代码公开,但是同时库文件又需要让别人能够正常调用,那封装成lib的格式就是一个方法. 2.编译某些工程文件时非常耗时,像ST官方的库时,由于文件众 ...

  3. keil中创建lib库,使用lib库

    在keil5 MDK 中,为一段代码封装LIB库 首先,创建一个工程,该工程选的芯片型号和原先的工程保持一致. 然后,导入源码,导入的源码不需要添加main.c 或者main()函数入口 lib库的名 ...

  4. 对未标记为可安全执行的脚本_Script Debugger for Mac(脚本调试软件)

    你是否需要一款可以轻松编译AppleScript的工具吗?来试试Script Debugger for Mac吧!Script Debugger Mac版是一款运行在mac平台的调试软件.Script ...

  5. Keil(MDK-ARM)的调试步骤

    Keil(MDK-ARM)的调试步骤 1.编译+调试 在线调试分类:软件在线调试和硬件在线调试:由于现在硬件成本⽐较便宜,⼀般我们都使⽤硬件在线调试,也就是软件直接下载到芯⽚. 打开软件⼯程 -> ...

  6. 手把手教你调试Linux C++ 代码(一步到位包含静态库和动态库调试)

    手把手教你调试Linux C++ 代码 软件调试本身就是一项相对复杂的活动,他不仅要求调试者有着清晰的思路,而且对调试者本身的技能也有很高的要求.Windows下Visual Studio为我们做了很 ...

  7. Firefox火狐浏览器web开发调试开启强制刷新缓存模式

    Firefox火狐浏览器web开发调试开启强制刷新缓存模式 最近做项目的时候,在火狐浏览器发现缓存难清理,用Ctrl+F5 Ctrl+R 等在谷歌和IE浏览器的快捷键没用,搜索了一下,发现火狐清理缓存 ...

  8. 如何使用keil进行软件的程序调试

    如何使用keil进行软件的程序调试 分步阅读 我们在编写单片机的程序的时候经常会用到keil软件,但有时我们的程序运行不出正确不的结果,这时候就需要我们使用keil自带的调试功能一步一步的运行调试程序 ...

  9. Eclipse 动态库调试(联合调试)

    动态库调试: 如果一个工程依赖另一个工程的dll,那么调试时将看不到另外一个工程的源代码,在eclipse可以做到两个工程联合调试.方法是将另外一个也导入到eclipse,重新编译一遍生成dll,注意 ...

最新文章

  1. Warning: Each child in a list should have a unique “key“ prop.
  2. 判断某值是否属于枚举类中的值_编写高质量可维护的代码之优化逻辑判断
  3. bind函数作用、应用场景以及模拟实现
  4. Java反射,从0开始
  5. 打开输入花里胡哨的特殊符号
  6. php更新svn,利用php进行svn更新的php代码及php执行svn更新注意事项
  7. 李洪强iOS开发之FMDB线程安全的用法
  8. html 中的一些知识
  9. Web Developer's Handbook
  10. maven如果正常配置不成功,就按照我的就可以配置成功了
  11. 【拉普拉斯变换】3. 拉普拉斯逆变换
  12. mysql启动6002错误_Oracle ORA-00600 6002错误的解决方法
  13. 机器人也会骑车?日本村田顽童来京秀车技
  14. 把数组排成最小的数(输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。)
  15. [转]优秀程序设计的Kiss原则(keep it simple,stupid)
  16. java root权限_Android应用获取Root权限
  17. Android-传感器开发-方向判断
  18. echarts双饼图
  19. 如何在苹果电脑上装软件
  20. 汶川大地震中的SAP成都研究院

热门文章

  1. 用友U8服务器修改数据库端口,用友U8服务器修改数据库端口
  2. JETSON XAVIER NX 入门教程(一)入手刷机过程
  3. UG NX 12 对象的移动
  4. 爬虫爬取 淘宝联盟,淘宝客阿里妈妈 订单,细节
  5. 智慧树怎么导入教务系统的课_智慧团建系统平台公众号(平台登录入口)
  6. sads以后明天撒谎打算
  7. 深入浅出讲解自动驾驶 - 自动驾驶系统构成
  8. VE高峰论坛(原阪神论坛)
  9. ros插件php,ROS软路由终于可以拨号上网了 - 服务器技术 - PHP技术交流,php blog,ph......
  10. 全新起航:Tizen能否四分移动操作系统的天下