Spring 2009: EE 382N-4   Unique: 16695

Advanced Embedded Systems Architecture

Lab Assignment #1: Due March 13, 2009

 

TASK: Write an ARM assembly language program (ALP) implementation of a memory test and execute it on the ARM emulator.

 

 

Specification:

1) Write a memory test that does a pseudo random address and data test of the DRAM memory.

a) Randomly vary the data while randomly varying the address. Use a linear feedback shift register (LFSR) to generate the address and the data patterns. Recall that an LFSR cannot generate the "zero" value.

b) Randomly vary the (write -> read-back/validate) timing so that the memory has the time to loose its state. In other words, the time between the write and the corresponding read should also vary randomly.

 

2) The test should be run in DRAM memory and dynamically relocate itself during testing. This means that not all of the memory locations can be tested at once. You should relocate your code. The key point to note here is that the instructions should not refer to absolute addresses. Using relative addressing makes the program run anywhere without any modification and also relocatable.

 

3) The program needs to test DRAM memory that is 8 times the code size (modulo 2), i.e., if the code size is 1Kbytes, then the program needs to test 8192 bytes.

 

Environment Setup:

a) Linux Machines

Machine id: soc1.ece.utexas.edu, soc2.ece.utexas.edu & soc3.ece.utexas.edu.

You will need to use Secure Shell to access these machines. Execute the following command to access soc1:

 ssh –X –Y soc1.ece.utexas.edu

The options allow remote X-Windows viewing. Substitute machine number to reach the other 3 machines

                                    If you do not have an ECE account, check with an LRC proctor.

            b) Disk space:

Please use the /scratch directory on the ece machines as your workspace. The scratch directory will never be wiped out. Execute the following commands:

%> cd /scratch

                          If you do not have your directory,

%> mkdir <your id>

                c) ARM compiler & linker

C Shell (csh or tcsh) - execute the following commands:

%> source /usr/local/packages/coware/arm/lrc_asetup.csh

%> source /usr/local/packages/coware/arm/env_linux.csh

Bash Shell (bash) - execute the following commands:

%> source /usr/local/packages/coware/arm/lrc_asetup.bash

%> source /usr/local/packages/coware/arm/env_linux.sh

 

 

Compiling and running programs using the ARM ADS tools:

a) Compiling the assembly language program

                          %> armcc -o <executable> <assembly_file>.s

                                   

b) Running the program in the arm emulator

%> armsd

armsd: load <executable>

armsd: go

armsd: quit

 

 

Collateral:

1.      TLL6219 User Guide

2.      uMON user manual

3.      ARM assembly language guide ; has a lot of example programs, almost every example uses relative addressing

4.      Introduction to the GNU Assembler

5.      ARMSD Documentation

6.      ARMCC Documentation

 

 

Deliverables:

1.      Submit a well-commented version of your assembly program to the blackboard

2.      Describe your LFSR

3.      Comment on the coverage of your LFSR. How do you know that all memory locations have been tested?

 

 

Addtional references:

http://www.heyrick.co.uk/assembler/index.html#01

http://www.coranac.com/tonc/text/asm.htm

http://nocash.emubase.de/gbatek.htm#arminstructionset

http://www.cse.unsw.edu.au/~cs3221/labs/assembler-intro.pdf