jb302@37: #LyX 2.0 created this file. For more info see http://www.lyx.org/ jb302@37: \lyxformat 413 jb302@37: \begin_document jb302@37: \begin_header jb302@37: \textclass article jb302@37: \use_default_options true jb302@37: \maintain_unincluded_children false jb302@37: \language english jb302@37: \language_package default jb302@37: \inputencoding auto jb302@37: \fontencoding global jb302@37: \font_roman default jb302@37: \font_sans default jb302@37: \font_typewriter default jb302@37: \font_default_family default jb302@37: \use_non_tex_fonts false jb302@37: \font_sc false jb302@37: \font_osf false jb302@37: \font_sf_scale 100 jb302@37: \font_tt_scale 100 jb302@37: jb302@37: \graphics default jb302@37: \default_output_format default jb302@37: \output_sync 0 jb302@37: \bibtex_command default jb302@37: \index_command default jb302@37: \paperfontsize default jb302@37: \use_hyperref false jb302@37: \papersize default jb302@37: \use_geometry false jb302@37: \use_amsmath 1 jb302@37: \use_esint 1 jb302@37: \use_mhchem 1 jb302@37: \use_mathdots 1 jb302@37: \cite_engine basic jb302@37: \use_bibtopic false jb302@37: \use_indices false jb302@37: \paperorientation portrait jb302@37: \suppress_date false jb302@37: \use_refstyle 1 jb302@37: \index Index jb302@37: \shortcut idx jb302@37: \color #008000 jb302@37: \end_index jb302@37: \secnumdepth 3 jb302@37: \tocdepth 3 jb302@37: \paragraph_separation indent jb302@37: \paragraph_indentation default jb302@37: \quotes_language english jb302@37: \papercolumns 1 jb302@37: \papersides 1 jb302@37: \paperpagestyle default jb302@37: \tracking_changes false jb302@37: \output_changes false jb302@37: \html_math_output 0 jb302@37: \html_css_as_file 0 jb302@37: \html_be_strict false jb302@37: \end_header jb302@37: jb302@37: \begin_body jb302@37: jb302@37: \begin_layout Part jb302@37: Introduction jb302@37: \end_layout jb302@37: jb302@37: \begin_layout Section jb302@37: Motivations jb302@37: \end_layout jb302@37: jb302@37: \begin_layout Standard jb302@42: The ELB816 architecture [1] is designed to be a jb302@37: \begin_inset Quotes eld jb302@37: \end_inset jb302@37: jb302@37: simple to understand 8-bit microprocessor system to help learn about micro-proce jb302@37: ssor electronics. jb302@37: \begin_inset Quotes erd jb302@37: \end_inset jb302@37: jb302@37: . jb302@37: The combination of an ELB816 emulator, debugger and assembler could be jb302@37: used as a set of tools for learning or teaching micro-processor programming jb302@40: without the intricacies of real-world commercial micro-processors getting jb302@37: in the way of a fundamental understanding of the subject. jb302@37: A PC based emulator would allow students to quickly develop and debug programs jb302@37: written in a simple assembly language on any modern desktop or laptop, jb302@37: and an MCS-51 port running on an 8052 would allow students to test programs jb302@37: in an actual circuit. jb302@37: EDE aims to bring together these components in order to provide an environment jb302@37: for using ELB816 as an educational tool. jb302@37: \end_layout jb302@37: jb302@37: \begin_layout Section jb302@37: Project Aims jb302@37: \end_layout jb302@37: jb302@37: \begin_layout Itemize jb302@37: Develop an assembler for the ELB816 assembly language. jb302@37: \end_layout jb302@37: jb302@37: \begin_layout Itemize jb302@37: Develop an emulated programmable micro-controller system based on the ELB816 jb302@37: micro-processor architecture. jb302@37: \end_layout jb302@37: jb302@37: \begin_layout Itemize jb302@37: Develop a debugger that allows interactive debugging of programs running jb302@37: on the emulator. jb302@37: \end_layout jb302@37: jb302@37: \begin_layout Section jb302@37: Methodology jb302@37: \end_layout jb302@37: jb302@37: \begin_layout Subsection jb302@37: Assembler jb302@37: \end_layout jb302@37: jb302@37: \begin_layout Description jb302@37: Language: Python jb302@37: \end_layout jb302@37: jb302@37: \begin_layout Description jb302@37: Priority: First jb302@37: \end_layout jb302@37: jb302@37: \begin_layout Standard jb302@37: The assembler will be developed before anything else so that it can subsequently jb302@37: be used to assemble test programs during development of the emulator. jb302@37: jb302@37: \end_layout jb302@37: jb302@37: \begin_layout Subsection jb302@37: Emulator jb302@37: \end_layout jb302@37: jb302@37: \begin_layout Description jb302@37: Language: C jb302@37: \end_layout jb302@37: jb302@37: \begin_layout Description jb302@37: Priority: Second jb302@37: \end_layout jb302@37: jb302@37: \begin_layout Standard jb302@37: The emulator will use only standard libraries in order to ensure it is portable jb302@37: between compilers and platforms. jb302@37: Specifically GCC for x86 and Keil C51 for Intel MCS-51. jb302@37: The emulator will first be developed on Linux to facilitated rapid development. jb302@37: It will be ported to MCS-51 once it is complete jb302@37: \end_layout jb302@37: jb302@37: \begin_layout Subsection jb302@37: Debugger jb302@37: \end_layout jb302@37: jb302@37: \begin_layout Description jb302@37: Language: C/Python jb302@37: \end_layout jb302@37: jb302@37: \begin_layout Description jb302@37: Priority: Second jb302@37: \end_layout jb302@37: jb302@37: \begin_layout Standard jb302@37: The debug interface will be developed along side the emulator. jb302@37: It will communicate with a a simple control function, built into the emulator, jb302@37: that will read commands using C's jb302@37: \begin_inset listings jb302@37: lstparams "basicstyle={\ttfamily}" jb302@37: inline true jb302@37: status open jb302@37: jb302@37: \begin_layout Plain Layout jb302@37: jb302@37: stdio.h jb302@37: \end_layout jb302@37: jb302@37: \end_inset jb302@37: jb302@37: library. jb302@37: This means that on Linux the commands will be issued using jb302@37: \begin_inset listings jb302@37: lstparams "basicstyle={\ttfamily}" jb302@37: inline true jb302@37: status open jb302@37: jb302@37: \begin_layout Plain Layout jb302@37: jb302@37: STDIN jb302@37: \end_layout jb302@37: jb302@37: \end_inset jb302@37: jb302@37: and on the MCS-51 version they will be issued over a serial interface. jb302@37: Python will be used to build a controller class for sending commands to jb302@37: and receiving data from the emulator. jb302@37: Python will also be used to build a text based user interface on top of jb302@37: this. jb302@37: \end_layout jb302@37: jb302@37: \end_body jb302@37: \end_document