User:Mxberner

From REU@MU
Jump to: navigation, search

Max Berner

Marquette REU Summer 2022

Advisor: Dr. Brylow

Summer 2022 Project: https://reu.cs.mu.edu/index.php/Porting_Embedded_XINU_to_Virgil

Weekly Logs

Week 1 (05/31/22 - 06/05/22)

  • Met the cohort, mentor, and research group.
  • Reviewed potential subjects of research
 - Updating Exploring CS curriculum
 - Porting Embedded XINU to Virgil Programming Language
 - Porting Embedded XINU to RISC-V Architecture
  • Researched RISC-V as a potential processor to port OS Xinu over to.
 - RISC-V is most applicable for small devices with it's energy conservation and great performance for strictly simple tasks.
 - RISC refers to Reduced Instruction Set Computer
 - Advantage: Open-Source license that does not require fees to use
 - Advantage: Creating a custom chip is easier
 - Advantage: Base module is extremely limited, allowing customization/optimization.
 - Advantage: Power efficient, magnitudes less energy than CISC models. 
 - Disadvantage: Not many purchasable, brand-name RISC-V processors available. 
 - Disadvantage: With only simple instructions available, complex tasks are slower.
  • Conducted personal research into single-board computers, hardware architecture, and assembly language to contextualize my research of RISC-V.
  • Completed online RCR training modules through CITI program
  • Began research into Virgil

Week 2 (06/06/22 - 06/12/22)

  • Completed in-person RCR training
  • Created wiki page for Porting Embedded XINU to Virgil Programming Language.
  • Began contextual research into porting and operating systems.
  • Attended technical writing presentation
  • Installed and set-up Debian, a Linux environment on my Windows computer through WSL. (Required since Virgil does not compile to Windows)
  • Executed a "Hello World!" written in Virgil on Debian
  • Established remote connection to @morbius.mscs.mu.edu.
  • Cloned Embedded Xinu and Virgil repositories to morbius.

Week 3 (06/13/22 - 06/19/22)

  • Disassembled Virgil code to study assembly code behind it.
  • Determined all system calls Virgil uses.
  • Researched all system calls that Embedded Xinu provides.
  • Attended Dr. Praveen's research presentation.
  • Read Tanenbaum Modern Operating Systems
  • Read about Dr. Brylows Operating Systems course at Marquette.

Week 4 (06/20/22 - 06/26/22)

  • Started plan to get Virgil to compile/execute to Embedded Xinu.
  • Researched function behind Virgil's primary system calls.
  • Background reading on compilers.
  • Background reading on Embedded Xinu.
  • Background reading on operating systems.
  • Attended faculty research meeting.

Week 5 (06/27/22 - 07/03/22)

  • Attended presentation on giving a quality technical presentation
  • Conducted research on ELF-x86 executables.
  • Created presentation for achievement halfway through the REU
  • Presented the presentation.
  • Continued research on cross-compilers and native executables.

Week 6 (07/04/22 - 07/10/22)

  • Installed Qemu and ran Xv6 on it.
  • Researched ELF-loaders for multiple OS and architectures including Apple, Xv6, and smaller operating systems.
  • Researched the format for ELF object files and how to interpret the data.
  • Familiarized myself with Embedded Xinu. Tinkered with the developing RISC-V version, the MIPS version, and the ARM (hardware) version.

Week 7 (07/10/22 - 07/17/22)

  • Started development of an elf-loader
- Created an elfhdr struct for storing relevant information of ELF object file
- Began writing a C program that can read an ELF file for input and store into elfhdr struct
- Began writing a program to mimic Linux readelf.

Week 8 (07/17/22 - 07/24/22)

  • Formatted output for readelf program to match Linux output
  • Researched data types for storing raw byte information (uchar, uint, ushort, ulong, etc.)
  • Finalized elfhdr for ELF loader for 64-bit programs.
  • Updated readelf program to extract Magic number, Class, Data, and Version.
  • Updated readelf program to protect against bad data and non-ELF files
  • Updated readelf program to extract ABI, type, machine, and version.
  • Attended meeting on creating effective posters.
  • Began creating final paper for project.
  • Began creating poster for project.

Week 9 (07/24/22 - 07/31/22)

  • Attended talk on attending graduate school.
  • Began locating program header and section header information.
  • Finalized readelf program
- Protected against unsupported file types (32-bit, big endian). Support will be added later when necessary.
- Converted output to human readable information
- Extracted entry address for program header table and section header table
- Extracted program entry size and number of entries
- Extracted section entry size and number of entries
- Stress-tested program for any errors
  • Began reading about next steps to finalize ELF-loader now that all relevant information is properly extracted and stored.
  • Finished poster on research this summer.
  • Began work on final presentation.

Week 10 (07/31/22 - 08/05/22)

  • Further reading on finalizing ELF-loader
  • Finished final presentation on work.
  • Gave final presentation.
  • Presented poster at Marquette Engineering Hall.
  • Finished research paper on progress made this summer.

More Information

For more information, including the final poster, please visit: Porting Embedded XINU to Virgil Programming Language