Fall 2008: EE 382N-4   Unique: 17228a

Advanced Embedded Systems Architecture

Lab Assignment #1: Due Oct 5th, 2008

 

TASK: Write an ARM assembly language program (ALP) implementation of a memory test and run 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 address while

b) Randomly varying the data. Use an LFSR to generate the address and data patterns. Recall that an LFSR cannot generate the "zero" value.

c) Randomly vary the write -> read-back/validate timing so that the memory has time lose state.

2) The test needs to be able to run in DRAM memory and dynamically relocate itself during testing. This means that not all of memory can be tested at once. You should relocate your code

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

 

Environment Setup:

a) Linux Machines

These machines are: 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 Linux 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 a LRC proctor.

b) Disk space:

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

%> cd /scratch

%> 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 using ARM ADS tools:

a) Compiling the assembly language program

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

b) Running the program in arm emulator

%> armsd

armsd: load <executable>

armsd: go

armsd: quit

 

Collateral:

1.     TLL6219 User Guide

2.     uMON user manual

3.     ARM assembly language guide

4.     Introduction to the GNU Assembler

5.     ARMSD Documentation

6.     ARMCC Documentation

 

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