The Digital Systems Laboratory Companion CD-ROM is always in the process of being improved. This document lists the changes made between each release of the CD-ROM; this particular CD-ROM represents Version 1.2, released in June, 2003.
Version 1.2 of the Companion CD-ROM was released on 27th June, 2003 by John Zaitseff. The following changes were made:
• | Experiment 1 for ELEC2041 Microprocessors and Interfacing has been updated. |
---|---|
In detail (all changes are listed in page order):
On page 10, a comment has been added to the top of the page to exhort the
use of sensible layout. On page 18, a warning has been included to use
the upper-case letter “O” and not the number zero for the
option -O2 . On page 19, the same warning has also been
added. In addition, the paragraph just before the Warning box on the same
page has been rewritten; it now asks you to compare the entire code
produced by the compiler, not just the portion of code around
main . Other minor corrections have also been made. |
|
• | The formatting has slightly changed in the file flash-v2.s, in the unsw/elec2041/labs-src/exp1 directory. |
• | A new document, Typical Questions for Experiment 1, has been added to the CD-ROM. |
• | Experiment 2 for ELEC2041 Microprocessors and Interfacing has been updated. |
In detail: On page 21, the wording has been
changed in the section “Getting Started” to reflect the
Digital Systems Laboratory more accurately; this has also been done for
Experiments 3 and 4. On page 22, a new section, “Programming
Style”, has been inserted; this section originally appeared in a
slightly different form in Experiment 4. All page numbers after page 22
have been changed to accommodate this new section. On page 28 (old page
26), the #16 in the Note Carefully box has been corrected to
#20 . Also on the same page (old page 27), the description of
Task 1 has been clarified: it is the memory locations of the
variables a and b that need to be swapped, not
the registers R0 and R1. On page 30 (old page 29), the memory locations
to inspect (just before Task 2) have been changed from “0x801C and
0x8024” to “0x8018 to 0x8020 for the program add-v3.s and 0x8024 to 0x8038 for the program add-v3.s”. On page 31 (old page 29), the shifted
versions of add , sub and mov have
been added to Task 2. On page 32 (old page 30), the program gcd.c in Figure 10 has been updated to include the
comment “Assume that a > 0 and b >
0”. On page 33 (old page 31), a statement that
multiplicand is to be assigned to register R0 and
multiplier to register R1 has been included just before
Checkpoint 4. The result is also to be returned in register R0. The same
statements have been included on page 34 (old page 33), just before
Checkpoint 6. The question in Checkpoint 5 has been corrected to take
account of the fact that the formula should include certain
instructions in the loop as part of a. The questions for
Checkpoint 7 have been extended slightly to include the need for deduction
based on results. Other minor changes have also been made. |
|
• | Some files in the unsw/elec2041/labs-src/exp2 directory have been changed. In particular, some of the comments in the files add-v1.s, add-v2.s, add-v3.s, add-v4.s, add-v5.s and exp-s.s have been rewritten to reflect best practices. |
• | Experiment 3 for ELEC2041 Microprocessors and Interfacing has been updated. |
In detail: The page numbering has changed so that
pages 35–54 have become pages 37–57. On page 42 (old page
40), the statement “'a' is used as an example of a
character” has been added to the code in Figures 5 and 6. In the
program chsub-s.s in Figure 6, the instruction
“strb r0, [r3, #4] ” (the fifth instruction in
main ) has been corrected to “strb r0,
[r3] ”. On page 43 (old page 41), the array a
has been renamed arr for the sake of clarity. On page 45
(old page 43), a sentence has been added to Task 2 to state that the
result n must be returned in register R0. In addition, a
challenge to avoid the mul and mla instructions
has been added to the same task. On page 47 (old page 45), a sentence has
been added to the second paragraph to explain how the “return to
caller” operation is to be done. A number of comments have also
been added to Figure 12 on this page, along with an exhortation to read
the code on the CD-ROM. A major paragraph has also been added to this
page to warn about the difference between a function and a
label. On page 48 (old page 45), a sentence has been added to
Task 3 to require that the parameter be passed and returned in R0. On
page 48 (old page 46), an additional heading (“ARM Thumb Procedure
Call Standard”) has been added. On page 49 (old page 46), the
registers listed at the end of the second bullet point have been
corrected from R0–R4 to R0–R3. On page 49 (old page 47), the
last bullet point has been corrected from “empty descending”
to “full descending”. On pages 49–50 (old pages
47–48), the program larger-v2.s has been
updated to use the register aliases A1–A4 instead of R0–R3 and
has had additional comments added to it. On page 51 (old page 49), about
half a page of material has been added to explain the stmfd
and ldmea instructions; a reference to the new files larger-v3.s and larger-v4.s has
also been made. On page 52 (old page 49), the requirement to include the
object file malloc.o has been added just after the
“p atoi("12") ”. On page 53 (old page
50), the program iter-div.c in Figure 15 has been
corrected to remove some bugs: “if (dividend <= 0)
{ ” has been changed to “if (dividend <
0) { ”, and “while (dividend > divisor)
{ ” has been changed to “while (dividend
>= divisor) { ”. On the same page, Checkpoint 6 has
been reworded to acknowledge the fact that some instructions that are part
of the loop should be included as part of a. On page 55 (old
page 52), the code in Figure 16 has been corrected: the statement
“if (dividend <= 0) { ” has been changed to
“if (dividend < 0) { ”. On page 56 (old
page 53), Checkpoint 8 has been extended slightly to require the student
to make deductions based on their results. Other minor changes have also
been made. |
|
• | Some files in the unsw/elec2041/labs-src/exp3 directory have been changed.
The source file chsub-c.c has been modified to
reflect the documentation (the comment “'a' is used as
an example of a character” has been included). The file chsub-s.s has been corrected by changing the instruction
“strb r0, [r3, #4] ” (the fifth instruction in
main ) to “strb r0, [r3] ”. The file
larger-v2.s has been rewritten to use the register
aliases A1–A4 instead of R0–R3. The make-file atoi-v2.make has been changed to use malloc.o. Some of the comments in the files chsub-s.s, larger-v1.s, larger-v2.s, matrix-v1.s and
matrix-v2.s have been updated. The files larger-v3.s, larger-v3.make,
larger-v4.s, larger-v4.make, malloc.s and
malloc.o have been added to this directory; All.make has also been updated to reflect this. |
• | Experiment 4 for ELEC2041 Microprocessors and Interfacing has been updated. |
In detail: The page numbering has changed so that pages 55–67 have become pages 59–70. On page 61 (old page 57), a question on unaligned word accesses has been added just before the first paragraph. The section on “Programming Style” has been removed from the old pages 58–59. On page 65 (old page 62), the program flash-v1.s in Figure 3 has been rewritten to conform to the ATPCS (ARM Thumb Procedure Call Standard). On page 66 (old page 63), the program flash-v2.s has also been rewritten to conform to the ATPCS, and to demonstrate how a stack should be set up. A pointer to the file flash-v3.s has also been added to this page. On page 67 (old page 64), the first bullet point (starting with “a small change to your code”) has been rewritten for clarity. On page 68 (old page 65), the sentence “…will cycle modulo its word length” (first paragraph in the section “Free-running Timers”) has been corrected to “…modulo its word length raised to the power of two”. On page 69 (old page 66), the first sentence of Task 3 has been changed from “You have been provided with a file in your working directory called timer-flash.s” to “Copy the file flash-v2.s in Figure 4 and call it timer-flash.s”. A warning has also been added to the same Task about writing to the Timer port. A hint has also been added to Task 4 on the same page. On page 70 (old page 67), the requirement for modular programming has been rewritten for clarity. Other minor changes have also been made to the document. | |
• | A new document, Typical Questions for Experiment 4, has been added to the CD-ROM. |
• | The source file timer-flash.s was removed from the unsw/elec2041/labs-src/exp4 directory. The files flash-v1.s and flash-v2.s have been rewritten to follow the ARM Thumb Procedure Call Standard. A new file, flash-v3.s, has been added to this directory; All.make has been updated to reflect this. |
• | Experiment 5 for ELEC2041 Microprocessors and Interfacing has finally been placed on the Companion CD-ROM, along with its associated source code in the unsw/elec2041/labs-src/exp5 directory. |
• | A new document, Typical Questions for Experiment 5, has been added to the CD-ROM. |
• | The document containing the Cover/Title pages for the ELEC2041 Microprocessors and Interfacing Experiments has been updated. A similar document has been created for COMP3221/COMP9221 Microprocessors and Embedded Systems. |
• | The Introduction to the GNU
Assembler has been updated slightly. In particular, a sentence has
been included on page 2 to reflect the fact that you can use
“@ ” as well as “; ” for
single-line comments. |
• | A new document, An Introduction to the GNU Compiler, has been added to the unsw/common directory. |
• | The Introduction to the GNU Debugger has
been updated to include pictures of the icons used in the debugger. A
number of sentences have also been reworded for clarity; see, in
particular, the description on page 9 of p dispatch(&f_mul,
1234, 4321) . All references to the DSLMU Microcontroller Board
have been replaced with instructions that can be used for any type of
hardware board. |
• | The Introduction to Komodo has been updated slightly: the word “emulator” has been replaced with “simulator”. |
• | A new document, the ARMv4T Partial Instruction Set Summary, has been added to the unsw/common directory. |
• | The GNU Tools have been updated to the latest released versions as at June, 2003. The binary packages for Linux and Microsoft Windows have been recreated, the reference manuals have been updated, and all installation instructions have been tested and modified appropriately. |
Note: One of the components of the GNU Tools is the Insight debugger. This release of the Companion CD-ROM contains Version 5.3 of this debugger, the same version as on previous CD-ROMs. However, Insight 5.3 contains known problems when running under Microsoft Windows. In particular, switching from Insight to another application, then back to Insight may cause the debugger to mysteriously crash. A new version of Insight has not been released to fix these problems since December, 2002. You may wish to check the Insight Web page to see if this situation has changed. | |
• | The Cygwin Unix Emulator
has been updated to the latest version as at June, 2003. This version
includes the expect package that is needed for checking
scripts used as part of ELEC2041 Microprocessors and Interfacing. |
• | The components that make up the Xilinx FPGA Tools have been updated to Xilinx ISE WebPack version 5.2 with Service Pack 2 and ModelSim XE version 5.6e. |
• | The Base Calculator utility application, a very useful tool for working with integer numbers in decimal, hexadecimal, octal and binary, has been added to the CD-ROM. |
• | The Atmel AT49LV16x Flash ROM Datasheet has been added to the board/doc/data directory, since most of the DSLMU Microcontroller Boards use this Flash ROM. The documents in the board/doc/misc directory have been updated to the latest versions. |
• | The Makefile template files in the examples/templates directory have been updated slightly: the implicit rule for making ELF files has been modified to allow linker scripts to be specified. |
• | The source code to the Komodo debugger in the board/src/komodo directory has been updated to version 1.4.0-UNSW-1.6. This is the version currently being used in the Digital Systems Laboratory. |
• | The source code to the AutoRun utility application has been updated to Version 2.2.2, the latest version. |
• | Many of the README.html and other HTML files on this CD-ROM have been updated to correct minor errors. |
Version 1.1 of the Companion CD-ROM was released on 27th March, 2003 by John Zaitseff. The following changes were made:
• | Experiment 1 for ELEC2041
Microprocessors and Interfacing has been updated; changes are listed in
page order. On page 3, the position of the Ground Link in Figure 1 has
also been modified to reflect reality. On the lower part of page 18,
-Wa,-marm7tdmi has been changed to
-mcpu=arm7tdmi in the arm-elf-gcc command line. |
---|---|
• | A number of files in the unsw/elec2041/labs-src/exp1 directory have been updated. In particular, flash.make has been changed so that it no longer removes cstart.o. The files cstart.s and cstart.o have also been updated. |
• | Experiment 2 for ELEC2041
Microprocessors and Interfacing has been updated. On page 24,
-Wa,-marm7tdmi has been changed to
-mcpu=arm7tdmi in the arm-elf-gcc command line.
On page 25, the arm-elf-gcc command line has been changed to
use arm-elf-ld instead. On the bottom of page 26, the first
arm-elf-gcc command line has been updated to use
-mcpu=arm7tdmi . The second command line has been updated to
use arm-elf-ld instead of arm-elf-gcc . On page
29, the program exp-c.c in Figure 8 has been
modified to use unsigned instead of int . |
• | Some files in the unsw/elec2041/labs-src/exp2 directory have been changed.
The files add-c.make and exp-c.make have been changed to use cstart.o. The source file exp-c.c has been modified to use unsigned
instead of int . The files cstart.s
and cstart.o have also been added to this
directory. |
• | Experiment 3 for ELEC2041
Microprocessors and Interfacing has been updated. On page 41, every
occurrence of tolower has been replaced with
toupper. This better reflects what you are supposed to
write! Similarly, on page 45, tolower-f has been replaced
with toupper-f. The function you are expected to write has
been changed from lower to make_upper . On page
54, -Wa,-marm7tdmi on the second command line has been
changed to -mcpu=arm7tdmi . The two paragraphs just before
Task 7, on the same page, have been rewritten to use cstart.o and arm-elf-ld instead of
arm-elf-gcc (in the third command line). |
• | Files in the unsw/elec2041/labs-src/exp3 directory have been updated. The files tolower.make and tolower-f.make have been renamed to toupper.make and toupper-f.make respectively (All.make has also been updated to reflect this). The make-files cmp-c-s.make, cmp-c-u.make, chsub-c.make, matrix-c.make, larger-c.make and posn-div-v2.make have been modified to use cstart.o. The files cstart.s and cstart.o have also been added to this directory. |
• | Experiment 4 for ELEC2041
Microprocessors and Interfacing has been updated. On page 59, Figure 2
(the Boot Select Switch) has been updated to show the actual settings
needed in the Digital Systems Laboratory. On page 62, the code comment
for “bic r0, r0, #0x04 ” (fifth line from the top
of the page) has been corrected to read “set the bit to
0” (not “1”, which is incorrect). On
page 67, Figure 7 (the LEDs) has also been changed to show the actual
position of the red and green LEDs on the DSLMU Microcontroller
Board. |
• | The document containing the Cover/Title pages for the ELEC2041 Microprocessors and Interfacing Experiments has been updated. |
• | The DSLMU Microcontroller Board Hardware Reference Manual has been updated to reflect the actual hardware in the Digital Systems Laboratory. In particular, the position of the Ground Link in Figure 1 on page 1, the Boot Select Switch in Figure 3 on page 4, and the red and green LEDs in Figure 6 on page 16 have all been modified. A new diagram has also been included on page 17 to explain the LCD Module interface. |
• | The GNU Tools precompiled binary package for Linux has been recreated. This removes a problem that can occur on some older Linux systems, including Red Hat Linux 7.3. The problem is an incompatibility with older versions of the GNU C Library, which does not allow some of the programs to be executed. In particular, it affects arm-elf-insight, arm-elf-gdb and arm-elf-ld, giving an error message that version “GLIBC-2.3” is not found. The new binary package should solve this problem. If it does not, you will need to recompile the GNU Tools from source. |
• | The DSLMU Microcontroller Board on-board software in the board/src/monitor directory has been updated to the version used in the Digital Systems Laboratory. See the appropriate README.html file for more information about the on-board software. |
• | The source code to the Komodo debugger used in the Digital Systems Laboratory has been included in the board/src/komodo directory. This particular version is not supported for use outside the Laboratory — use at your own risk! The code has been written by staff at the University of Manchester, England, and modified by staff in the Digital Systems Laboratory, University of New South Wales. See the appropriate README.html file for more information about this software. |
• | The Cygwin Unix Emulator has been updated to the latest version as at 24th March, 2003. |
• | TextPad has been updated to version 4.6.2, the latest version. |
• | The script file textpad mentioned in the Cygwin Installation Instructions has been updated. |
• | An additional configuration file, .komodo, has been included in Setting Up Your Computer’s Environment for Linux. |
Version 1.0 of the Companion CD-ROM was released on 11th March, 2003. This version of the CD-ROM represents the original release, and was designed and developed by John Zaitseff. It was released to complement the newly-refurbished Digital Systems Laboratory at the University of New South Wales, Sydney, Australia.
Copyright © 2001–03, School of Electrical Engineering and Telecommunications, University of New South Wales. All rights reserved. CRICOS Provider Number: 00098G.