好在MM32F003这颗M0芯片,比起老古董51单片机要强大了许多,自带flash的写、读保护功能。在用户手册flash的章节,可以看到相关的介绍。如果需要在自己的程序里面实现flash区域的读写保护功能,请直接与原厂索要相关资料。反正实现起来比较复杂,我试了两天,放弃了。
另外一个比较简单的方法就是直接使用灵动微清空官方的MM32-LINK工具,直接配置相应的寄存器,就可以实现flash的读写保护。
具体 *** 作步骤可以查看官方文档《qs_MM32-LINK_V1.1》,我这边只简要说明一下流程和注意事项。
运行mm32-link program程序,菜单project->OPTByte...,打开OPTByte configure,如下图:
勾选 Address 前面的复选框即开启写保护。
菜单project->Block Protect...,打开Block Protect configure,如下图:
勾选 Block0 前面的复选框即开启读保护。
点击 program 按钮,见下图:
点击后d出新的窗口,见下图:
点击 program 按钮会完成烧写动作。注意右侧的 OPTByte 和 Protect 复选框,只有选中时才能写入flash读写保护的配置。
我就是在这里翻车的,试了好久,有时可以成功配置标志位,有时又不能成功。后来请原厂的Z工帮忙远程 *** 作,才发现原来有一个细节我没有注意到。在主界面的下侧有几个状态指示灯,当芯片的指示灯为红色时,是无法烧写程序的,说明mm32-link与芯片没有建立连接,需要将目标板重新断电再上电,才能正常烧写。
芯片写入读写保护的配置后,使用keil就无法烧写程序了,只有庆谈通过mm32-link program工具恢复标志位,才能烧写。
读写保护之后,如果你想通过jflash工具读取目标板的程序,只能读出全FF的文件。通过答差瞎mm32-link program读出的程序虽然看似有意义,但是某些数据是错误的,重新写入目标板会导致程序工作异常。
使用mm32-link program工具,去掉OPTByte和Block Protect的复选框,重新烧写标志位即可。
一、故障现象:(1)烧写采用的是SWD 5pin引脚的方式,烧写程序时jlink上的灯红绿交替闪烁,MDK报错(如图)。(2)复位脚电压很低,只有0.9V左右,发现去掉复位脚可以正常烧录进去,程序也可以运行。(3)去掉复位脚烧录进程序后,用jflash读整个芯片,发现数据是都漏手写入flash了的。(4)车间批量烧写的时候,有10%左右的概率二、我自己的思考:为缺搜姿防止异常,程序中加了这个复位重启的处理,我估计是程序异常了不断进伏绝入复位重启导致烧写不进去 void HardFault_Handler(void){ NVIC_SystemReset()}三、 现在着急寻求帮助怎么找到Bug,不像是程序能正常运行起来debug那就好找问题。1、检查世败程序芯片是否正确;2、检查烧录工具是否正确;
3、检查肆陆程序文件是否正确;
4、检查烧录器是否正确连接;
5、检查烧录器的驱动程序是否正确安装;
6、检查烧录器的电源是否正常;
7、检查芯片是否锁定搜雹颤;
8、检查程序文件是否正确;
9、检查程序文件是否正确编译;
10、检查烧录器的设置是否正确;
11、检查烧录器的芯片类型是否正确;
12、检查烧录器的程序文件是否正确;
13、检查烧录器的烧录速度是否正确;
14、检查烧录器的烧录地址是否正确;
15、检查烧录器的烧录模式是否正确。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)