Changes Made to This Version of the CD-ROM

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

Version 1.2 of the Companion CD-ROM was released on 27th June, 2003 by John Zaitseff. The following changes were made:

[PDF] 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 [List] unsw/elec2041/labs-src/exp1 directory.
A new document, [PDF] Typical Questions for Experiment 1, has been added to the CD-ROM.
[PDF] 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 [List] 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.
[PDF] 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 [List] 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.
[PDF] 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, [PDF] Typical Questions for Experiment 4, has been added to the CD-ROM.
The source file timer-flash.s was removed from the [List] 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.
[PDF] Experiment 5 for ELEC2041 Microprocessors and Interfacing has finally been placed on the Companion CD-ROM, along with its associated source code in the [List] unsw/elec2041/labs-src/exp5 directory.
A new document, [PDF] Typical Questions for Experiment 5, has been added to the CD-ROM.
The document containing the [PDF] Cover/Title pages for the ELEC2041 Microprocessors and Interfacing Experiments has been updated. A [PDF] similar document has been created for COMP3221/COMP9221 Microprocessors and Embedded Systems.
The [PDF] 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, [PDF] An Introduction to the GNU Compiler, has been added to the unsw/common directory.
The [PDF] 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 [PDF] Introduction to Komodo has been updated slightly: the word “emulator” has been replaced with “simulator”.
A new document, the [PDF] 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 [PDF] 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 [List] 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

Version 1.1 of the Companion CD-ROM was released on 27th March, 2003 by John Zaitseff. The following changes were made:

[PDF] 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 [List] 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.
[PDF] 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 [List] 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.
[PDF] 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 [List] 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.
[PDF] 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 [PDF] Cover/Title pages for the ELEC2041 Microprocessors and Interfacing Experiments has been updated.
The [PDF] 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 [List] 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 [List] 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

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.