[资料分享与下载] 【经验分享】使用CW10.x的PE禁用NMI不可屏蔽中断

[复制链接]
 楼主| FSL_TICS_Robin 发表于 2014-4-23 09:27 | 显示全部楼层 |阅读模式
本帖最后由 FSL_TICS_A 于 2014-10-21 15:23 编辑

使用CW10.x的PE禁用NMI不可屏蔽中断

已经遇到好几例误使用NMI引脚问题,所以在此与大家分享一下 自己的经验,并列举了在CodeWarrior10.6软件上使用Processor Expert工具禁用KL25芯片NMI功能的操作步骤。
希望对大家有所帮助,不足之处欢迎指正,同时也欢迎大家分享自己的小经验。

问题起因:
Kinetis芯片的不可屏蔽中断引脚NMI_b在电路设计时被作为GPIO与外部设备连接了。调试程序时才发现:哪怕通过引脚复选功能切换位(Pin Mux Control)将该引脚配置成GPIO功能,该引脚上的低电平还是会导致程序进入不可屏蔽中断,而这与当初把这NMI_b引脚作为GPIO的设计初衷不符。所以想寻找是否有这种 不改变硬件电路,仅通过软件程序禁用NMI功能 的可能?

解决方法:
以KL25芯片为例打开参考手册KL25P80M48SF0RM,通过“6.3.2 FOPT boot options”(图1、图2)我们可以看到:只读寄存器FTFA_FOPT的NMI_DIS位显示NMI功能是否使能,而这个FTFA_FOPT寄存器的值在系统启动时会从flash configuration field的NVM's option byte处加载。
根据提示再查看“27.3.1 Flash Configuration Field Description”(图3):Flash Configuration Field Byte Address为0x0040D处对应的1个字节就是之前提到的Flash nonvolatile option byte。
那么若想禁用NMI_b引脚上的不可屏蔽中断功能,就需要将Flash Configuration Field处0x40D地址Bit 2的值改为0。

6.3.2 FOPT boot options1.jpg
图1

6.3.2 FOPT boot options.jpg
图2

27.3.1 Flash Configuration Field Description.jpg
图3


这篇既然是讲解CodeWarrior10.6软件上使用Processor Expert工具禁用KL25芯片的NMI功能,所以以下操作步骤适用CodeWarrior10.x带PE的工程:

1.创建新的Bareboard工程并选择MKL25Z128芯片
1.jpg

2.选上自己的调试工具(此处使用FRDM-KL25Z板载OpenSDA)
2.jpg

3. Rapid Application Development选项勾选Processor Expert工具,Project Mode选择Standalone。(至此已完成新工程的创建)
3.jpg

4.在CW10.6的PE界面下修改配置
4.1将PE窗口的显示级别调成Advanced(CW10.6之前版本选择Expert)
4.2选择芯片型号为MKL25Z128VLK4
4.3将Component Inspector-Cpu窗口Properties中Internal peripherals的NMI pin选择Disabled
4.4将Cpu interrupts/resets的NMI interrupt选择Disabled
4.5点击生成Processor Expert代码
4.jpg

通过查看Generated_Code文件夹下Cpu.c文件中的/* Flash configuration field */部分,可以看到NMI_DIS=0,其他位为1。也就是NV_FOPT(0x40D地址)被写入了0xFB。

附件为文档形式的<使用CW10.x的PE禁用NMI不可屏蔽中断.pdf>以及测试代码:
使用CW10.x的PE禁用NMI不可屏蔽中断.pdf (794.13 KB, 下载次数: 39)
Disable NMI.zip (724.71 KB, 下载次数: 43)





PS:本帖可从 飞思卡尔MCU论坛 置顶帖 飞思卡尔Kinetis资料大本营 飞思卡尔论坛支持小组【经验分享】总汇 链接进入。
FSL_TICS_ZJJ 发表于 2014-4-23 09:31 | 显示全部楼层
感谢楼主的经验分享!
yiyyu 发表于 2014-8-12 11:11 | 显示全部楼层
感谢楼主的经验分享!
773839910 发表于 2014-9-23 13:24 | 显示全部楼层
我最近也在弄这个,求指教
 楼主| FSL_TICS_Robin 发表于 2014-9-23 13:34 | 显示全部楼层
yiyyu 发表于 2014-8-12 11:11
感谢楼主的经验分享!

不用客气呢
还有一篇比较相似的帖子大家也可以看一下:【经验分享】IAR编译环境禁用NMI(不可屏蔽中断)
 楼主| FSL_TICS_Robin 发表于 2014-9-23 13:34 | 显示全部楼层
773839910 发表于 2014-9-23 13:24
我最近也在弄这个,求指教

如果有什么问题欢迎在帖子里讨论:D
niuyaliang 发表于 2014-12-28 15:34 | 显示全部楼层
haolaishi 发表于 2014-12-28 15:57 | 显示全部楼层
sunmeat 发表于 2014-12-28 16:41 | 显示全部楼层
哆来咪 发表于 2015-1-25 19:03 | 显示全部楼层
多谢楼主分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则

50

主题

2439

帖子

13

粉丝
快速回复 在线客服 返回列表 返回顶部