1:MM32-LINK连接芯片;
刚开始找到仿真器却找不到芯片,采用SWD连接(PA14-SWCLK,PA13-SWDIO)后续解决方法为:采用仿真器供电,连接电池供电则会不正常(如有解决方法可以交流),把仿真器的1脚与19脚相连(图1),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,当然一直存在