Index of /~squier/Teaching/HardwareFundamentals/LC3-trunk

[ICO]NameLast modifiedSizeDescription

[PARENTDIR]Parent Directory   -  
[DIR]docs/ 2011-12-09 07:34 -  
[DIR]examples/ 2011-12-09 07:14 -  
[DIR]lib/ 2011-12-09 07:14 -  
[DIR]run/ 2011-12-09 07:14 -  
[DIR]src/ 2011-12-09 07:14 -  

lc3/README.html

Introduction

This is a project development tree for the LC3 micro-architecture. The philosophy is to try to keep things as simple as possible and as pedagogically obvious as possible. This version of the LC3 uArchitecture adhere's closely to that found in the 2nd edition of Patt & Patel's textbook, "Introduction to Computing Systems". (But see "LC3-Architecture-Modifications.html".) It also includes interrupt processing and a keyboard device simulation that connects to the simulating system's physical console keyboard. The design is embodied as a combination of logic circuits and verilog code. For simulation, the entire design is compiled to a single verilog source code file, the verilog code is compiled, and then run. LC3 machine code instructions are read into the simulated memory during simulation from text files containing plain text representations of LC3 machine code. These text files can be generated from assembly language source code, or edited by hand. Machine code can also be entered into memory directly in the verilog testbench code.

This directory is meant to be as self-contained as possible. This includes documentation for all tools needed, and executables and source code for most needed tools. Also included is LC3 documentation: LC3 design details, such as Patt & Patel's Appendix C, LC3 assembly language manuals, and so forth. All tools needed are freely available online from various sources. References are included in the documentation.

The working environment.

The general workflow is as follows:

The directory containing this README.html file is set up as if it were a working copy of a Subversion repository's source of your home branch directory. You will want to replicate it structure in your own branch ("svn copy" this into your branch). Some things should be under version control in your branch, and others should not. You may choose to include some temporary files in your repository branch for convenience sake: A working copy of your branch can be deleted at anytime and restored from the Subversion repository at any other location, even another machine. There are several subdirectories:

NB--There are THREE types of copy operations.

As I am constantly revising the documentation, you will find it convenient to checkout to your working copy directories such as docs or src. That way, you can "svn update" your working copy and receive any changes I make. However, do not "svn add" these into your branch as this will create a completely disconnected subtree, defeating the purpose of having a checked out copy.

SVN and ignore

When checking in or checking for modifications it is confusing, or even worse, to see all the temporary files and those directories you have checked-out but which are not part of your repository branch. The "svn:ignore" property tells svn which names it should ignore when doing "svn status" or "svn ci", for instance. HOWEVER, if you "svn add" something, it will not be ignored.

Use "svn propedit" or "svn propset" to set up file name patterns to be ignored. (See "svn proplist --verbose" to see current property values.) Use

svn propedit svn:ignore .

for instance, to change the ignore patterns on the current "." directory. This will open an editing session. You can put one pattern per text line. The only regular expression operator available is the wild card "*".

Both TortoiseSVN and commandline svn provide global file patterns for ignoring files and directories. Commandline svn global ignore is in ~/.subversion/config. ( %APPDATA%/Subversion/config in Windows?) There is an example line in that config file:

# global-ignores = *.o *.lo *.la #*# .*.rej *.rej .*~ *~ .#* .DS_Store.

that you can uncomment and edit. TortoiseSVN has a global ignore pattern line just like the above (see Settings).

Here is a handy(?) technique,

svn propset -R svn:ignore -F MySVNingoreList.txt MYDIR

"-R" changes the properties on all directories below and including MYDIR. "-F" reads the text file argument containing name patterns to ignore, one pattern per line. NB--This clobbers whatever patterns were already there. Also, you have to rerun this whenever you create a new subdirectory.

Subversion Documentation:

See docs/README-Subversion.html

http://svnbook.red-bean.com/en/1.1/ch07s02.html

http://www.mpi-inf.mpg.de/~hitoshi/otherprojects/tips/svn-e.html

http://dancingpenguinsoflight.com/2009/01/recursively-ignoring-multiple-file-patterns-in-subversion/