Marquette REU Summer 2022
Advisor: Dr. Brylow
Summer 2022 Project: https://reu.cs.mu.edu/index.php/Porting_Embedded_XINU_to_Virgil
- 1 Weekly Logs
- 1.1 Week 1 (05/31/22 - 06/05/22)
- 1.2 Week 2 (06/06/22 - 06/12/22)
- 1.3 Week 3 (06/13/22 - 06/19/22)
- 1.4 Week 4 (06/20/22 - 06/26/22)
- 1.5 Week 5 (06/27/22 - 07/03/22)
- 1.6 Week 6 (07/04/22 - 07/10/22)
- 1.7 Week 7 (07/10/22 - 07/17/22)
- 1.8 Week 8 (07/17/22 - 07/24/22)
- 1.9 Week 9 (07/24/22 - 07/31/22)
- 1.10 Week 10 (07/31/22 - 08/05/22)
- 2 More Information
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.
For more information, including the final poster, please visit: Porting Embedded XINU to Virgil Programming Language