LPC8N04初体验:搭建开发环境+调试器固件升级+调试Demo程序

关键字 :NXPLPC802LPC804
1.安装配置MDK-ARM集成开发环境(IDE)在MDK-ARM官网]下载最新的试用版本MDK-ARM集成开发环境(IDE)
下载完成后双击开始安装,如下图示:


建议使用默认路径即可:


填入所有的空缺,点击“Next”:


顺利安装完成MDK-ARM IDE,可以看下相关的Release Notes:


为了能够在MDK-ARM中调试开发LPC8N04,必须下载LPC800 DFP[2]并导入到MDK-ARM中才可以开始开发。DFP是Device Family Pack的缩写,DFP包括了对应MCU的器件支持、开发用的基本软件包等,该DFP由NXP提供给ARM,以包的形式单独提供下载并可以通过导入到MDK-ARM中来支持对应的MCU。根据开发的目标MCU导入支持包,这会减少IDE的容量尺寸。


下载好DFP后,打开Keil uVision5,点击“package installer”图标打开后即可通过“File->Import”把DFP加载进去:


上述我们就完成了MDK-ARM开发环境的搭建,已经准备好开发、调试的环境了。

2.    安装调试器驱动和升级调试器固件。

本开发板为了方便开发、调试、减少客户的成本,集成了兼容CMSIS-DAP协议的调试器。调试器是需要驱动的,而且调试器本身通常也是一个MCU,NXP通常使用LPC11U35作为调试器MCU。调试器MCU是通过连接到主MCU的专用调试接口实现调试主MCU的,并通过通信接口(比如串口、I2C或USB口)连接到电脑实现和电脑端IDE的通信,这样调试器MCU完成调试功能。本步骤的操做都是针对调试器MCU的配置,但只有配置好了调试器MCU才能更方便的调试主MCU。
一般情况下,调试器MCU的固件升级不会频繁发生,或者用户在已经满足调试需求的情况下,不用升级调试器固件也是可以的。

NXPLPC8N04开发板官方页面可以下载到最新的驱动和固件[2]。解压后可以看到有驱动安装程序和firmware.bin固件。

2.1.安装驱动
Windows 10系统不需要安装驱动,其它系统则需要安装。
双击打开驱动安装程序,如下图示,点击“Next”:


如下图示,勾选信任并安装:


接入开发板,如下图示,提示驱动安装成功:


2.2.升级调试器固件
确保开发板已断电,在P2上接入跳线帽,这会选择调试器进入固件升级模式,如下图示:


 把开发板接入电脑,此时显示一个磁盘,如下图示:


打开磁盘,备份其中的firmware.bin后删除它。再把新固件粘贴进去即可,如下图示:


拔出开发板并确保开发板已断电,把P2的跳线帽去除,即可完成调试器的固件升级步骤。

3.  工程项目结构
在NXPLPC8N04开发板官方页面可以下载到最新的针对MDK-ARM开发环境的BSP和Demo程序包:LPC8N04 Board Support Package Keil and IAR[2],其中包括开发板自带的Demo程序源码。解压后进入keil子目录,双击打开“bsp.uvmpw”工程,该工程是个多工程项目,其中包括其它库工程和Demo工程。如下图示:


在MDK-ARM中打开工程后,显示如下图示:


上图中,lib_chip_8Nxx工程是驱动,该驱动包含了LPC8N04的所有外设的API接口,它们也是编写程序的基础,其中的API可以直接使用,这极大简化了开发复杂度。重新编译该工程后会生成一个库文件lib_chip_8Nxx.lib,此库文件提供给Demo工程或其它自己的工程使用。lib_board_dp工程是个BSP,重新编译后会生成一个库文件lib_board_8Nxx.lib,此库文件提供给Demo工程或其它自己的工程使用。app_demo工程也是板子自带的程序工程,重新编译后即可获得板子自带程序的固件。

3.1.编译驱动和BSP工程
必须分别重新编译生成lib_chip_8Nxx、lib_board_dp工程后,才能编译生成app_demo工程,因为app_demo使用了上述2个工程的库文件。这2个库文件只需要重新编译生成一次即可,除非有bug需要调试解决。分别右击lib_chip_8Nxx、lib_board_dp工程选择“Set as Active Project”,然后选择重新生成(“Rebuild”)即可完成库文件的生成,如下图示:


3.2.编译app_demo工程
右击app_demo工程选择“Set as Active Project”,然后选择重新生成(“Rebuild”)即可完成app_demo工程的生成,如下图示:


4.    调试Demo程序
4.1.跳线选择板载调试器功能
调试app_demo工程需要使用开发板板载的调试器,此时必须使得P7和P8的跳线选择到SWD上。随后当把开发板接入电脑后,即可看到调试器的D2灯亮起,表示调试器已经开始工作了,如下图示:


也可以不使用板载调试器而选择其它调试器,不使用板载调试器时必须把跳线帽接入P1来选择使用外部调试器功能。此时需要把诸如jlink等其它调试器接入J1接口,具体接口信息需要参考手册《User Manual for LPC8N04 Development Board》[4]。本文使用板载调试器调试程序,所以必须确保P1的跳线帽被移除,表示使用板载调试器功能。

4.2.MDK-ARM中选择目标调试器
MDK-ARM无法自动识别调试器,所以需要手动选择一个调试器,只需要选择一次即可。
打开app_demo工程的选项后,选择“Debug”选项卡,选择使用右侧的调试器“CMSIS-DAP Debugger”,然后点击“Settings”,如下图示:


在打开的新窗口中,选择“LPC11U3x CMSIS-DAP Vxxx”,然后点击“OK”按钮并在选项窗口中也点击“OK”按钮,如下图示:


由于调试器MCU只使用了SWDIO和SWCLK而没有使用SWO脚,所以无法使用Trace调试功能,但此SWD调试接口已经可以满足基本的调试功能了。如下图示Trace功能无法使能:


LPC8N04也只有SWDIO和SWCLK而没有SWO,所以即使使用其它功能更丰富的调试器也只能使用SWD调试接口的功能。SWD调试接口已经可以满足基本的调试功能了。

4.3.加入断点开始调试程序
需要选择app_demo为当前工程,重更编译(rebuild)工程后,在main.c中的第976行加入一个断电,点击“调试”按钮开始调试程序,如下图示:


调试程序窗口如下图示,点击“run”即可开始全速运行代码,必要的时候可以暂停程序的执行,并查看当前寄存器、内存、变量的值以及可以看到汇编代码,查看、分析具体指令执行的细节部分。


由于LPC8N04没有串口外设,所以很多人通过串口输出信息的低效率的所谓的“调试”方式被彻底终结了。其实通过串口输出信息的方式不属于调试范畴(最多算是log日志输出的功能),因为如果串口外设不工作时,该如何调试串口本身或者调试其它部分的程序呢?!通过使用调试器调试程序代码才是真正的调试,调试器输出的值都是高效、实时、准确、可具体定位的,而且有利于分析前后代码逻辑和潜在问题,但使用串口输出log日志的方式无法满足此类功能且效率低下。

5.    总结
本文介绍了如何搭建MDK-ARM开发环境并完成DFP的添加。给出了如何安全的安装调试器驱动,并在必要的时候更新调试器固件。完成这些必须的步骤是为开发、调试打下基础。
还分析了工程项目,包括2个库项目和1个用户程序项目,该用户程序项目也是开发板默认的展示项目工程。驱动项目包含了LPC8N04的所有外设接口API,这极大方便和加速了产品的验证开发,但由于NXP没有提供相关的手册说明,只能自己先熟悉了解这些API。

最后列出了调试程序的简单方法,这种简单有效的调试方法是基本调试的开始,后续会逐渐介绍更多的调试功能和方法。不应该采用串口的方式输出调试信息,只有在非常必要的时候才选择使用串口输出日志。

6.    参考资料
[1].  MDK-ARMIDE下载
[2].  下载LPC800DFP
[3].  NXPLPC8N04
[4].  UserManual for LPC8N04 Development Board
[5].  NXP中文社区

★博文内容参考自 网站,与平台无关,如有违法或侵权,请与网站管理员联系。

★文明上网,请理性发言。内容一周内被举报5次,发文人进小黑屋喔~

评论