作者:防水补漏的一天
链接:https://www.zhihu.com/question/412378725/answer/1388788624
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
NUC1XX系列开发环境的搭建 1 概述 本文主要描述如何建立新唐NUC1XX系列芯片的开发环境,包括编译,下载以及调试环境的建立。 2 硬件环境 以NuTiny-EVB-120为示例硬件平台,调试器为“Nu_Link-Me_001 V1.2”,还有一根USB线。 NuTiny-SDK-NUC120开发板的详细资料目录:\Build\Evaluation Board\NuTiny-SDK-NUC120 PC机的操作系统为WINDOWS XP SP4。 3 Keil MDK-ARM安装 Keil MDK-ARM安装包的评估版可以在网络上下载。正版需要向ARM公司购买License,网络上有一些序列号生成器,也可以使用。本文档使用的是4.13a的版本。(请使用24小时后立即删除哦:))Keil MDK-ARM安装软件目录:\Build\Keil_MDK 3.1 安装Keil uVision4 双击MDK413a.exe,进入安装界面。 安装Project example,可以选择不安装。安装完uVision4后,安装程序会自动进入ULINK驱动的安装界面。 3.2 安装ULINK驱动(可选) Keil ULINK 仿真器是一款由Keil公司开发推出的多功能ARM调试工具,可以通过JTAG或CODS接口连接到目标系统仿真或下载程序,目前已经成为国内主流的ARM开发工具。 可以选择不安装,也就是将下图的两个复选框都取消。 安装完毕后,在桌面上生成了“Keil uVision4”的快捷图标。 3.3 安装序列号 点击桌面的“Keil uVision4”的快捷图标进入主界面。点击“File”->“License Management”菜单。复制右边的Computer ID,这是对应本台电脑的ID,需要输入到keillic.exe中生成序列号。没有输入序列号之前,该软件是evaluation版本。解压keil_crash.zip为keillic.exe文件,点击该exe文件。在窗口的CID编辑框内粘帖刚刚复制的CID,Target编辑框选择“ARM”,点击“Generate”按钮即可生成对应本机的序列号。 将生成的序列号复制,粘帖到刚才打开的Keil license management窗口底部的“New License ID Code”编辑框内,点击“Add LIC”按钮即可。 注册成功后,License Management窗口显示相关的该软件可用信息:expires:Jan, 20204 安装Nu-Link4.1 Nu-Link驱动安装 Keil的µVision开发工具主要是用来管理工程,编写、编译、调试程序以及下载程序到目标板上的,而调试或下载程序到目标板上则需要调试驱动程序的支持,如ULink ARM Debugger就是这样的调试驱动程序;Nuvoton也为µVision提供了这样的调试驱动程序:Nu-Link,它主要用来辅助µVision调试Cortex-M0系列芯片的,尤其是Nuvoton的NUC1XX系列的芯片。同时Nu-Link还可以进行Flash的编程。 在µVision的工程配置选项里选择了Nu-Link调试驱动程序后,就可以进行程序的调试了,比如开始/停止调试会话,设置/清除断点,读写寄存器、内存,单步执行等等;另外还可以为特定的芯片选择Flash编程算法,该算法程序可以对芯片的Flash空间进行快速地擦除、改写和验证。 相关具体说明可参考帮助文档:\Build\Help_doc\NuMicro Cortex-M0 Keil 调试器驱动用户手册 1.03.pdf 安装文件目录:\Build\Nu-Link Driver\NuMicro Keil uVision IDE driver (Build 4125) V1.03,点击exe进行安装。 首先安装程序会安装Nu-Link驱动。 可全部选Next按钮,直到安装成功 4.2 关联Nu-Link到Keil 这个安装步骤是将Nu-Link驱动和Keil uVision开发环境联系起来,这时需要注意,如果你机器上安装过其他Keil版本,那么就需要选择相关的Keil目录了。 这个窗口就是选择需要安装的Keil目录了,请选择你所需要使用Nu-Link的Keil版本安装目录。 安装成功后,在相关的Keil uVision4的安装目录下将多出如下目录和文件: .\ARM\BIN\Nu_Link.dll: NuMicro Cortex-M0 Keil µVision Driver的DLL文件 .\ARM\BIN\Nu_Link: 包含COPYRIGHT, License和寄存器详细信息,semihosting示例程序等 .\ARM\Flash: 包含Flash编程算法 .\UV4\Nuvoton_NuMicro_Cortex_M0_DateBase.cdb : NuMicro Cortex-M0 MCU数据库 安装完Nu-Link Driver后,从开始菜单->所有程序,可以看到相关的帮助文档。 5 NUC1XX BSP安装 新唐提供了NUX1XX的板级支持包程序(BSP,Board Support Package),有利于客户在该驱动程序的基础上进行应用程序的快速开发,而不用从寄存器层面重新开发驱动程序。 BSP库文件安装目录:\Build\BSP Library\ NUC100SeriesBSP_CMSIS_v1.02.002.exe 点击exe后系统将相关BSP文件安装到相应的目录,并在Keil MDK中进行了相应的注册关联以及拷贝相关的文件。例如以下两个系统文件: l \Keil\ARM\Startup\Nuvoton\NUC1xx\ startup_NUC1xx.s l \Keil\ARM\Startup\Nuvoton\NUC1xx\ system_NUC1xx.c 同时对UV4的“CPU类型库”也做了新唐CPU的更新,在新建UV4工程时可以选择相应的新唐CPU型号。 在BSP的安装目录下,包含了驱动程序和许多的样例程序,可供工程师开发时调用和参考。同时还提供了驱动的相关文档。 前言:新唐N32905U1DN单片机不支持用户将程序烧录到内部FLASH,必须外挂FLASH存储用户程序,可以是SPI FLASH、NAND FLASH、SD卡。用户采用裸机开发的方式可使用官方提供的lib文件和对应的头文件。本工程代码是在内部SDRAM下调试,如需固化程序,可通过USB下载,敬请关注后期博客。
M0516的开发环境的搭建
首先安装编程环境,我用的是MDK5.0。MDK可以跟C51装到同一个目录,这样既可以写C51的程序也可以写M051程序了。
第二步去新唐的官网下载 Nu-Link Driver for Keil RVMDK V1.24.6211.zip 仿真器的驱动,并安装好。
第三部下载M051 SeriesBSP_CMSIS_V2.01.002.zip 和 M051 SeriesBSP_DirectRegisterAccess_EN_V1.01.003.zip,这两个是M051的库文件。据说用CMSIS库就像ARM M3的编程方式差不多(我没用过M3),DirectRegisterAccess库是直接操作寄存器跟51单片机的编程方式差不多。问了问高手,他们建议用CMSIS,因为更简单方便。我两个都装上了。这两个文件直接解压C盘即可,路径要记住,要在mdk里面填写。
打开MDK,新建一个项目,取名TEST,然后出现下图,点OK。
出现选择CPU对话框,找到M0516LBN,点OK.
然后下面对话框点yes。
然后就进入MDK的主界面了。再新建一个空文档,并保存,取名为main.c
在Source Group 1上点右键选择Add Existing Files to Group ,把main.c加进来。
点击工具栏上的
这个图标。做如下设置。
下图的include paths里面写上刚才解压的 M051 SeriesBSP_CMSIS_V2.01.002.zip的路径。我写的是:
C:\Keil\M051SeriesBSP_CMSIS_v2.01.002\M051SeriesBSP_CMSIS_v2.01.002\LibM051Series\CMSIS\CM0\DeviceSupport\Nuvoton\M051Series;C:\Keil\M051SeriesBSP_CMSIS_v2.01.002\M051SeriesBSP_CMSIS_v2.01.002\LibM051Series\StdDriver\inc
下图在scatter file里写:--map --first='startup_M051Series.o(RESET)' --datacompressor=off --info=inline --entry Reset_Handler
选择Nuvoton Nu-Link Debugger,然后点Settings按钮。
然后在main.c里输入以下代码
#include <M051Series.h>
void SystemInit(void)
{}
int main(void)
{
//设置P2.0为强推挽输出
_GPIO_SET_PIN_MODE(P2, 0, GPIO_PMD_OUTPUT);
while(1)
{
//让P2.0交替输出高低电平。把LED灯的正极接到P2.0负极接地,LED就会一闪一闪的。
P20 = 1;
SYS_SysTickDelay(500000);
P20 = 0;
SYS_SysTickDelay(500000);
}
}
然后按Ctrl+F5就可以单步调试程序了。如果你没有设置断点的话,这时候LED就会一闪一闪的。
如果不想调试,想直接把程序烧入芯片做如下设置。
然后再点工具栏上的
按钮。
|