【原创】飞思卡尔coldfire v1处理器复位系统介绍
0赞一.Freescale MCF51AC128/256复位
MCU 的复位是使 CPU 和系统中的其他功能部件都处在一个确定的初始状态,并从这个状态开始工作。MCU 无论是在接上电源时,还是断电后或者发生故障后都要复位,所以必须弄清楚 coldfire V1 MCU 的复位条件、复位电路和复位后系统中各功能部件的状态。
MCF51AC128 MCU 在复位信号结束后,CPU会自动从0x0000_0000处取4字节(32bits)数据给管理员堆栈指针寄存器;同时从0x0000_0004处取4字节给PC(程序计数器),这样等于是初始化了堆栈寄存器和PC寄存器,应用程序从PC寄存器指定的位置开始执行。在复位期间,片上外设模块被屏蔽,I/O 引脚初始化为通用的高阻抗输入,其引脚无上拉。
MCF51AC128 MCU具有下列 8 种复位源,系统配置灵活、可靠。
上电复位 POR( Power-on Reset )
看门狗复位 COP( Computer Operating Properly )
低电压复位 LVD( Low-Voltage Detect Reset )
非法操作码复位
非法寻址复位
后台调试强制复位
复位引脚(即Reset引脚有个下降沿脉冲导致的复位)
时钟发生器锁定失败和时钟丢失复位
看门狗复位COP的作用是:当用户程序“跑飞”,看门狗产生一个强制系统复位的信号。为了防止 COP 复位(当COP 被使能),用户程序必须定期清零 COP 计数器。
在这 8 种复位源中除了后台调试强制复位,每个复位源都与系统复位状态寄存器(SRS)相应位对应。
1.系统复位状态寄存器(SRS)
系统复位状态寄存器SRS(System Reset Status Register)包括 7 个只读位记录了最近一次发生的复位源。即这些位的状态取决于 MCU 的复位原因。向该寄存器地址写入任意值可清零 COP 看门狗计数器但不影响该寄存器的内容。当一个调试器通过向 SBDFR 寄存器的 BDFR 位写入 1 强制复位时,SRS 的各标志位都不会被置位。
注:MCU在复位时,任何有效的复位源都将导致相应的位被置位,同时无效的其他复位源位被清零。
|
2. 系统选项寄存器(SOPT)
系统选项寄存器SOPT(System Options Register)是只写一次的寄存器,只有在复位后的第一次写入才有效。因此应重视复位后的第一次写入 SOPT寄存器。任何后来的尝试向SOPT 写入都将被忽略,以避免对这些敏感设置的意外修改。
SOPT寄存器应在用户复位初始化程序期间被写入,以实现期望的控制,即使期望的设置与复位后的设置相同。
任何复位之后,系统选项寄存器(SOPT)中的COPE位置1,使能看门狗复位。该寄存器可以在任何时侯被读。第 2,3 位没有被用且始终为 0。
3. 系统选项寄存器2(STOP2)
系统系统选项寄存器2(STOP2) 也是只写一次的寄存器,只有在复位后的第一次写入才有效。因此应重视复位后的第一次写入 SOPT2寄存器。任何后来的尝试向 SOPT2 写入都将被忽略,以避免对这些敏感设置的意外修改。
SOPT2寄存器应在用户复位初始化程序期间被写入,以实现期望的控制,即使期望的设置与复位后的设置相同。
4. 看门狗 COP
当应用程序没有按照预期执行时,COP 看门狗会强制系统复位。为了防止 COP 复位(当COP使能),用户程序必须周期性地清零 COP 计数器。如果用户程序在 COP 定时器溢出前忘记或者没有复位 COP,就会产生一个系统复位信号。
在复位之后,COP计数器使能,而最初的对SOPT的写操作将复位COP计数器。如果用户程序中不使用COP看门狗,那么可以通过在复位后的一次性写入SOPT寄存器的COPE位进行屏蔽。写任意值到 SRS 可以复位 COP 计数器。写入操作不影响只读寄存器 SRS 的数据。
SOPT2 寄存器的 COPCLKS 位用于选择COP 定时器的时钟源。可以选择的时钟源是总线周期或内部的 1kHz 时钟源。每个时钟源有相应的短和长溢出,由 SOPT 的 COPT 控制。表1 总结了 COPCLKS 和 COPT 位的控制功能。COP 看门狗默认操作是总线时钟源和相应的长溢出周期。
用户程序可以使用 COPE、COPCLKS 和 COPT 的复位默认设置,因为这三个位只能写一次,建议用户程序在复位初始化时,一次性写入 SOPT 寄存器,以锁存这些设置,这样即使应用程序跑飞也不会被意外的改变。对 SOPT 和 SOPT2 的写操作将会复位 COP 计数器。在后台调试模式下,COP 计数器不会增加。当CPU处于halt状态时,COP计数器也不会增加。
选择总线时钟源后,当系统处于停止模式时, COP 计数器不会增加。当 MCU 退出停止模式, COP 计数器重新开始计数。选择 内部 1 kHz 源后,当系统进入停止模式时, COP 计数器重新初始化为 0。当MCU 退出停止模式 ,COP 计数器从0开始计数。
对 SRS 的写入(可清零 COP 计数器)不能放到中断服务程序(ISR)里,因为即使主程序失败,ISR 可能仍会周期性地执行。关于看门狗请参看“看门狗教程”。
特别注意:与看门狗相关的两个寄存器SOPT和SOPT2是只能写一次的寄存器!
好了,先写这么多