COMP3221: Microprocessors and Embedded Systems

advertisement
COMP3221: Microprocessors and
Embedded Systems
Final Exam
http://www.cse.unsw.edu.au/~cs3221
Lecturer: Hui Wu
Session 1, 2005
Final Exam
•
•
3 hours.
Open book.
 No calculator is allowed.
•
50% of the total marks.
 Lab: 25%
 Assignment1: 10%
 Assignment 2: 15%
•
Different exam papers for undergraduate and
postgraduate students.
COMP3221/9221: Microprocessors
and Embedded Systems
2
Scope of Final Exam
Topics Covered:
•
All topics, excluding Serial Communication and
Memory Systems.
COMP3221/9221: Microprocessors
and Embedded Systems
3
Structure of Final Exam
Four Questions:
•
Question 1: Basic Concepts (20 marks)
 10 PARTs.
•
Question 2: Miscellaneous Questions (20 marks)
 7 PARTs.
•
Question 3: AVR Assembly Programming (30 marks)
 3 PARTs.
•
Question 4: Interrupts and I/O (30 marks)
 7 PARTs.
COMP3221/9221: Microprocessors
and Embedded Systems
4
Sample PARTs in Question 1
Discuss the advantages of using macros versus functions.
(2 marks)
COMP3221/9221: Microprocessors
and Embedded Systems
5
Sample PARTs in Question 1
(Cont.)
Describe how the prioritisation is achieved in daisy chain
interrupts. (2 marks)
COMP3221/9221: Microprocessors
and Embedded Systems
6
Sample PARTs in Question 2
Consider a two dimensional integer array A, where the
array element A[x,y] is at row x (x  0) and column y
(y  0). A is stored at 0x0200 in memory and has 100
rows and 50 columns. The size of each element is eight
bytes. Assume that array A is stored in memory in rowmajor order i.e. in sequential order; the elements of row 0
first, row 1 second and so on. Give a formula for
computing the address of the element A[i,j] (0  i  99
and 0  j  49). (3 marks)
COMP3221/9221: Microprocessors
and Embedded Systems
7
Sample PARTs in Question 2
(Cont.)
Consider two single precision floating point numbers x
and y in IEEE 754 format, where x=0xC0EE8000 and
y=0xC1AA4000. What is the hexadecimal value of the
result of x+y in IEEE 754 format? (3 marks)
COMP3221/9221: Microprocessors
and Embedded Systems
8
Sample PARTs in Question 2
(Cont.)
Consider the following AVR assembly code.
.set x=pc
ldi r20, low(x)
ldi r21, high(x)
ldi r30, low(pc)
ldi r31, high(pc)
Assume that the address of the instruction “ ldi r20,
low(x)” is 0x0202. After the above sequence of code is
executed, what are the contents in r20, r21, r30, and r31,
respectively? (3 marks)
9
Sample PARTs in Question 2 (Cont.)
A C program consists of five functions. Their calling
relations are shown as follows (the arguments and
irrelevant C statements are omitted).
int main(void)
{
…
func1(…);
func2(…);
…
}
10
Sample PARTs in Question 2 (Cont.)
int func1(…)
{
…
func1(…);
…
}
int func2(…)
{
…
func3(…);
func4(…);
…
}
11
Sample PARTs in Question 2 (Cont.)
func1() is a recursive function and calls itself 15 times for the
actual parameters given in main(). Both func3() and func4()
do not call any function. The sizes of all stack frames are
shown as follows.
main(): 200 bytes.
func1(): 100 bytes.
func2(): 400 bytes.
func3(): 1,400 bytes
func4(): 300 bytes
Draw the call tree of this program. (2 marks)
How much stack space is needed to execute this program
correctly? (3 marks)
12
Sample PARTs in Question 3
Write an AVR assembly program to find the minimum value of
all array elements in the one-dimensional integer array A. Your
program must satisfy the following requirements.
• Array A has 10 elements and each element is a 2-byte signed
integer.
• Each element A[i] (i=0, 1, …, 9) has an initial value that is
stored in the flash memory. You may choose any integer value
for each element.
• Array A is stored contiguously in the SRAM.
• Your program must define and use at lease one MACRO.
• The minimum value found by your program is stored in
registers r26:r25. (10 marks)
COMP3221/9221: Microprocessors
and Embedded Systems
13
Sample PARTs in Question 3 (Cont.)
Consider an embedded system using an AVR Mega64
microcontroller. Assume that Timer/Counter 0 Overflow
Interrupt has been set to occur every 200 ms in the main
program. Write an interrupt service routine ISR0 for
Timer/Counter 0 Overflow Interrupt to count the number of
hours that has passed since the embedded system started to
operate. (10 marks)
COMP3221/9221: Microprocessors
and Embedded Systems
14
Sample PARTs in Question 3 (Cont.)
Write an AVR assembly program to implement the following
C program.
int sum(int n);
int main(void)
{ int n=100;
sum(n);
return 0;
}
15
Sample PARTs in Question 3 (Cont.)
int sum(int n)
{ if (n<=0) return 0;
else return (n+ sum(n-1));
}
All local variables and parameters must be stored in the
stack space. You need to choose a proper size for n and
describe the stack frame structure using a diagram.
(10 marks)
16
Sample PARTs in Question 4
Assume for a processor with a 700 MHz clock it takes
150 clock cycles for a polling operation (calling polling
routine, accessing the device, and returning). The
overhead for an interrupt operation is 200 clock cycles.
Hard disk transfers data in 128-byte chunks and can
transfer at 6 M bytes/second rate.
If the processor uses software polling, what
percentage of the processor time is tied up in polling
the hard disk to achieve a data transfer rate of 6M
bytes/second? (4 marks)
17
Sample PARTs in Question 4 (Cont.)
If the processor uses interrupt technique and the interrupt rate
is equal to software polling rate, what percentage of the
processor time is tied up in servicing interrupt by the hard disk
during the data transfer? (4 marks)
18
Sample PARTs in Question 4 (Cont.)
Consider an embedded system using an AVR mega64
microcontroller. There are 5 interrupting sources, Int0, Int1,
…, Int4. The size of the stack space needed by each interrupt
service routine, denoted also by Inti (i=0, 1, …, 4) for
simplicity, is shown as follows.
Int0: 100 bytes
Int1: 50 bytes
Int2: 20 bytes
Int3: 40 bytes
Int4: 50 bytes
If no interrupt occurs, the correct execution of the program 19
needs 1K bytes of stack space in the worst case.
Sample PARTs in Question 4 (Cont.)
If interrupts may occur at any time and each interrupt
service routine does not enable the Global Interrupt Flag I
in the Program Status Register, how much stack space is
needed by the program in the worst case? (4 marks)
20
Sample PARTs in Question 4 (Cont.)
Assume that an interrupting device generates a new
interrupt request only if its last interrupt request has been
processed i.e. its interrupt service routine has been
finished. If interrupts may occur at any time and each
interrupt service routine enables the Global Interrupt Flag
I in the Program Status Register at the beginning of the
interrupt service routine, how much stack space is needed
by program in the worst case? (4 marks)
21
Sample PARTs in Question 4 (Cont.)
Consider designing an electronic toy. It uses a 2*2 keypad
to get the input from the user and requires that any
decimal integer number and four directions (up, down, left
and right) be input via 4 keys. If a straightforward key
scanning approach like the one in our Lab 4 is used, only
4 symbols can be input to the electronic toy, which does
not satisfy the requirement.
22
Sample PARTs in Question 4 (Cont.)
Design an encoding scheme such that all the
required symbols can be represented via 4 keys. (4
marks)
23
Sample PARTs in Question 4 (Cont.)
Describe a key scanning procedure which
implements your encoding scheme using a diagram
or an algorithm. (6 marks)
24
Download