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:
• | ![]() |
---|---|
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 ![]() |
• | A new document, ![]() |
• | ![]() |
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 ![]() |
• | ![]() |
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 ![]() '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. |
• | ![]() |
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, ![]() |
• | The source file timer-flash.s was removed
from the ![]() |
• | ![]() ![]() |
• | A new document, ![]() |
• | The document containing the ![]() ![]() |
• | The ![]() @ ” as well as “; ” for
single-line comments. |
• | A new document, ![]() |
• | The ![]() 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 ![]() |
• | A new document, the ![]() |
• | 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 ![]() |
• | 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 ![]() |
• | 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:
• | ![]() -Wa,-marm7tdmi has been changed to
-mcpu=arm7tdmi in the arm-elf-gcc command line. |
---|---|
• | A number of files in the ![]() |
• | ![]() -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 ![]() unsigned
instead of int . The files cstart.s
and cstart.o have also been added to this
directory. |
• | ![]() 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 ![]() |
• | ![]() 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 ![]() |
• | The ![]() |
• | 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 ![]() |
• | The source code to the Komodo debugger used in the Digital Systems
Laboratory has been included in the ![]() |
• | 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.