灵动微MM32F0010A1N调试

  • Post author:
  • Post category:其他


1:MM32-LINK连接芯片;

刚开始找到仿真器却找不到芯片,采用SWD连接(PA14-SWCLK,PA13-SWDIO)后续解决方法为:采用仿真器供电,连接电池供电则会不正常(如有解决方法可以交流),把仿真器的1脚与19脚相连(图1),KEIL设置(图二);

![(https://img-blog.csdnimg.cn/20210227110505508.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzc1MDgyMA==,size_16,color_FFFFFF,t_70)

KEIL设置

2:静态电流降不下来,检查中断分组设置,外设状态,目前最低可降低符合规格书;

在这里插入图片描述

3:PA3P、A14配置为普通IO,需添加如下代码(复用为其他空余的功能),否则会初始复用为烧录口;

在这里插入图片描述

4:APP中断向量表重定义,实测可行;前4页有都保护,APP地址为0x8001000;

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

5:使用J_Link调试与下载程序,

在这里插入图片描述

找到J_Link软件地址下的JLinkDevices.xml,添加如下的代码,可使用jlink调试与下载代码;

在这里插入图片描述

  <!--          -->
  <!-- MindMotion  -->
  <!--          -->
  <Device>
    <ChipInfo Vendor="MindMotion" Name="MM32F0010" WorkRAMAddr="0x20000000" WorkRAMSize="0x00000800" Core="JLINK_CORE_CORTEX_M0" Aliases="MM32F0010A1T; MM32F0010A1N"/>
    <FlashBankInfo Name="Flash Block" BaseAddr="0x8000000" MaxSize="0x4000" Loader="D:\Software\MDK\MindMotion\MM32F0010_DFP\1.0.4\Flash\MM32F0010_16.FLM" LoaderType="FLASH_ALGO_TYPE_OPEN" AlwaysPresent="1"/>
  </Device>

和必须成对出现,而且没有属性表。每个(系列)芯片都对应着这么一对。

ChipInfo是描述芯片的信息,必须在 和内。

参数说明

Vendor芯片厂家的名字,比如这里的”HDSC”就是华大半导体

Name芯片的具体型号,我用的就是HC32L190FCUA

Core芯片的内核,这个必须是JLink支持的内核之一,具体的名字可以在文档里的12.5.3.1 Attribute values – Core章节找到。本文的这颗芯片是M0+的内核,但是列表里没有M0+,所以这里选M0!

WorkRAMAddr芯片RAM的起始地址,这个可以在用户手册里找到,也可以打开SDK里的官方例程,然后在工程配置里找到

WorkRAMSize芯片RAM的大小,同样可以在用户手册里找到,也可以打开SDK里的官方例程,然后在工程配置里找到

Aliases同系列的相同RAM和FLASH的型号,比如华大这里全是同样的配置,我就都加进去了

JLinkScriptFile高级用法,有些芯片操作比较特殊,可以通过脚本去实现,这里我用不上

FlashBankInfo描述芯片的Flash信息,有多块flash的话,每块对应一个FlashBankInfo。

参数说明

Nameflash的名字,名字可以随便起

BaseAddrflash的起始地址,可以在用户手册里找到

MaxSizeflash的大小,可以在用户手册里找到

Loader烧录的算法,segger官方的是.elf格式,.flm是ARM的格式,keil里就用这个。这个路径可以是绝对地址也可以是相对地址,相对地址的话是从JLinkDevices.xml所在的路径为起始地址。本文使用的算法文件是在华大的HDSC.HC32L19X.1.0.0.pack安装后从C:\Keil_v5\ARM\Flash拷贝过来的,没有的文件夹就自己新建

LoaderType必须是12.5.4.1 Attribute values – LoaderType中列出的类型之一,目前只有FLASH_ALGO_TYPE_OPEN一个类型,而*.flm是支持这个类型的

AlwaysPresent指示这个块flash是不是一直存在,本文是内部flash,当然一直存在



版权声明:本文为weixin_43750820原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。