<尚大教育,教育至上,人才为大:sdedu.cc>
试题四(共15分)
阅读
K列说明和表,回答问题1至问题2,将解答填入答题纸的对应栏内。
【说明】
看门狗(
Watchdog)技术是嵌入式系统设计中保证系统可靠的常用技术。嵌入式控 制系统运行时由
T受到外部干扰或者内部系统错误,程序有时会出现“跑飞”现象,导 致整个系统瘫痪。为了防止这一现象的发生,对系统可靠性耍求较高的场合往往耍加入 看门狗电路。当系统“跑飞”时,看门狗电路能自动恢复系统的运行。
【问题1】(8分)
设某嵌入式系统程序完整运行所需的周期时间是
tp,看门狗的定时周期为
tw,耍求
tw (1)
tp,在程序运行过程中需要定时(2)(俗称“喂狗”),只耍程序正常 运行,定时器就不会溢出。若由于干扰等原因使系统不能在
tp时刻修改定时器的计数值, 定时器将在
tw时刻(3),引发(4),使系统得以重新运行。
请填充以上叙述中空缺处的内容,将答案填写在答题纸的对应栏中。
【问题2】(7分)
张工在某嵌入式系统中设计实现了看门狗电路,采用的芯片寄存器如表4-1、表4-2、 表4-3、表4-4所示。
表4-1看门狗定时器控制寄存器(WTCON)
寄存器 |
地址 |
读/写 |
描述 |
初始值 |
WTCON |
0x53000000 |
读/写 |
看门狗定时控制寄存器 |
0x8001 |
表4-2看门狗定时器数据寄存器(WTDAT)
寄存器 |
地址 |
读/写 |
描述 |
初始值 |
WTDAT |
0x53000004 |
读/写 |
看门狗数据寄存器 |
0x8000 |
|
表4-3 |
看门狗计数寄存器(WTCNT) |
|
寄存器 |
地址 |
读/写 |
描述 |
初始值 |
WTCNT |
0x53000008 |
读/写 |
看门狗计数器当前值 |
0x8000 |
表4-4 WTCON的标识位
WTCON |
Bit |
描述 |
|
初始值 |
Piescaler Value |
[15:8] |
预装比例值,有效范围值为0〜255 |
|
0x80 |
Reserved |
[7:6] |
保留 |
|
00 |
Watchdog Timer |
[5] |
使能和禁止看门狗定时器
0=禁止看门狗定时器
1=使能看门狗定时器 |
0 |
续表
WTCON |
Bit |
描述 |
初始值 |
Clock Select |
[4:3] |
这两位决定时钟分频因素
00:1/16 01:1/32
10:1/64 11:1/128 |
00 |
Interrupt Generation |
ra |
中断的禁止和使能
0=禁止中断产生
1=使能中断产生 |
0 |
Reserved |
[1] |
保留 |
0 |
Reset Enable/Disable |
[0] |
禁止和使能看门狗复位信号的输出
1=看门狗复位信号使能
0=看门狗复位信号禁止 |
1 |
王工编写了以下程序代码,实现看门狗电路的初始化。请仔细阅读每行代码,然后 回答问题。
♦define PCLK 10000000 "第 1 行
#define rWTCON (*(volatile unsigned int*)0x53000000) //第2行
#define rWTDAT (*(volatile unsigned int*)0x53000004) //第3行
#define rWTCNT (*(volatile unsigned int*)0x53000008) //第4行
void watchdog_test(void) //第5行
{ //第6行
rWTCON = ( (PCLK/1000000-1)«8) | (3«3) | (1«2); "第7行
rWTDAT = 7812; //第8行
rWTCNT = 7812; "第9行
rWTCON |= (1«5); "第 10行
请将以
K问题的答案写在答题纸的对应栏中。
- 在程序的第2、3、4行,分别使用了 volatile关键字,请说明该关键字的作用。
- 在程序的第7行,实现了对看门狗的三个功能设置,除了设置预装比例值外, 其他两个功能分别是什么?
- 在程序的第10行,实现了对看门狗的哪个功能设置?
- 该系统结构采用的编址方式是什么?
- 该系统的位序是大端方式还是小端方式?
试题四分析
本题考查嵌入式系统中看门狗的应用以及驱动程序的设计。
【问题1】
看门狗电路是一个独立的定时器,有一个定时器控制寄存器,可以设定时间。当系
统工作正常时,应用程序在到达时间之前耍置位(喂狗),表明程序正常运行,如果没有 置的话,就认为是程序跑飞,看门狗电路发出
RESET指令,迫使系统0动复位而重新 运行程序。看门狗的主耍作用是防止程序跑飞或死锁。
所以,当程序完整运行的周期是
tp,看门狗的定时周期为
tw时,耍求
tw大于
tp, 在程序运行过程中需耍定时修改定时器的计数值(俗称“喂狗”),只要程序正常运行, 定时器就不会溢出。若由于干扰等原因使系统不能在
tp时刻修改定时器的计数值,定时 器将在
tw时刻溢出(或超时),引发系统复位中断,使系统得以重新运行。
【问题2】
- 在驱动程序中对寄存器操作时,经常使用volatile关键字,作用是确保本条指 令不会因编译器的优化而省略,且耍求每次直接读值。
- 在程序第7行,对看门狗定时器控制寄存器(WTCON)设置了三个属性值, 通过杳表4-4中WTCON的相应标识位,可以得知对预装比例值[15:8]、时钟分频因素 [4:3],中断使能[2]进行了设置。
- 在程序第10行,也对看门狗定时器控制寄存器(WTCON)进行了设置,通过 查表4-4中WTCON的相应标识位,可以得知使能看门狗定时器[5]。
- 从程序的第2、3、4行可以看出,对寄存器的操作,采用存储器指令进行,所 以,该系统结构采用的是内存和外设统一编址的方式。
- 从程序第7行、第10行对看门狗定时器控制寄存器的操作,结合表4-4中对应 寄存器的位定义可以看出,该系统的位序是小端方式。
参考答案 【问题1】
- >或大于
- 修改定时器的计数值(或重新设定看门狗的定时周期)
- 溢出(或超时)
- 系统复位中断
【问题2】
- 类型修饰符,防止编译器对代码进行优化
- 设置看门狗的分频因素为1/128、使能中断产生
- 使能看门狗定时器
- 统一编址
小端方式
<尚大教育,教育至上,人才为大:sdedu.cc>