1:MM32-LINK连接芯片; 刚开始找模拟器却找不到芯片,用SWD连接(PA14-SWCLK,PA13-SWDIO)后续的解决方案是:使用模拟器供电,连接电池供电会异常(如果有解决方案可以交流),将模拟器的1脚连接到19脚(图1),KEIL设置(图2); 2.静态电流无法降低,检查中断分组设置和外设状态,目前符合规范的最低可降低; 3:PA3P、A14配置为普通IO,需要添加以下代码(复用为其他空余功能),否则初始复用为烧录口;
4:APP中断向量表重定义,实测可行;保护前四页,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,当然一直存在