Difference between revisions of "User:Pmcg521"

From REU@MU
Jump to: navigation, search
Line 43: Line 43:
 
<tr><td> Drew diagrams of the boot sequence and compilation for better understanding of the Pi 3's mechanisms</td></tr>
 
<tr><td> Drew diagrams of the boot sequence and compilation for better understanding of the Pi 3's mechanisms</td></tr>
 
<tr><td> Traced through the dynamics of written Assembly code in the full research version of Xinu</td></tr>
 
<tr><td> Traced through the dynamics of written Assembly code in the full research version of Xinu</td></tr>
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 2: June 5-9'''</th></tr>
+
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000; background: #edb52a">'''Week 2: June 5-9'''</th></tr>
 
<tr><td> Tested the LED program in updated Assembly code. Began testing the Serial Port Transceiver driver for the Pi 3</td></tr>
 
<tr><td> Tested the LED program in updated Assembly code. Began testing the Serial Port Transceiver driver for the Pi 3</td></tr>
 
<tr><td> Read about Raspberry Pi bare metal programming via online sources</td></tr>
 
<tr><td> Read about Raspberry Pi bare metal programming via online sources</td></tr>
Line 49: Line 49:
 
<tr><td> Read ARM processor documentation about configuring UART clock frequency</td></tr>
 
<tr><td> Read ARM processor documentation about configuring UART clock frequency</td></tr>
 
<tr><td> Used the oscilloscope in attempt to obtain the clock frequency of the UART pin</td></tr>
 
<tr><td> Used the oscilloscope in attempt to obtain the clock frequency of the UART pin</td></tr>
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 3: June 12-16'''</th></tr>
+
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000; background: #edb52a">'''Week 3: June 12-16'''</th></tr>
 
<tr><td> Read an online textbook about the ARM processor of the Pi 3. </td></tr>
 
<tr><td> Read an online textbook about the ARM processor of the Pi 3. </td></tr>
 
<tr><td> Successfully controlled the PL011 UART with a 48MHz frequency. Began porting full version of Xinu.</td></tr>
 
<tr><td> Successfully controlled the PL011 UART with a 48MHz frequency. Began porting full version of Xinu.</td></tr>
Line 55: Line 55:
 
<tr><td> Began working on the context switch for the 64-bit architecture.</td></tr>
 
<tr><td> Began working on the context switch for the 64-bit architecture.</td></tr>
 
<tr><td> Finishing work on the files necessary for context switching and rescheduling.</td></tr>
 
<tr><td> Finishing work on the files necessary for context switching and rescheduling.</td></tr>
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 4: June 19-23'''</th></tr>
+
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000; background: #edb52a">'''Week 4: June 19-23'''</th></tr>
 
<tr><td> Continue working on the boot functions of our implementation. Finished the Research Conduct course.</td></tr>
 
<tr><td> Continue working on the boot functions of our implementation. Finished the Research Conduct course.</td></tr>
 
<tr><td> Read about register manipulation in the ARM guide. Continue working on process creation.</td></tr>
 
<tr><td> Read about register manipulation in the ARM guide. Continue working on process creation.</td></tr>
Line 61: Line 61:
 
<tr><td> Read guides to porting from ARM32 to ARM64. Digging deep for a solution to a memory allocation problem.</td></tr>
 
<tr><td> Read guides to porting from ARM32 to ARM64. Digging deep for a solution to a memory allocation problem.</td></tr>
 
<tr><td> Read about ATAGS and what steps need to be taken to ensure the proper accessible RAM amount.</td></tr>
 
<tr><td> Read about ATAGS and what steps need to be taken to ensure the proper accessible RAM amount.</td></tr>
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 5: June 26-30'''</th></tr>
+
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000; background: #edb52a">'''Week 5: June 26-30'''</th></tr>
 
<tr><td> Narrowed down the memory issue to an Aarch64-specific register-load requirement. Working on the fix.</td></tr>
 
<tr><td> Narrowed down the memory issue to an Aarch64-specific register-load requirement. Working on the fix.</td></tr>
 
<tr><td> Fixed memory issue - now allocating nearly all available memory.</td></tr>
 
<tr><td> Fixed memory issue - now allocating nearly all available memory.</td></tr>
Line 67: Line 67:
 
<tr><td> Began formulating research poster. Working on process queue structure.</td></tr>
 
<tr><td> Began formulating research poster. Working on process queue structure.</td></tr>
 
<tr><td> Continue outlining research paper for submission to EWiLi Embedded Systems conference.</td></tr>
 
<tr><td> Continue outlining research paper for submission to EWiLi Embedded Systems conference.</td></tr>
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 6: July 3-7'''</th></tr>
+
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000; background: #edb52a">'''Week 6: July 3-7'''</th></tr>
 
<tr><td> Major change of working state: switch from 64-bit to 32-bit for compatibility and teachability reasons.</td></tr>
 
<tr><td> Major change of working state: switch from 64-bit to 32-bit for compatibility and teachability reasons.</td></tr>
 
<tr><td> Migrating all code from non-working 64-bit to working 32-bit.</td></tr>
 
<tr><td> Migrating all code from non-working 64-bit to working 32-bit.</td></tr>
 
<tr><td> Processes create and context switch among one core. Push to resolve multiple cores.</td></tr>
 
<tr><td> Processes create and context switch among one core. Push to resolve multiple cores.</td></tr>
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 7: July 10-14'''</th></tr>
+
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000; background: #edb52a">'''Week 7: July 10-14'''</th></tr>
 
<tr><td> Expanding startup code to include change in privilege level.</td></tr>
 
<tr><td> Expanding startup code to include change in privilege level.</td></tr>
 
<tr><td> Finished outlining poster. Tested ethernet driver and multiple core threading throughout the week.</td></tr>
 
<tr><td> Finished outlining poster. Tested ethernet driver and multiple core threading throughout the week.</td></tr>
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 8: July 17-21'''</th></tr>
+
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000; background: #edb52a">'''Week 8: July 17-21'''</th></tr>
 
<tr><td> Studied simple Linux-style multi-core scheduling algorithms using mutual exclusion.</td></tr>
 
<tr><td> Studied simple Linux-style multi-core scheduling algorithms using mutual exclusion.</td></tr>
 
<tr><td> Created a method of scheduling across multiple cores with Xinu.</td></tr>
 
<tr><td> Created a method of scheduling across multiple cores with Xinu.</td></tr>
 
<tr><td> Tested multicore synchronization with atomic instructions.</td></tr>
 
<tr><td> Tested multicore synchronization with atomic instructions.</td></tr>
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 9: July 24-28'''</th></tr>
+
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000; background: #edb52a">'''Week 9: July 24-28'''</th></tr>
 
<tr><td> Studied technical documentation on how Raspberry Pi CPU mailboxes have worked in the past.</td></tr>
 
<tr><td> Studied technical documentation on how Raspberry Pi CPU mailboxes have worked in the past.</td></tr>
 
<tr><td> Test core mailboxes and work out kinks corresponding to core setup.</td></tr>
 
<tr><td> Test core mailboxes and work out kinks corresponding to core setup.</td></tr>
 
<tr><td> Finished final version of research poster: Utilizing Multi-core threading on Embedded Xinu.</td></tr>
 
<tr><td> Finished final version of research poster: Utilizing Multi-core threading on Embedded Xinu.</td></tr>
 
<tr><td> Finished research paper and submitted it to EWiLi conference.</td></tr>
 
<tr><td> Finished research paper and submitted it to EWiLi conference.</td></tr>
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 10: July 31-August 4'''</th></tr>
+
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000; background: #edb52a">'''Week 10: July 31-August 4'''</th></tr>
 
<tr><td> Expanded material of final presentation.</td></tr>
 
<tr><td> Expanded material of final presentation.</td></tr>
 
<tr><td> Presented my research poster alongside colleagues. Viewed and discussed posters outside my discipline.</td></tr>
 
<tr><td> Presented my research poster alongside colleagues. Viewed and discussed posters outside my discipline.</td></tr>

Revision as of 19:49, 7 August 2017

Patrick J. McGee

Patrick pro pic png.png
Personal Information
Incoming Junior | Computer Science Major at Marquette
Working with Dr. Dennis Brylow on the concept of Embedded Systems (Upgrading Embedded Xinu for the Multi-Core Raspberry Pi 3)
Upsilon Pi Epsilon member
ACM At-Large Member
President of Best Buddies Marquette Chapter

Logs

All specific progress concerning code can be viewed on our GitHub repository (commits across multiple branches).

Week 1: May 30-June 2
Began attempts to boot the full version of Embedded Xinu kernel with Raspberry Pi 3
Researched a Linaro Cross-Compiler to use for its Cortex A-53 ARM processor with ARMv8 architecture
Drew diagrams of the boot sequence and compilation for better understanding of the Pi 3's mechanisms
Traced through the dynamics of written Assembly code in the full research version of Xinu
Week 2: June 5-9
Tested the LED program in updated Assembly code. Began testing the Serial Port Transceiver driver for the Pi 3
Read about Raspberry Pi bare metal programming via online sources
Read about how the Raspberry Pi 3 controls the frequency of its UART pins
Read ARM processor documentation about configuring UART clock frequency
Used the oscilloscope in attempt to obtain the clock frequency of the UART pin
Week 3: June 12-16
Read an online textbook about the ARM processor of the Pi 3.
Successfully controlled the PL011 UART with a 48MHz frequency. Began porting full version of Xinu.
Read ARM64 documentation on registers to use with process interrupt handling.
Began working on the context switch for the 64-bit architecture.
Finishing work on the files necessary for context switching and rescheduling.
Week 4: June 19-23
Continue working on the boot functions of our implementation. Finished the Research Conduct course.
Read about register manipulation in the ARM guide. Continue working on process creation.
Begin researching physical memory space in the Pi 3.
Read guides to porting from ARM32 to ARM64. Digging deep for a solution to a memory allocation problem.
Read about ATAGS and what steps need to be taken to ensure the proper accessible RAM amount.
Week 5: June 26-30
Narrowed down the memory issue to an Aarch64-specific register-load requirement. Working on the fix.
Fixed memory issue - now allocating nearly all available memory.
Presentation by Dr. Kim Factor on tips to create a good research poster.
Began formulating research poster. Working on process queue structure.
Continue outlining research paper for submission to EWiLi Embedded Systems conference.
Week 6: July 3-7
Major change of working state: switch from 64-bit to 32-bit for compatibility and teachability reasons.
Migrating all code from non-working 64-bit to working 32-bit.
Processes create and context switch among one core. Push to resolve multiple cores.
Week 7: July 10-14
Expanding startup code to include change in privilege level.
Finished outlining poster. Tested ethernet driver and multiple core threading throughout the week.
Week 8: July 17-21
Studied simple Linux-style multi-core scheduling algorithms using mutual exclusion.
Created a method of scheduling across multiple cores with Xinu.
Tested multicore synchronization with atomic instructions.
Week 9: July 24-28
Studied technical documentation on how Raspberry Pi CPU mailboxes have worked in the past.
Test core mailboxes and work out kinks corresponding to core setup.
Finished final version of research poster: Utilizing Multi-core threading on Embedded Xinu.
Finished research paper and submitted it to EWiLi conference.
Week 10: July 31-August 4
Expanded material of final presentation.
Presented my research poster alongside colleagues. Viewed and discussed posters outside my discipline.
Watched my fellow researchers' presentations and continued making notes of guidelines.
Gave my final formal research presentation on the final day of the REU.