1 / 16

Lego RCX Assembler and a Case Study

Lego RCX Assembler and a Case Study. Luis Paris Dept. of Computer Science University of Mississippi. Java C, C++, Pascal Forth MindScript, NQC, Lego ASM. TinyVM, leJOS brickOS pbForth Standard Lego RCX. Supported Languages/Firmwares. Language. Firmware. RCX Internals.

elina
Download Presentation

Lego RCX Assembler and a Case Study

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Lego RCX Assembler and a Case Study Luis Paris Dept. of Computer Science University of Mississippi

  2. Java C, C++, Pascal Forth MindScript, NQC, Lego ASM TinyVM, leJOS brickOS pbForth Standard Lego RCX Supported Languages/Firmwares Language Firmware

  3. RCX Internals • Hitachi H8 microcontroller • On-chip 16K ROM • External 32K RAM • I/O devices • Three motor ports • Three sensor ports • IR communications port

  4. RCX Virtual Machine • Implemented by the Lego RCX firmware • Virtual Machine Characteristics • Byte Code Interpreter • Sources and values • Byte Code Command Set

  5. Case Study: Lego RCX Assembler • Motivation • Project for CSCI-450 Programming Languages • Lego Assembler hides output object file • Result: Byte code nor object format can’t be studied • Does not support definition list • Result: Programs hard to read and maintain • Project: Create a Lego RCX Assembler • More robust • Runs standalone

  6. Solution Strategy • Two stages: • Lexical/Syntax analysis (Parsing) • Finite State Machine • Library functions (scanf, string.tokenizer) • Code generation (one-to-one) • No one-to-many semantic analysis (as in compilers) • Mnemonic to Opcode conversion • Parameters to Byte Code conversion

  7. Which language C/C++ or Java? • Java is a powerful OOP language but…not really suitable for system programming • No bit-fields support • No operator overloading • Both C/C++ support bit-fields • However, C++ has unnecessary, confusing features (multiple inheritance)

  8. Bit-fields • After parsing ASM command “out 6, 23”: • Variables contain: instr = “out”; param1 = 6; param2 = 23 • Problem: encode “out param1, param2” into above data structure • C/C++ can declare P1 and P2 as bit-fields as follows: • Java can NOT declare bit-fields so it must merge P1 and P2: • Therefore, Java programmer must perform bit shifting and masking operations;whereas the C/C++ compiler does it for us. then do: then do:

  9. Part 2: A Lego RCX pathfinderin Assembler using ScriptEd

  10. PreLab Instructions Part 1: • Click StartRun • Type \\luis\lego\ • Move “workshop” folder to your “desktop” • Close \\luis\lego\ folder Part 2: • Open “workshop” folder in your desktop • Install “LEGOMindstormsSDK25.exe” • Install “bricxcc_setup_3377.exe” (if not installed) • Download Lego RCX Firmware (if not installed)

  11. Open the ScriptEd application • Click StartLEGO SoftwareAll ProgramsMindStorms SDKToolsScriptEd • On the ScriptEd application,Click OpenPort • Select your Tower Port (COM1, or USB1) • On the toolbar select LASM (2nd combo box)

  12. Download “pathfind.asm” file to RCX Part 1: • On the ScriptEd application,Click FileOpen • Browse to “workshop” folder • In File name, type *.asm (instead of *.rcx2) • Select “pathfind.asm” and open it Part 2: • Click on ScriptDownload • Test your RCX

  13. Part 3: A Lego RCX pathfinderin NQC using BricxCC

  14. Open the BricxCC application • Click StartAll ProgramsBricx Command CenterBricx Command Center • On the “Searching for the Brick” window,Select your Tower Port (COM1, or USB1)

  15. Compile & Download “pathfind.nqc” Part 1: • On the BricxCC application,Click FileOpen • Browse to “workshop” folder • Select “pathfind.nqc” and open it Part 2: • Click on CompileDownload • Test your RCX

  16. References • The Bricx Command Center (BricxCC)http://bricxcc.sourceforge.net/ • The Lego Mindstorms SDK 2.5 (ScriptEd)http://mindstorms.lego.com/eng/community/resources/

More Related