完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
上一节根据uboot架构分析我们一步一步的设置系统为SVC,小节根据架构设计步骤来关闭看门狗和中断中断!(架构中的第二步和第三步)
相信做嵌入式这行的对看门狗不承认! 1.看门狗的作用:在嵌入式领域,某些系统需要长期运行在无人看守的环境。在运行过程中,免难不出现系统死机的情况,这时就需要系统自身带有一种自动重启的功能.watchdog一般就是一个硬件模块,其作用就是在系统死机时帮助系统实现自动重启。 2.看门狗的工作方式:看门狗在硬件上实现了计时功能,启动计时后,用户软件必须在计时结束前开始计时,日常称“喂狗”,如果到了时间还没有重开始计时,那么就认为系统是死机了,就自动重启系统。 这里贴上6410 Watchdog ARM芯片手册上看门狗部分的英文原版! 34 WATCHDOG TIMER 本章介绍了S3C6410X RISC微处理器中看门狗定时器的功能和用法。 34.1 概述 S3C6410X RISC 微处理器看门狗定时器用于在 受到噪声和系统错误等故障干扰时恢复控制器操作 。看门狗定时器产生复位信号。 它可以作为一个普通的 16 位间隔定时器来请求中断服务。 使用 WDT 代替 PWM 定时器的优点是 WDT 产生复位信号。 34.2 特性 看门狗定时器包括以下特性: • 具有中断请求的正常间隔定时器模式。 • 当定时器计数值达到0(超时)时,内部复位信号被激活。 • 电 平触发中断机制。 34.3 功能描述 34.3.1 看门狗定时器操作 图 34-1 显示了看门狗定时器 的功能框图。看门狗定时器只使用 PCLK 作为它的 源时钟。对PCLK频率进行预分频,生成对应的看门狗定时器时钟, 再分频得到的频率。 下面的一张图可以分为三个部分: 1. 时钟源PCLK,分频器将时钟源分频出来的时钟就是看门狗所用的时钟! 2.计数逻辑模块,减1操作,设置一个时间,会一直减减,所以一定时间要定时重新设置新值 3。减到0时会产生一个信号复位信号发生器---》RESET 一般uboot程序比较简单,所以一开始都是把看门狗关闭 预分频值和分频系数在看门狗定时器控制(WTCON) 寄存器中指定。有效的预分频器值范围为 0 到 28-1。分频因子可以选择为 16、32、64 或 128。 使用以下公式计算看门狗定时器时钟频率和每个定时器时钟 周期的持续时间 : t_watchdog = 1/( PCLK / (Prescaler value + 1) / Division_factor ) 34.3.2 WTDAT & WTCNT 一旦看门狗定时器被启用,看门狗定时器数据(WTDAT)寄存器的值不能自动 重新加载到定时器计数器(WTCNT)中。 因此, 在看门狗定时器启动之前,必须将初始值写入看门狗定时器 计数 (WTCNT) 寄存器。 34.3.3 调试环境的考虑 当 S3C6410 处于使用 Embedded ICE 的调试模式时,看门狗定时器不能工作。 看门狗定时器可以从CPU内核信号判断当前是否处于调试模式 (DBGACK 信号)。一旦 DBGACK 信号被置位,看门狗定时器的复位输出不会被激活,因为 看门狗定时器已到期。 34.4 特殊功能寄存器 34.4.1 存储器映射 34.5 个别寄存器说明 34.5.1 看门狗定时器控制(WTCON)寄存器 WTCON 寄存器允许用户启用/禁用看门狗定时器,从 4 个不同的 中断源中选择时钟信号 ,启用/禁用,并启用/禁用看门狗定时器输出。 看门狗定时器用于 S3C6410 上电后恢复故障重启。此时, 禁止中断产生,使能看门狗定时器输出复位信号。 如果不希望控制器重启,并且用户想使用 看门狗定时器提供的普通定时器,则 启用中断产生并禁用看门狗定时器仅输出复位信号。 从下面的表格可以:WTCON可以控制看门狗的开关,看下面的表格设置第0位为0就禁用了看门狗 1。设置词句,句柄地址 2. 设置视频哪一位可以关闭看门狗 3. 然后用代码实现 注意:‘Reset enable/disable’的初始状态为1(reset enable)。如果用户 不禁用该位,S3C6410 将在大约 5.63 秒内 重新启动(在 PCLK 为 12MHz 的情况下)。所以在引导加载程序中,这个位应该 在操作系统或固件控制之前被禁用 。 这可以先了解一下,这里暂时用不到! 34.5.2 WATCHDOG TIMER DATA (WTDAT) REGISTER WTDAT 寄存器用于指定超时持续时间。WTDAT 的内容不能 在初始看门狗定时器操作时自动 加载到定时器计数器中。但是,使用 0x8000(WTCNT 的初始值) 将驱动第一次超时。然后,WTDAT 的值将自动重新加载到 WTCNT。 34.5.3 看门狗定时器计数(WTCNT)寄存器 WTCNT 寄存器包含正常操作期间看门狗定时器的当前计数值。 注意: 当 看门狗定时器最初启用时,WTDAT 寄存器的内容不能自动加载到定时器计数寄存器中 ,因此在启用之前必须将 WTCNT 寄存器设置为初始值 。 接着上一课,这里贴上关闭看门狗的程序代码(OK6410) 《span style=“font-size:18px;”》reset: bl set_svc bl disable_watchdog set_svc: mrs r0, cpsr bic r0, r0, #0x1f @后5位清零 orr r0, r0, #0xd3 @相应位置1 10011 msr cpsr, r0 @写入GPSR寄存器 mov pc, lr #define pWTCON 0x7e004000 @watchdog CON寄存器地址 disable_watchdog: ldr r0, =pWTCON @将地址装载到通用寄存器 mov r1, #0x0 @将0传到r1寄存器中 str r1, [r0] @将值传到到寄存器地址所在的内存中 mov pc, lr《/span》 下面来关闭中断部分:(还是看数据表) 6410采用中断中断的方式,硬件自动跳转! 关闭中断选择两个控制动作: 1. CPSR我位中断,还有F位控制快速中断,这里实际上在设置SVC模式时就自带!这里可以在前面的博文中找到CPSR屏蔽手册截图!(看看可以继续连接起来) 2. 还需要中断屏蔽屏蔽 同上面,先找到那个谁最后捕捉,然后那个寄存器要设置什么值,从下面手册上的截图表格可以看到Interupt Enable Register 就是我们要找的 从数据表中找到这个寄存器: 这里可以看到6410的中断批评,VIC0和VIC1,下面来看看这两个诉求的描述! 破坏使能运动从上面的表格工具,这里这个运动能力使能破坏,要屏蔽使用VICINTENEAR 运动控制再考虑VICINTENCLEAR: 写是没有效果,看的截图可以看到要向两个 上面的博中写入这全1这里的贴上代码,还是在之前的文上开始。S基础上加上部分的代码! reset: bl set_svc bl disable_watchdog bl disable_interrupt set_svc: mrs r0, cpsr bic r0, r0, #0x1f @后5位清零 orr r0, r0, #0xd3 @相应位置1 10011 msr cpsr, r0 @写入GPSR寄存器 mov pc, lr #define pWTCON 0x7e004000 @watchdog CON寄存器地址 disable_watchdog: ldr r0, =pWTCON @将地址装载到通用寄存器 mov r1, #0x0 @将0传到r1寄存器中 str r1, [r0] @将值传到到寄存器地址所在的内存中 mov pc, lr disable_interrupt: mvn r1,#0x0 @写入全1 取反然后填入到r1寄存器中 ldr r0,=0x71200014 @用r0保存地址 str r1,[r0] @然后将r1中的值写入到ro地址中去 ldr r0,=0x71300014 str r1,[r0] mov pc, lr |
|
|
|
只有小组成员才能发言,加入小组>>
3849个成员聚集在这个小组
加入小组3080 浏览 0 评论
航顺(HK)联合电子发烧友推出“近距离体验高性能Cortex-M3,免费申请价值288元评估板
4059 浏览 1 评论
4050 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-8-19 09:31 , Processed in 0.511973 second(s), Total 43, Slave 37 queries .
Powered by 电子发烧友网
© 2015 www.ws-dc.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号