超低功耗微控制器模块为工程师带来新的机遇——第2部分:配置Eclipse

作者:Simon Bramble资深工程师

摘要

本文继续介绍超低功耗、功能丰富的微控制器模块,并解释如何使用主流的免费工具对其进行编程和调试。与许多其他高端微控制器模块不同,该模块采用DIP封装,因此专业工程师和业余爱好者都能使用它轻松设计原型。第1部分说明了如何在Eclipse中创建项目,第2部分将说明如何配置Eclipse以配合PICO使用。

重新配置Eclipse以配合PICO硬件使用

第1部分中创建的项目是围绕MAX32625EVKIT硬件而设计的,该硬件与PICO的硬件不同,因此需要更改评估套件的硬件描述文件以适配PICO的硬件。原始的boards.c文件存储在以下目录中:

C:\Maxim\Firmware\MAX32625\Libraries\Boards\EvKit_V1\Source

PICO的新boards.c文件以zip文件的格式存储,读者可以点击本文末尾的链接下载,需要将zip文件中的整个Boards目录复制到保存主程序的目录中,如图1所示。该目录描述了PICO PCB所包含的组件。

1.定位Boards目录。

PICO包含一个引导加载程序,以使程序能够正常运行。引导加载程序还允许使用拖放的方式加载二进制文件。如果使用默认设置将程序加载到MAX32625中,则Eclipse会覆盖此引导加载程序。链接器文件max32625.ld会将所有程序整合成一个二进制文件,以便加载到主机微控制器中。它还会确定将程序加载到内存的哪个位置,因为此位置需要修改,以免覆盖引导加载程序。修改后的链接器文件包含在下载的zip文件中。

将链接器文件复制到project目录,如图1所示。存储在project目录中的Makefile会向编译器发出指示,以便其找到链接器文件和Boards目录。因此需对Makefile进行编辑,以确保指向修改后的链接器文件和Boards目录的最新位置。将zip文件中的新Makefile复制到project目录中(如图1所示)以覆盖原始文件。

在新的Boards目录中,可以找到修改后的board.c文件(位于目录EvKit_V1\Source),它描述了PICO上的微控制器与LED和按钮的连接关系。通过比较图2中的代码与图3中的PICO原理图,可以很容易看出其结构。

2.LED和按钮配置。

3.LED和按钮原理图。

boards.c文件也经过了大量修改,以使PICO能够将数据打印到终端程序(如Tera Term),这对于调试过程非常有用。如果使用打印功能,请配置终端程序以115200的波特率进行通信,如图4所示。

4.Tera Term设置。

引导加载程序可以使一些外设处于部分配置状态,board.c中的其他代码可在初始化期间将其重置,如图5所示。

5.引导加载程序初始化。

最后,PICO使用与评估套件不同的电源管理IC。但是,PICO的电源管理IC不需要编程,它以默认设置运行,因此新的board.c文件中已删除了相关配置的代码行。

构建最终项目

zip文件包含一个示例程序,即Template文件夹中的main.c,它能检测PICO上的按钮何时被按下,然后让RGB LED闪烁,并通过SPI端口发送2字节的数据,再通过UART发送1字节的数据,最后在终端程序上打印Hello from the PICO。将此程序复制到project目录中以覆盖原程序。如代码注释所示,main.c代码从MAX32625项目目录中的许多示例程序中复制而来。这将为用户创建最终应用程序代码奠定了基础。

单击锤子符号构建项目,如图6所示。如果Eclipse中打开了多个项目,将鼠标悬停在锤子符号上,用户就能知道即将构建哪个项目。

6.构建项目。

项目的build目录中现在应该出现了如图7所示的二进制文件。

7.二进制文件的位置。

此时,最好将build目录添加到Windows资源管理器的快速访问栏中,使得PICO的编程过程更加非常方便。右键单击build目录,选择“固定到快速访问”(Pin to Quick access),目录将出现在Windows资源管理器左侧的“快速访问”(Quick access)栏中。

加载二进制文件

需要注意的是,编程线缆仅用于调试目标PICO,以及在引导加载程序被覆盖时对该器件重新编程。加载二进制文件不需要使用编程线缆,只需拖放即可。

按住PICO上的按钮,将其插入USB端口。PICO应该作为新驱动器出现,名称为MAINTENANCE,如图8所示。

8.MAINTENANCE驱动器。

二进制文件拖放到MAINTENANCE驱动器上,从而加载文件。文件加载到PICO后,MAINTENANCE驱动器就会消失,PICO将重新启动,并且程序将开始运行。

在代码开发的早期阶段,程序不太可能按预期运行,甚至根本无法运行。如果需要调试目标PICO上的软件(包括单步调试或在运行至断点),则需要使用接口软件对第二个编程器PICO进行编程,以使其能够在PC与目标PICO之间建立连接。该编程器PICO向目标PICO发出指令以启动和停止目标PICO的执行,从而让Eclipse能够对寄存器进行检查。

要配置第二个编程器PICO,请在zip文件中找到DAPLink Interface Binary目录,并定位其中的二进制文件。断开第二个编程器PICO与USB端口的连接,然后按住编程器PICO上的按钮,同时将其重新插入USB端口。如前所述,此时应该出现一个名为MAINTENANCE的驱动器。将DAPLink Interface Binary目录下的二进制文件(max32625_max32625pico_if_crc.bin)拖到MAINTENANCE驱动器。这将使用接口软件配置编程器PICO,并允许使用Eclipse单步执行目标代码。完成上述操作后,MAINTENANCE驱动器应该消失,编程器PICO将重新启动,并会出现一个DAPLINK驱动器。在此阶段,建议将编程线缆连接到编程器PICO,以将其与目标PICO区分开来。

如何调试目标代码

将编程线缆连接到编程器PICO上的10路接插件,将另一端的pogo连接器按到PICO背面的焊盘上,确保将对准销插入PICO上的孔中,如图9所示。

9.将编程器连接至目标。

将鼠标悬停在Eclipse中的debug图标上(如图10所示),确认当前调试的项目是否正确。界面上会显示当前项目的名称。

10.构建项目。

单击debug图标,同时保持pogo连接器连接到PICO。程序将进行编译,然后在代码开始处暂停。按下键盘上的F8将启动调试过程。

用户只需双击Eclipse中代码的行号,就能插入断点。

现在,用户可以调试代码。要检查寄存器,请在Eclipse菜单中选择

Window > Show View > Other…

然后展开Debug文件夹,选择所需的视图。

一旦确定代码能够正常运行,就可以保存该项目,将其作为未来项目的模板。

如何恢复损坏的PICO

PICO带有预安装的引导加载程序,支持拖放编程。插入PICO时,如果MAINTENANCEDAPLINK驱动器都没有出现,那么很可能是引导加载程序已被覆盖。通过以下步骤可以恢复引导加载程序。

undefined 插入编程器PICO,查看DAPLINK驱动器是否出现。

undefined 插入损坏的PICO。

undefined 将编程线缆的弹簧连接器抵住损坏的PICO背面的焊盘,确保将对准销插入PICO上的孔中。

undefined 导航到Bootloader Binary目录,将引导加载程序文件(max32625pico_bl.bin)拖到DAPLINK驱动器。需要注意的是,该二进制文件被复制到了编程器PICO创建的驱动器,而不是目标PICO创建的驱动器。编程器PICO用作管道,通过编程线缆将二进制文件传送到目标PICO。