NXP

LPCXpresso54114基于MDK的初试

2019-07-12 12:19发布

一、配置MDK支持MCU
1、安装KEIL MDK5.23
2、打开MDK后点击 按钮,打开Pack Installer窗口,在这里可以在线安装相应MCU的支持包。通常每个Pack包括了BSP和DFP两部分,一部分是板级支持包,能够支持MCU正常启动运行;一部分是描述文件包,是对MCU的描述定义。
3、在Device选显卡下找到LPC54000,并点击Install,几分钟后Keil对MCU的支持就做好了。(如果没有找到相应的MCU型号,可以在窗体菜单中选择Pack->Check for Updatas,软件会自动检测并更新支持的芯片板卡列表)
4、在Board选项卡下搜素“LPC”并找到LPCXpresso54114,在窗体右侧的Example选项卡下有4个条目,点击copy后可以将实例代码下载到本地。 二、安装板子驱动
1、NXP官网下载LPCScrypt并安装,会将板子所需的驱动安装到Windows下
2、将JP5的跳线帽安上,并用mini USB通过J7口接到电脑,此时在设备管理器上查看只有一个LPC设备
3、在开始菜单中找到LPCScrypt->Program LPC-Link2 with CMSIS-DAP执行
4、完成后移除JP5跳线帽并将板子重新上电 三、调试器配置
1、打开第一步中copy的Blinky工程,Target box中暂时选用 LPC54114 Flash
2、选择 Project/Manage/Project Items… 或按
3、Project Targets区域点击 ,新建一个 LPC-Link2 CMSIS-DAP的Target,选择OK关闭窗口
4、选择LPC-Link2 CMSIS-DAP并点击 或ALT-F7,选择Debug选项卡,选择Select CMSIS-DAP Debugger 四、调试器测试
1、板子与电脑通过J7口连接好,并且JP5跳线帽移除,接着上一步中在Debug选项卡中点击Setting
2、确认Port复选框处是SW选项,如果有下图所示设备,说明调试器配置正确
3、如果使用的是PLC-Link2,要将 Verify Code Download取消勾选
4、关闭窗口并Save All 五、运行Blinky示例
1、基本操作
1) Target处选择上面步骤中配置好的LPC-Link2 CMSIS-DAP
2) 点击 重新编译工程,编译成功后点击 进入Debug模式
3) 点击 后程序运行并且红灯闪烁,点击 后程序停止运行
2、硬件断点
1) Debug模式中,代码左侧有灰 {MOD}阴影的行表示该行有汇编表示,并且可以加入断点。
2) M3、M4、M7有六个硬件断点,M0+有两个硬件断点
3) 加入断点后程序将在执行到断点处停止,黄 {MOD}箭头所处行是下一条将要执行的指令,蓝 {MOD}箭头所处行是一个标识符,用于对比源码和汇编。
4) 选择Debug/Breakpoints或者Ctrl-B进入到断点管理窗口
3、 Stack + Locals Window
1) 停止程序后,点击 Call Stack + Locals选项卡,可以查看生命周期内的变量
2) 栈中的函数会被列出来,普通函数只有它们在栈里才会被列出来,但是在使用RTX时,多线程的其他没有执行的线程也会列出,正在执行的线程会高亮。
4、Watch 和 Memory 窗口
1) 可以将全局变量添加到Watch窗口中,窗口会实时更新被观察的变量的状态。
2) Watch和Memory窗口中均可以实时修改变量的值,以控制程序的进程
3) 可以将全局变量添加到Memory窗口中,窗口会实时更新被观察变量的内存变化。
5、System Viewer (SV)
1) 选择Peripherals/System Viewer -> GPIO
2) 这里可以查看随着灯的闪烁,对应GPIO口的数值变化,这个变化在Set中体现
3) 选择Peripherals/Core Peripherals->SysTick Timer,如下图所示
4) 其中RELOAD的值就是重装计时器的初值,可以通过改变这个值来改变灯闪烁的频率
5) 修改RELOAD的值为0x005000后,关闭窗口,可以发现灯的闪烁频率加快
6、Watchpoints: Conditional Breakpoints
1) 将Counter全局变量加入Watch中
2) 按 Ctrl-B进入断点管理器,在Expression处输入“counter == 0x4”,按Define后如下图所示
3) Accsess下选中Read和Write,关闭断点管理器
4) 程序将会在每次Counter等于4的时候停止
7、System and Thread Viewer
1) 打开Debug/OS Support,选择RTX System and Thread Viewer
2) 显示个线程栈的占用情况和耗时等统计信息 六、运行DualCore
1、下载并配置双核工程
1) 示例中包含了两个工程,上面的是Cortex-M4,下面的是Cortex-M0+
2) 将上面的工程(即M4)设置为Active Project,用之前的方法配置Debug,并将Setting中的Verify Code Download去掉勾选
3) 双击MDK图标,再启动一个MDK,并将下面的工程(即M0+)设为Active Project,用之前的方法配置Debug,并将Setting中的Verify Code Download去掉勾选
2、示例测试
1) 选择M4的实例,并单击 图标
2) 在弹出编译选项窗口中按下图来选择
3) 选择Rebuild编译工程,没有error或者warning
4) 点击 图标,将程序下载到板子上,可以看到tri-color led三 {MOD}交替闪烁
5) 此时将mini USB接到J5口,程序仍然执行
3、双核调试
1) 在M4的实例中103行打上断点,程序会在断点处停止运行,则M4传递给M0+的mailbox未能执行完成,所以等保持在一个颜 {MOD};下次F5后又会换成另外一种颜 {MOD}。
2) 去掉断点,继续执行程序
3) 在M0+的实例中28行打上断点,程序会在断点处停止运行,则M0+接收M4的mailbox未能执行完成,所以等保持在一个颜 {MOD};每一次或两次F5后又会换成另外一种颜 {MOD}。
(备注:粗略看代码,暂时认为Mailbox就是一个中断的结构体,两个chip之间通过中断进行通信)
4) 去掉两个实例中的所有断点,并推出Debug模式
4、双核Watch Window
1) 两个实例都退出Debug模式
2) 在M4实例的Blinky.c的第20行定义一个全局变量unsigned int CM4 = 0;
3) 在第102行输入CM4++;全部保存
4) 切换到M0+实例中,询问源文件被修改,是否重新加载,选择是
5) 在M4实例的Blinky.c的第18行定义一个全局变量unsigned int CM0 = 0;
6) 在第58行输入CM0++;全部保存
7) 在M4实例中编译,如果编译通过再进行下面的步骤
8) M4实例进入Debug模式,并将CM4加入Watch Window
9) M0实例进入Debug模式,并将CM0加入Watch Window
10) 发现当停止M4实例时,M0实例也停止,灯停止闪烁;但停止M0实例时,M4仍然正常运行,灯继续闪烁。 七、USB mass storage实例
1、实例运行
1) 用两根mini USB线分别接在J5和J7口。J5口是用USB协议与主机通信,相当把M4的14K片上RAM当做一个U盘接到了电脑上;J7口是用于连接Link2作为调试器。
2) 编译工程MassStorage.uvprojx后,按Debug图标进入Debug模式
3) 运行后电脑根目录下多出一个名为LPC5411xUSB的盘符
4) 进入该盘后打开README.TXT文件,可以看到信息
2、Event Recorder
1) 按 键打开Manage Run Time Environment窗口
2) 展开Compiler然后选择Event Recorder
3) 展开USB出现CORE条目, 将Release修改为Debug
4) 在MassStorage.c源文件中添加#include “EventRecorder.h”
5) 在main中添加
EventRecorderInitialize(EventRecordAll,1);
EventRecorderStart ();
6) 保存后编译
7) 进入调试模式后点击 按钮,并选择Event Recorder
8) 右侧会显示所有时间的信息记录窗口,带有过滤功能, Event Property帮助功能等