Keil for ARM-MDK的使用

来源:互联网 发布:unity3d 设置技能cd 编辑:程序博客网 时间:2024/06/10 04:35

概念:

  1. μVision:是Keil的文本编辑界面。目前的μVision支持代码自动补全。如果想使用外部的文本编辑器,可以在Tools-Customize Tools Menu设置。
  2. MDK:就是Keil for ARM。全称Microcontroller Development Kit。具体可以参考这里的说明。

调试方法:

  1. 调试方法分两种:软件仿真和硬件调试,即Simulator和Debugger。使用的DLL设置一般如下:SARMCM3.DLL -REMAP和DARMSTM.DLL -pSTM32F103C8。
  2. Logic Analyzer(逻辑分析仪):软仿中可以看全局变量和GPIO(原因?)的信号变化。
    • 理论上硬仿中也可以用逻辑分析仪来观察信号的变化,只要使用ULink2或者JLink的trace功能即可。但是实际并不可行。不知道是用的国产烧录器?难道是用的国产山寨ULink2和JLINKv9?使用STM32F407-Discovery板载的ST-Link倒是可以实现,并且数据刷新时间为0.5s一次(比较慢)。
  3. Call Stack+Locals(调用栈与局部变量):程序暂停运行之后可以观察当前函数的调用关系,以及对应内部局部变量的值(跳出被调用函数以后,这些局部变量会消失)。
  4. Watch(监视):任何时刻都可以查看任何变量和任何寄存器。但是对于局部变量,当其作用完成并消失后,会显示”cannot evaluate”。对比Call Stack+Locates,Watch可以查看寄存器值,比如直接输入TIM1->CCR2就能看到这个寄存器的值。另外,比较实用的一个寄存器是SystemCoreClock,初始化以后直接查到系统主频率。
  5. Memory(内存):查看变量的变化。也可以查看代码区的机器码。即可以查看Flash和RAM区(另外有CONST data什么的,我还不懂)。Memoery功能还不知道具体用途,感觉不是很实用。

    Black - CODE memory area or uninitialized RAM.
    Red - CONST data in Flash or ROM that has been accessed at least once.
    Gold - memory location that has been initialized, but not accessed yet.
    Green - memory location has been accessed at least once.

  6. System Viewer(系统访问器):可以一次性查看各个外设的所有相关寄存器。”View”下面可以打开,”Peripherals”下面也可以打开。后者有外设的分类,但显示得不够前者全。比如:”Peripherals-Timer”里面只有4个Timer,而实际上有14个。反正System Viewer的作用包括:

    • 可以在程序执行过程中观察某些标志位的变化。
    • 暂停程序的执行后可以手动修改某些标志位。
    • 发现哪些寄存器是可写的、哪些是只读的。
  7. Serial(串口):其中有3个一般串口输出窗口,对应3个串口外设,相当于调试模式下的串口助手。只有串口设置正确并启动之后能正常显示字符串。此外,更重要的是——第四个不一般的串口输出——”Debug Viewer”。它是Cortex-M的ITM内部调试模块的输出口,硬件上并不占用GPIO,软件上也不占用CPU,它只在调试时通过SWO(烧录器接口之一)输出信息。这一功能是Trace功能的一部分,另外一部分是可以实时用LA(逻辑分析仪)查看数值变化。但是依赖SWO引脚来传送信号,普通的四线SWD用不了——因为比标准SWD少了SWD线(另外一条是RST,Debug设置为硬件复位时要用)。除了6针SWD,10针、20针接口都可以用。ITM调试的详细示例可以参考这个豆瓣博客

逻辑分析仪

调用栈与局部变量

内存窗口

监视窗口

系统访问器

ITM调试串口输出

0 0