https://reu.cs.mu.edu/api.php?action=feedcontributions&user=Pmcg521&feedformat=atomREU@MU - User contributions [en]2024-03-29T01:11:40ZUser contributionsMediaWiki 1.23.13https://reu.cs.mu.edu/index.php/User:Pmcg521User:Pmcg5212019-07-22T20:44:40Z<p>Pmcg521: /* Logs */</p>
<hr />
<div>==Patrick J. McGee==<br />
<table style= "border: 40px solid #212B60; background: #edb52a;-webkit-border-radius:10px cellpadding=2px"><br />
<tr><br />
<td>[[File:Patrick_pro_pic_png.png]]</td><br />
<br />
<td><br />
<br />
<table style= "border: 1px solid black; font-family:tahoma; background: #fffced;" cellpadding=15px><br />
<tr><br />
<th style="font-family:verdana; border-bottom: 1px solid #000000">''' Personal Information'''</th><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> Graduate Student | Computer Science Department at Marquette</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> Working with [[User:Brylow|Dr. Dennis Brylow]] on the Embedded Xinu O/S: ([http://reu.mscs.mu.edu/index.php/Upgrading_Embedded_Xinu_for_the_Multi-Core_Raspberry_Pi_3 Upgrading Embedded Xinu for the Multi-Core Raspberry Pi 3])</td><br />
</tr><br />
<br />
</table><br />
</table><br />
<br />
==Logs==<br />
<h2>REU 2019:</h2><br />
<h3>Week 1:</h3><br />
<p><br />
* Establish goals for the summer: develop Embedded Xinu's serial port, Ethernet driver, HDMI driver, keyboard driver, and USB storage driver.<br />
* Look into logistics of a formal XinuPi3 release (separate branch on our GitHub to prevent single-core assumption conflicts)<br />
* Make note of MU courses that may benefit from Xinu (possible changes necessary depending on the course)<br />
* Clean working branch of our repository to exclude unnecessary single-core platforms and #ifdef statements. Fix outstanding compiler warnings. Goal: arm-rpi3 is single platform for new "multicore" branch of formal xinu-os release.<br />
</p><br />
<h3>Week 2:</h3><br />
<p><br />
* Complete framebuffer driver port for XinuPi3.<br />
* Evaluate USB subsystem for storage device (file system capability).<br />
</p><br />
<h3>Week 3:</h3><br />
<p><br />
* Look into Power-over-Ethernet (PoE) additions for the O/S. Troubleshoot PoE-capable network switch<br />
* Begin cleaning up ethernet driver code (LAN7800)<br />
* Begin docs (Doxygen)<br />
</p><br />
<h3>Week 4:</h3><br />
<p><br />
* Begin designing cache maintenance for the kernel, so that DMA buffers will work for transfers such as USB.<br />
* Create an account for our Monday.com page (to stay organized and share progress with the team)<br />
</p><br />
<h3>Week 5:</h3><br />
<p><br />
* Continue design and assessment. Close to initializing all devices --> looking into other possible issues.<br />
* Realize that enabling L1 cache also breaks the frame buffer (as well as USB xfers)<br />
* Update our page on Monday.com<br />
</p><br />
<h3>Week 6:</h3><br />
<p><br />
* Work on Doxygen<br />
* Update our page on Monday.com<br />
</p><br />
<h3>Week 7:</h3><br />
<p><br />
* Assist team members with issues related to USB transfers and Xinu's I/O devices.<br />
* Begin documentation by fixing Doxygen structural issues<br />
</p><br />
<h3>Week 8:</h3><br />
<p><br />
* Resolve Doxygen issues, updated all documentation<br />
* Work on README updates to include Pi 3 setup required<br />
* Resolve printf() asynchronous I/O calls so the testsuite works<br />
</p><br />
<h3>Week 9:</h3><br />
<p><br />
* Merge testsuite branch into doxygen branch. Will leave doxygen branch alone until all documentation has been verified for the final release<br />
* TODO for the rest of the summer: resolve MMU cache, minor scheduler updates (putting Amy H. in charge of this), documentation, minor cleanup of system changes for multicore release.<br />
* New angle for solving MMU cache coherency: since maintenance operations are not solving our USB transfer over DMA, we will force unaligned buffers so we can use memcpy(). Then, we will keep the DMA buffer area in memory uncached (through 1MB MMU sections), and all other memory space cached. In theory, this will prevent DMA issues with USB xfers.<br />
</p><br />
<h3>Week 10:</h3><br />
<p><br />
* <br />
</p><br />
<br />
<h2>REU 2017:</h2><br />
Specific progress can be viewed on our [https://github.com/tomlazar/xinu/tree/feature/multicore GitHub] repository (commits across multiple branches).<br />
<table style="border: 70px solid #212B60; border-collapse: collapse; font-family:tahoma" bgcolor="#fffced" border=1 cellpadding=2px><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000; background: #edb52a">'''Week 1: May 30-June 2'''</th></tr><br />
<tr><td> Began attempts to boot the full version of Embedded Xinu kernel with Raspberry Pi 3</td></tr><br />
<tr><td> Researched a Linaro Cross-Compiler to use for its Cortex A-53 ARM processor with ARMv8 architecture</td></tr><br />
<tr><td> Drew diagrams of the boot sequence and compilation for better understanding of the Pi 3's mechanisms</td></tr><br />
<tr><td> Traced through the dynamics of written Assembly code in the full research version of Xinu</td></tr><br />
<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><br />
<tr><td> Tested the LED program in updated Assembly code. Began testing the Serial Port Transceiver driver for the Pi 3</td></tr><br />
<tr><td> Read about Raspberry Pi bare metal programming via online sources</td></tr><br />
<tr><td> Read about how the Raspberry Pi 3 controls the frequency of its UART pins</td></tr><br />
<tr><td> Read ARM processor documentation about configuring UART clock frequency</td></tr><br />
<tr><td> Used the oscilloscope in attempt to obtain the clock frequency of the UART pin</td></tr><br />
<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><br />
<tr><td> Read an online textbook about the ARM processor of the Pi 3. </td></tr><br />
<tr><td> Successfully controlled the PL011 UART with a 48MHz frequency. Began porting full version of Xinu.</td></tr><br />
<tr><td> Read ARM64 documentation on registers to use with process interrupt handling.</td></tr><br />
<tr><td> Began working on the context switch for the 64-bit architecture.</td></tr><br />
<tr><td> Finishing work on the files necessary for context switching and rescheduling.</td></tr><br />
<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><br />
<tr><td> Continue working on the boot functions of our implementation. Finished the Research Conduct course.</td></tr><br />
<tr><td> Read about register manipulation in the ARM guide. Continue working on process creation.</td></tr><br />
<tr><td> Begin researching physical memory space in the Pi 3.</td></tr><br />
<tr><td> Read guides to porting from ARM32 to ARM64. Digging deep for a solution to a memory allocation problem.</td></tr><br />
<tr><td> Read about ATAGS and what steps need to be taken to ensure the proper accessible RAM amount.</td></tr><br />
<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><br />
<tr><td> Narrowed down the memory issue to an Aarch64-specific register-load requirement. Working on the fix.</td></tr><br />
<tr><td> Fixed memory issue - now allocating nearly all available memory.</td></tr><br />
<tr><td> Presentation by Dr. Kim Factor on tips to create a good research poster.</td></tr><br />
<tr><td> Began formulating research poster. Working on process queue structure.</td></tr><br />
<tr><td> Continue outlining research paper for submission to EWiLi Embedded Systems conference.</td></tr><br />
<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><br />
<tr><td> Major change of working state: switch from 64-bit to 32-bit for compatibility and teachability reasons.</td></tr><br />
<tr><td> Migrating all code from non-working 64-bit to working 32-bit.</td></tr><br />
<tr><td> Processes create and context switch among one core. Push to resolve multiple cores.</td></tr><br />
<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><br />
<tr><td> Expanding startup code to include change in privilege level.</td></tr><br />
<tr><td> Finished outlining poster. Tested ethernet driver and multiple core threading throughout the week.</td></tr><br />
<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><br />
<tr><td> Studied simple Linux-style multi-core scheduling algorithms using mutual exclusion.</td></tr><br />
<tr><td> Created a method of scheduling across multiple cores with Xinu.</td></tr><br />
<tr><td> Tested multicore synchronization with atomic instructions.</td></tr><br />
<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><br />
<tr><td> Studied technical documentation on how Raspberry Pi CPU mailboxes have worked in the past.</td></tr><br />
<tr><td> Test core mailboxes and work out kinks corresponding to core setup.</td></tr><br />
<tr><td> Finished final version of research poster: Utilizing Multi-core threading on Embedded Xinu.</td></tr><br />
<tr><td> Finished research paper and submitted it to EWiLi conference.</td></tr><br />
<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><br />
<tr><td> Expanded material of final presentation.</td></tr><br />
<tr><td> Presented my research poster alongside colleagues. Viewed and discussed posters outside my discipline.</td></tr><br />
<tr><td> Watched my fellow researchers' presentations and continued making notes of guidelines.</td></tr><br />
<tr><td> Gave my final formal research presentation on the final day of the REU.</td></tr><br />
</table></div>Pmcg521https://reu.cs.mu.edu/index.php/User:Pmcg521User:Pmcg5212019-06-13T15:51:39Z<p>Pmcg521: /* Patrick J. McGee */</p>
<hr />
<div>==Patrick J. McGee==<br />
<table style= "border: 40px solid #212B60; background: #edb52a;-webkit-border-radius:10px cellpadding=2px"><br />
<tr><br />
<td>[[File:Patrick_pro_pic_png.png]]</td><br />
<br />
<td><br />
<br />
<table style= "border: 1px solid black; font-family:tahoma; background: #fffced;" cellpadding=15px><br />
<tr><br />
<th style="font-family:verdana; border-bottom: 1px solid #000000">''' Personal Information'''</th><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> Graduate Student | Computer Science Department at Marquette</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> Working with [[User:Brylow|Dr. Dennis Brylow]] on the Embedded Xinu O/S: ([http://reu.mscs.mu.edu/index.php/Upgrading_Embedded_Xinu_for_the_Multi-Core_Raspberry_Pi_3 Upgrading Embedded Xinu for the Multi-Core Raspberry Pi 3])</td><br />
</tr><br />
<br />
</table><br />
</table><br />
<br />
==Logs==<br />
<h2>REU 2019:</h2><br />
<h3>Week 1:</h3><br />
<p><br />
* Establish goals for the summer: develop Embedded Xinu's serial port, Ethernet driver, HDMI driver, keyboard driver, and USB storage driver.<br />
* Look into logistics of a formal XinuPi3 release (separate branch on our GitHub to prevent single-core assumption conflicts)<br />
* Make note of MU courses that may benefit from Xinu (possible changes necessary depending on the course)<br />
* Clean working branch of our repository to exclude unnecessary single-core platforms and #ifdef statements. Fix outstanding compiler warnings. Goal: arm-rpi3 is single platform for new "multicore" branch of formal xinu-os release.<br />
</p><br />
<h3>Week 2:</h3><br />
<p><br />
* Complete framebuffer driver port for XinuPi3.<br />
* Evaluate USB subsystem for storage device (file system capability).<br />
</p><br />
<h3>Week 3:</h3><br />
<p><br />
* Look into Power-over-Ethernet (PoE) additions for the O/S. Troubleshoot PoE-capable network switch<br />
* Begin cleaning up ethernet driver code (LAN7800)<br />
* Begin docs (Doxygen)<br />
</p><br />
<h3>Week 4:</h3><br />
<p><br />
* <br />
</p><br />
<br />
<h2>REU 2017:</h2><br />
Specific progress can be viewed on our [https://github.com/tomlazar/xinu/tree/feature/multicore GitHub] repository (commits across multiple branches).<br />
<table style="border: 70px solid #212B60; border-collapse: collapse; font-family:tahoma" bgcolor="#fffced" border=1 cellpadding=2px><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000; background: #edb52a">'''Week 1: May 30-June 2'''</th></tr><br />
<tr><td> Began attempts to boot the full version of Embedded Xinu kernel with Raspberry Pi 3</td></tr><br />
<tr><td> Researched a Linaro Cross-Compiler to use for its Cortex A-53 ARM processor with ARMv8 architecture</td></tr><br />
<tr><td> Drew diagrams of the boot sequence and compilation for better understanding of the Pi 3's mechanisms</td></tr><br />
<tr><td> Traced through the dynamics of written Assembly code in the full research version of Xinu</td></tr><br />
<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><br />
<tr><td> Tested the LED program in updated Assembly code. Began testing the Serial Port Transceiver driver for the Pi 3</td></tr><br />
<tr><td> Read about Raspberry Pi bare metal programming via online sources</td></tr><br />
<tr><td> Read about how the Raspberry Pi 3 controls the frequency of its UART pins</td></tr><br />
<tr><td> Read ARM processor documentation about configuring UART clock frequency</td></tr><br />
<tr><td> Used the oscilloscope in attempt to obtain the clock frequency of the UART pin</td></tr><br />
<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><br />
<tr><td> Read an online textbook about the ARM processor of the Pi 3. </td></tr><br />
<tr><td> Successfully controlled the PL011 UART with a 48MHz frequency. Began porting full version of Xinu.</td></tr><br />
<tr><td> Read ARM64 documentation on registers to use with process interrupt handling.</td></tr><br />
<tr><td> Began working on the context switch for the 64-bit architecture.</td></tr><br />
<tr><td> Finishing work on the files necessary for context switching and rescheduling.</td></tr><br />
<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><br />
<tr><td> Continue working on the boot functions of our implementation. Finished the Research Conduct course.</td></tr><br />
<tr><td> Read about register manipulation in the ARM guide. Continue working on process creation.</td></tr><br />
<tr><td> Begin researching physical memory space in the Pi 3.</td></tr><br />
<tr><td> Read guides to porting from ARM32 to ARM64. Digging deep for a solution to a memory allocation problem.</td></tr><br />
<tr><td> Read about ATAGS and what steps need to be taken to ensure the proper accessible RAM amount.</td></tr><br />
<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><br />
<tr><td> Narrowed down the memory issue to an Aarch64-specific register-load requirement. Working on the fix.</td></tr><br />
<tr><td> Fixed memory issue - now allocating nearly all available memory.</td></tr><br />
<tr><td> Presentation by Dr. Kim Factor on tips to create a good research poster.</td></tr><br />
<tr><td> Began formulating research poster. Working on process queue structure.</td></tr><br />
<tr><td> Continue outlining research paper for submission to EWiLi Embedded Systems conference.</td></tr><br />
<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><br />
<tr><td> Major change of working state: switch from 64-bit to 32-bit for compatibility and teachability reasons.</td></tr><br />
<tr><td> Migrating all code from non-working 64-bit to working 32-bit.</td></tr><br />
<tr><td> Processes create and context switch among one core. Push to resolve multiple cores.</td></tr><br />
<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><br />
<tr><td> Expanding startup code to include change in privilege level.</td></tr><br />
<tr><td> Finished outlining poster. Tested ethernet driver and multiple core threading throughout the week.</td></tr><br />
<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><br />
<tr><td> Studied simple Linux-style multi-core scheduling algorithms using mutual exclusion.</td></tr><br />
<tr><td> Created a method of scheduling across multiple cores with Xinu.</td></tr><br />
<tr><td> Tested multicore synchronization with atomic instructions.</td></tr><br />
<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><br />
<tr><td> Studied technical documentation on how Raspberry Pi CPU mailboxes have worked in the past.</td></tr><br />
<tr><td> Test core mailboxes and work out kinks corresponding to core setup.</td></tr><br />
<tr><td> Finished final version of research poster: Utilizing Multi-core threading on Embedded Xinu.</td></tr><br />
<tr><td> Finished research paper and submitted it to EWiLi conference.</td></tr><br />
<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><br />
<tr><td> Expanded material of final presentation.</td></tr><br />
<tr><td> Presented my research poster alongside colleagues. Viewed and discussed posters outside my discipline.</td></tr><br />
<tr><td> Watched my fellow researchers' presentations and continued making notes of guidelines.</td></tr><br />
<tr><td> Gave my final formal research presentation on the final day of the REU.</td></tr><br />
</table></div>Pmcg521https://reu.cs.mu.edu/index.php/User:Pmcg521User:Pmcg5212019-06-13T15:49:32Z<p>Pmcg521: /* Logs */</p>
<hr />
<div>==Patrick J. McGee==<br />
<table style= "border: 40px solid #212B60; background: #edb52a;-webkit-border-radius:10px cellpadding=2px"><br />
<tr><br />
<td>[[File:Patrick_pro_pic_png.png]]</td><br />
<br />
<td><br />
<br />
<table style= "border: 1px solid black; font-family:tahoma; background: #fffced;" cellpadding=15px><br />
<tr><br />
<th style="font-family:verdana; border-bottom: 1px solid #000000">''' Personal Information'''</th><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> Incoming Junior | Computer Science Major at Marquette</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> Working with [[User:Brylow|Dr. Dennis Brylow]] on the concept of Embedded Systems ([http://reu.mscs.mu.edu/index.php/Upgrading_Embedded_Xinu_for_the_Multi-Core_Raspberry_Pi_3 Upgrading Embedded Xinu for the Multi-Core Raspberry Pi 3])</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> [http://www.mscs.mu.edu/~upsilon/ Upsilon Pi Epsilon] member</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> [http://acm.mscs.mu.edu/wiki/Main_Page ACM] At-Large Member</td><br />
</tr><br />
<br />
<tr><br />
<td> President of [https://marquette.collegiatelink.net/organization/bestbuddies Best Buddies Marquette Chapter]</td><br />
</tr><br />
<br />
</table><br />
</table><br />
<br />
==Logs==<br />
<h2>REU 2019:</h2><br />
<h3>Week 1:</h3><br />
<p><br />
* Establish goals for the summer: develop Embedded Xinu's serial port, Ethernet driver, HDMI driver, keyboard driver, and USB storage driver.<br />
* Look into logistics of a formal XinuPi3 release (separate branch on our GitHub to prevent single-core assumption conflicts)<br />
* Make note of MU courses that may benefit from Xinu (possible changes necessary depending on the course)<br />
* Clean working branch of our repository to exclude unnecessary single-core platforms and #ifdef statements. Fix outstanding compiler warnings. Goal: arm-rpi3 is single platform for new "multicore" branch of formal xinu-os release.<br />
</p><br />
<h3>Week 2:</h3><br />
<p><br />
* Complete framebuffer driver port for XinuPi3.<br />
* Evaluate USB subsystem for storage device (file system capability).<br />
</p><br />
<h3>Week 3:</h3><br />
<p><br />
* Look into Power-over-Ethernet (PoE) additions for the O/S. Troubleshoot PoE-capable network switch<br />
* Begin cleaning up ethernet driver code (LAN7800)<br />
* Begin docs (Doxygen)<br />
</p><br />
<h3>Week 4:</h3><br />
<p><br />
* <br />
</p><br />
<br />
<h2>REU 2017:</h2><br />
Specific progress can be viewed on our [https://github.com/tomlazar/xinu/tree/feature/multicore GitHub] repository (commits across multiple branches).<br />
<table style="border: 70px solid #212B60; border-collapse: collapse; font-family:tahoma" bgcolor="#fffced" border=1 cellpadding=2px><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000; background: #edb52a">'''Week 1: May 30-June 2'''</th></tr><br />
<tr><td> Began attempts to boot the full version of Embedded Xinu kernel with Raspberry Pi 3</td></tr><br />
<tr><td> Researched a Linaro Cross-Compiler to use for its Cortex A-53 ARM processor with ARMv8 architecture</td></tr><br />
<tr><td> Drew diagrams of the boot sequence and compilation for better understanding of the Pi 3's mechanisms</td></tr><br />
<tr><td> Traced through the dynamics of written Assembly code in the full research version of Xinu</td></tr><br />
<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><br />
<tr><td> Tested the LED program in updated Assembly code. Began testing the Serial Port Transceiver driver for the Pi 3</td></tr><br />
<tr><td> Read about Raspberry Pi bare metal programming via online sources</td></tr><br />
<tr><td> Read about how the Raspberry Pi 3 controls the frequency of its UART pins</td></tr><br />
<tr><td> Read ARM processor documentation about configuring UART clock frequency</td></tr><br />
<tr><td> Used the oscilloscope in attempt to obtain the clock frequency of the UART pin</td></tr><br />
<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><br />
<tr><td> Read an online textbook about the ARM processor of the Pi 3. </td></tr><br />
<tr><td> Successfully controlled the PL011 UART with a 48MHz frequency. Began porting full version of Xinu.</td></tr><br />
<tr><td> Read ARM64 documentation on registers to use with process interrupt handling.</td></tr><br />
<tr><td> Began working on the context switch for the 64-bit architecture.</td></tr><br />
<tr><td> Finishing work on the files necessary for context switching and rescheduling.</td></tr><br />
<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><br />
<tr><td> Continue working on the boot functions of our implementation. Finished the Research Conduct course.</td></tr><br />
<tr><td> Read about register manipulation in the ARM guide. Continue working on process creation.</td></tr><br />
<tr><td> Begin researching physical memory space in the Pi 3.</td></tr><br />
<tr><td> Read guides to porting from ARM32 to ARM64. Digging deep for a solution to a memory allocation problem.</td></tr><br />
<tr><td> Read about ATAGS and what steps need to be taken to ensure the proper accessible RAM amount.</td></tr><br />
<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><br />
<tr><td> Narrowed down the memory issue to an Aarch64-specific register-load requirement. Working on the fix.</td></tr><br />
<tr><td> Fixed memory issue - now allocating nearly all available memory.</td></tr><br />
<tr><td> Presentation by Dr. Kim Factor on tips to create a good research poster.</td></tr><br />
<tr><td> Began formulating research poster. Working on process queue structure.</td></tr><br />
<tr><td> Continue outlining research paper for submission to EWiLi Embedded Systems conference.</td></tr><br />
<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><br />
<tr><td> Major change of working state: switch from 64-bit to 32-bit for compatibility and teachability reasons.</td></tr><br />
<tr><td> Migrating all code from non-working 64-bit to working 32-bit.</td></tr><br />
<tr><td> Processes create and context switch among one core. Push to resolve multiple cores.</td></tr><br />
<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><br />
<tr><td> Expanding startup code to include change in privilege level.</td></tr><br />
<tr><td> Finished outlining poster. Tested ethernet driver and multiple core threading throughout the week.</td></tr><br />
<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><br />
<tr><td> Studied simple Linux-style multi-core scheduling algorithms using mutual exclusion.</td></tr><br />
<tr><td> Created a method of scheduling across multiple cores with Xinu.</td></tr><br />
<tr><td> Tested multicore synchronization with atomic instructions.</td></tr><br />
<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><br />
<tr><td> Studied technical documentation on how Raspberry Pi CPU mailboxes have worked in the past.</td></tr><br />
<tr><td> Test core mailboxes and work out kinks corresponding to core setup.</td></tr><br />
<tr><td> Finished final version of research poster: Utilizing Multi-core threading on Embedded Xinu.</td></tr><br />
<tr><td> Finished research paper and submitted it to EWiLi conference.</td></tr><br />
<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><br />
<tr><td> Expanded material of final presentation.</td></tr><br />
<tr><td> Presented my research poster alongside colleagues. Viewed and discussed posters outside my discipline.</td></tr><br />
<tr><td> Watched my fellow researchers' presentations and continued making notes of guidelines.</td></tr><br />
<tr><td> Gave my final formal research presentation on the final day of the REU.</td></tr><br />
</table></div>Pmcg521https://reu.cs.mu.edu/index.php/User:Pmcg521User:Pmcg5212019-05-29T17:55:05Z<p>Pmcg521: </p>
<hr />
<div>==Patrick J. McGee==<br />
<table style= "border: 40px solid #212B60; background: #edb52a;-webkit-border-radius:10px cellpadding=2px"><br />
<tr><br />
<td>[[File:Patrick_pro_pic_png.png]]</td><br />
<br />
<td><br />
<br />
<table style= "border: 1px solid black; font-family:tahoma; background: #fffced;" cellpadding=15px><br />
<tr><br />
<th style="font-family:verdana; border-bottom: 1px solid #000000">''' Personal Information'''</th><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> Incoming Junior | Computer Science Major at Marquette</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> Working with [[User:Brylow|Dr. Dennis Brylow]] on the concept of Embedded Systems ([http://reu.mscs.mu.edu/index.php/Upgrading_Embedded_Xinu_for_the_Multi-Core_Raspberry_Pi_3 Upgrading Embedded Xinu for the Multi-Core Raspberry Pi 3])</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> [http://www.mscs.mu.edu/~upsilon/ Upsilon Pi Epsilon] member</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> [http://acm.mscs.mu.edu/wiki/Main_Page ACM] At-Large Member</td><br />
</tr><br />
<br />
<tr><br />
<td> President of [https://marquette.collegiatelink.net/organization/bestbuddies Best Buddies Marquette Chapter]</td><br />
</tr><br />
<br />
</table><br />
</table><br />
<br />
==Logs==<br />
<h2>REU 2019:</h2><br />
<h3>Week 1:</h3><br />
<p><br />
* Establish goals for the summer: develop Embedded Xinu's serial port, Ethernet driver, HDMI driver, keyboard driver, and USB storage driver.<br />
* Look into logistics of a formal XinuPi3 release (separate branch on our GitHub to prevent single-core assumption conflicts)<br />
* Make note of MU courses that may benefit from Xinu (possible changes necessary depending on the course)<br />
* Clean working branch of our repository to exclude unnecessary single-core platforms and #ifdef statements. Fix outstanding compiler warnings. Goal: arm-rpi3 is single platform for new "multicore" branch of formal xinu-os release.<br />
</p><br />
<br />
<h2>REU 2017:</h2><br />
Specific progress can be viewed on our [https://github.com/tomlazar/xinu/tree/feature/multicore GitHub] repository (commits across multiple branches).<br />
<table style="border: 70px solid #212B60; border-collapse: collapse; font-family:tahoma" bgcolor="#fffced" border=1 cellpadding=2px><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000; background: #edb52a">'''Week 1: May 30-June 2'''</th></tr><br />
<tr><td> Began attempts to boot the full version of Embedded Xinu kernel with Raspberry Pi 3</td></tr><br />
<tr><td> Researched a Linaro Cross-Compiler to use for its Cortex A-53 ARM processor with ARMv8 architecture</td></tr><br />
<tr><td> Drew diagrams of the boot sequence and compilation for better understanding of the Pi 3's mechanisms</td></tr><br />
<tr><td> Traced through the dynamics of written Assembly code in the full research version of Xinu</td></tr><br />
<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><br />
<tr><td> Tested the LED program in updated Assembly code. Began testing the Serial Port Transceiver driver for the Pi 3</td></tr><br />
<tr><td> Read about Raspberry Pi bare metal programming via online sources</td></tr><br />
<tr><td> Read about how the Raspberry Pi 3 controls the frequency of its UART pins</td></tr><br />
<tr><td> Read ARM processor documentation about configuring UART clock frequency</td></tr><br />
<tr><td> Used the oscilloscope in attempt to obtain the clock frequency of the UART pin</td></tr><br />
<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><br />
<tr><td> Read an online textbook about the ARM processor of the Pi 3. </td></tr><br />
<tr><td> Successfully controlled the PL011 UART with a 48MHz frequency. Began porting full version of Xinu.</td></tr><br />
<tr><td> Read ARM64 documentation on registers to use with process interrupt handling.</td></tr><br />
<tr><td> Began working on the context switch for the 64-bit architecture.</td></tr><br />
<tr><td> Finishing work on the files necessary for context switching and rescheduling.</td></tr><br />
<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><br />
<tr><td> Continue working on the boot functions of our implementation. Finished the Research Conduct course.</td></tr><br />
<tr><td> Read about register manipulation in the ARM guide. Continue working on process creation.</td></tr><br />
<tr><td> Begin researching physical memory space in the Pi 3.</td></tr><br />
<tr><td> Read guides to porting from ARM32 to ARM64. Digging deep for a solution to a memory allocation problem.</td></tr><br />
<tr><td> Read about ATAGS and what steps need to be taken to ensure the proper accessible RAM amount.</td></tr><br />
<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><br />
<tr><td> Narrowed down the memory issue to an Aarch64-specific register-load requirement. Working on the fix.</td></tr><br />
<tr><td> Fixed memory issue - now allocating nearly all available memory.</td></tr><br />
<tr><td> Presentation by Dr. Kim Factor on tips to create a good research poster.</td></tr><br />
<tr><td> Began formulating research poster. Working on process queue structure.</td></tr><br />
<tr><td> Continue outlining research paper for submission to EWiLi Embedded Systems conference.</td></tr><br />
<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><br />
<tr><td> Major change of working state: switch from 64-bit to 32-bit for compatibility and teachability reasons.</td></tr><br />
<tr><td> Migrating all code from non-working 64-bit to working 32-bit.</td></tr><br />
<tr><td> Processes create and context switch among one core. Push to resolve multiple cores.</td></tr><br />
<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><br />
<tr><td> Expanding startup code to include change in privilege level.</td></tr><br />
<tr><td> Finished outlining poster. Tested ethernet driver and multiple core threading throughout the week.</td></tr><br />
<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><br />
<tr><td> Studied simple Linux-style multi-core scheduling algorithms using mutual exclusion.</td></tr><br />
<tr><td> Created a method of scheduling across multiple cores with Xinu.</td></tr><br />
<tr><td> Tested multicore synchronization with atomic instructions.</td></tr><br />
<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><br />
<tr><td> Studied technical documentation on how Raspberry Pi CPU mailboxes have worked in the past.</td></tr><br />
<tr><td> Test core mailboxes and work out kinks corresponding to core setup.</td></tr><br />
<tr><td> Finished final version of research poster: Utilizing Multi-core threading on Embedded Xinu.</td></tr><br />
<tr><td> Finished research paper and submitted it to EWiLi conference.</td></tr><br />
<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><br />
<tr><td> Expanded material of final presentation.</td></tr><br />
<tr><td> Presented my research poster alongside colleagues. Viewed and discussed posters outside my discipline.</td></tr><br />
<tr><td> Watched my fellow researchers' presentations and continued making notes of guidelines.</td></tr><br />
<tr><td> Gave my final formal research presentation on the final day of the REU.</td></tr><br />
</table></div>Pmcg521https://reu.cs.mu.edu/index.php/User:Pmcg521User:Pmcg5212019-05-29T17:54:25Z<p>Pmcg521: /* Logs */</p>
<hr />
<div><center><br />
==Patrick J. McGee==<br />
<table style= "border: 40px solid #212B60; background: #edb52a;-webkit-border-radius:10px cellpadding=2px"><br />
<tr><br />
<td>[[File:Patrick_pro_pic_png.png]]</td><br />
<br />
<td><br />
<br />
<table style= "border: 1px solid black; font-family:tahoma; background: #fffced;" cellpadding=15px><br />
<tr><br />
<th style="font-family:verdana; border-bottom: 1px solid #000000">''' Personal Information'''</th><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> Incoming Junior | Computer Science Major at Marquette</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> Working with [[User:Brylow|Dr. Dennis Brylow]] on the concept of Embedded Systems ([http://reu.mscs.mu.edu/index.php/Upgrading_Embedded_Xinu_for_the_Multi-Core_Raspberry_Pi_3 Upgrading Embedded Xinu for the Multi-Core Raspberry Pi 3])</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> [http://www.mscs.mu.edu/~upsilon/ Upsilon Pi Epsilon] member</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> [http://acm.mscs.mu.edu/wiki/Main_Page ACM] At-Large Member</td><br />
</tr><br />
<br />
<tr><br />
<td> President of [https://marquette.collegiatelink.net/organization/bestbuddies Best Buddies Marquette Chapter]</td><br />
</tr><br />
<br />
</table><br />
</table><br />
<br />
==Logs==<br />
<h2>REU 2019:</h2><br />
<h3>Week 1:</h3><br />
<p><br />
* Establish goals for the summer: develop Embedded Xinu's serial port, Ethernet driver, HDMI driver, keyboard driver, and USB storage driver.<br />
* Look into logistics of a formal XinuPi3 release (separate branch on our GitHub to prevent single-core assumption conflicts)<br />
* Make note of MU courses that may benefit from Xinu (possible changes necessary depending on the course)<br />
* Clean working branch of our repository to exclude unnecessary single-core platforms and #ifdef statements. Fix outstanding compiler warnings. Goal: arm-rpi3 is single platform for new "multicore" branch of formal xinu-os release.<br />
</p><br />
<br />
<h2>REU 2017:</h2><br />
Specific progress can be viewed on our [https://github.com/tomlazar/xinu/tree/feature/multicore GitHub] repository (commits across multiple branches).<br />
<table style="border: 70px solid #212B60; border-collapse: collapse; font-family:tahoma" bgcolor="#fffced" border=1 cellpadding=2px><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000; background: #edb52a">'''Week 1: May 30-June 2'''</th></tr><br />
<tr><td> Began attempts to boot the full version of Embedded Xinu kernel with Raspberry Pi 3</td></tr><br />
<tr><td> Researched a Linaro Cross-Compiler to use for its Cortex A-53 ARM processor with ARMv8 architecture</td></tr><br />
<tr><td> Drew diagrams of the boot sequence and compilation for better understanding of the Pi 3's mechanisms</td></tr><br />
<tr><td> Traced through the dynamics of written Assembly code in the full research version of Xinu</td></tr><br />
<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><br />
<tr><td> Tested the LED program in updated Assembly code. Began testing the Serial Port Transceiver driver for the Pi 3</td></tr><br />
<tr><td> Read about Raspberry Pi bare metal programming via online sources</td></tr><br />
<tr><td> Read about how the Raspberry Pi 3 controls the frequency of its UART pins</td></tr><br />
<tr><td> Read ARM processor documentation about configuring UART clock frequency</td></tr><br />
<tr><td> Used the oscilloscope in attempt to obtain the clock frequency of the UART pin</td></tr><br />
<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><br />
<tr><td> Read an online textbook about the ARM processor of the Pi 3. </td></tr><br />
<tr><td> Successfully controlled the PL011 UART with a 48MHz frequency. Began porting full version of Xinu.</td></tr><br />
<tr><td> Read ARM64 documentation on registers to use with process interrupt handling.</td></tr><br />
<tr><td> Began working on the context switch for the 64-bit architecture.</td></tr><br />
<tr><td> Finishing work on the files necessary for context switching and rescheduling.</td></tr><br />
<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><br />
<tr><td> Continue working on the boot functions of our implementation. Finished the Research Conduct course.</td></tr><br />
<tr><td> Read about register manipulation in the ARM guide. Continue working on process creation.</td></tr><br />
<tr><td> Begin researching physical memory space in the Pi 3.</td></tr><br />
<tr><td> Read guides to porting from ARM32 to ARM64. Digging deep for a solution to a memory allocation problem.</td></tr><br />
<tr><td> Read about ATAGS and what steps need to be taken to ensure the proper accessible RAM amount.</td></tr><br />
<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><br />
<tr><td> Narrowed down the memory issue to an Aarch64-specific register-load requirement. Working on the fix.</td></tr><br />
<tr><td> Fixed memory issue - now allocating nearly all available memory.</td></tr><br />
<tr><td> Presentation by Dr. Kim Factor on tips to create a good research poster.</td></tr><br />
<tr><td> Began formulating research poster. Working on process queue structure.</td></tr><br />
<tr><td> Continue outlining research paper for submission to EWiLi Embedded Systems conference.</td></tr><br />
<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><br />
<tr><td> Major change of working state: switch from 64-bit to 32-bit for compatibility and teachability reasons.</td></tr><br />
<tr><td> Migrating all code from non-working 64-bit to working 32-bit.</td></tr><br />
<tr><td> Processes create and context switch among one core. Push to resolve multiple cores.</td></tr><br />
<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><br />
<tr><td> Expanding startup code to include change in privilege level.</td></tr><br />
<tr><td> Finished outlining poster. Tested ethernet driver and multiple core threading throughout the week.</td></tr><br />
<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><br />
<tr><td> Studied simple Linux-style multi-core scheduling algorithms using mutual exclusion.</td></tr><br />
<tr><td> Created a method of scheduling across multiple cores with Xinu.</td></tr><br />
<tr><td> Tested multicore synchronization with atomic instructions.</td></tr><br />
<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><br />
<tr><td> Studied technical documentation on how Raspberry Pi CPU mailboxes have worked in the past.</td></tr><br />
<tr><td> Test core mailboxes and work out kinks corresponding to core setup.</td></tr><br />
<tr><td> Finished final version of research poster: Utilizing Multi-core threading on Embedded Xinu.</td></tr><br />
<tr><td> Finished research paper and submitted it to EWiLi conference.</td></tr><br />
<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><br />
<tr><td> Expanded material of final presentation.</td></tr><br />
<tr><td> Presented my research poster alongside colleagues. Viewed and discussed posters outside my discipline.</td></tr><br />
<tr><td> Watched my fellow researchers' presentations and continued making notes of guidelines.</td></tr><br />
<tr><td> Gave my final formal research presentation on the final day of the REU.</td></tr><br />
</table></div>Pmcg521https://reu.cs.mu.edu/index.php/User:Pmcg521User:Pmcg5212019-05-28T20:52:37Z<p>Pmcg521: /* Logs */</p>
<hr />
<div><center><br />
==Patrick J. McGee==<br />
<table style= "border: 40px solid #212B60; background: #edb52a;-webkit-border-radius:10px cellpadding=2px"><br />
<tr><br />
<td>[[File:Patrick_pro_pic_png.png]]</td><br />
<br />
<td><br />
<br />
<table style= "border: 1px solid black; font-family:tahoma; background: #fffced;" cellpadding=15px><br />
<tr><br />
<th style="font-family:verdana; border-bottom: 1px solid #000000">''' Personal Information'''</th><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> Incoming Junior | Computer Science Major at Marquette</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> Working with [[User:Brylow|Dr. Dennis Brylow]] on the concept of Embedded Systems ([http://reu.mscs.mu.edu/index.php/Upgrading_Embedded_Xinu_for_the_Multi-Core_Raspberry_Pi_3 Upgrading Embedded Xinu for the Multi-Core Raspberry Pi 3])</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> [http://www.mscs.mu.edu/~upsilon/ Upsilon Pi Epsilon] member</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> [http://acm.mscs.mu.edu/wiki/Main_Page ACM] At-Large Member</td><br />
</tr><br />
<br />
<tr><br />
<td> President of [https://marquette.collegiatelink.net/organization/bestbuddies Best Buddies Marquette Chapter]</td><br />
</tr><br />
<br />
</table><br />
</table><br />
<br />
==Logs==<br />
<h2>REU 2019:</h2><br />
<h3>Week 1:</h3><br />
<p><br />
* Establish goals for the summer: develop Embedded Xinu's serial port, Ethernet driver, HDMI driver, keyboard driver, and USB storage driver.<br />
* Look into logistics of a formal XinuPi3 release (separate branch on our GitHub to prevent single-core assumption conflicts)<br />
* Make note of MU courses that may benefit from Xinu (possible changes necessary depending on the course)<br />
</p><br />
<br />
<h2>REU 2017:</h2><br />
Specific progress can be viewed on our [https://github.com/tomlazar/xinu/tree/feature/multicore GitHub] repository (commits across multiple branches).<br />
<table style="border: 70px solid #212B60; border-collapse: collapse; font-family:tahoma" bgcolor="#fffced" border=1 cellpadding=2px><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000; background: #edb52a">'''Week 1: May 30-June 2'''</th></tr><br />
<tr><td> Began attempts to boot the full version of Embedded Xinu kernel with Raspberry Pi 3</td></tr><br />
<tr><td> Researched a Linaro Cross-Compiler to use for its Cortex A-53 ARM processor with ARMv8 architecture</td></tr><br />
<tr><td> Drew diagrams of the boot sequence and compilation for better understanding of the Pi 3's mechanisms</td></tr><br />
<tr><td> Traced through the dynamics of written Assembly code in the full research version of Xinu</td></tr><br />
<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><br />
<tr><td> Tested the LED program in updated Assembly code. Began testing the Serial Port Transceiver driver for the Pi 3</td></tr><br />
<tr><td> Read about Raspberry Pi bare metal programming via online sources</td></tr><br />
<tr><td> Read about how the Raspberry Pi 3 controls the frequency of its UART pins</td></tr><br />
<tr><td> Read ARM processor documentation about configuring UART clock frequency</td></tr><br />
<tr><td> Used the oscilloscope in attempt to obtain the clock frequency of the UART pin</td></tr><br />
<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><br />
<tr><td> Read an online textbook about the ARM processor of the Pi 3. </td></tr><br />
<tr><td> Successfully controlled the PL011 UART with a 48MHz frequency. Began porting full version of Xinu.</td></tr><br />
<tr><td> Read ARM64 documentation on registers to use with process interrupt handling.</td></tr><br />
<tr><td> Began working on the context switch for the 64-bit architecture.</td></tr><br />
<tr><td> Finishing work on the files necessary for context switching and rescheduling.</td></tr><br />
<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><br />
<tr><td> Continue working on the boot functions of our implementation. Finished the Research Conduct course.</td></tr><br />
<tr><td> Read about register manipulation in the ARM guide. Continue working on process creation.</td></tr><br />
<tr><td> Begin researching physical memory space in the Pi 3.</td></tr><br />
<tr><td> Read guides to porting from ARM32 to ARM64. Digging deep for a solution to a memory allocation problem.</td></tr><br />
<tr><td> Read about ATAGS and what steps need to be taken to ensure the proper accessible RAM amount.</td></tr><br />
<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><br />
<tr><td> Narrowed down the memory issue to an Aarch64-specific register-load requirement. Working on the fix.</td></tr><br />
<tr><td> Fixed memory issue - now allocating nearly all available memory.</td></tr><br />
<tr><td> Presentation by Dr. Kim Factor on tips to create a good research poster.</td></tr><br />
<tr><td> Began formulating research poster. Working on process queue structure.</td></tr><br />
<tr><td> Continue outlining research paper for submission to EWiLi Embedded Systems conference.</td></tr><br />
<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><br />
<tr><td> Major change of working state: switch from 64-bit to 32-bit for compatibility and teachability reasons.</td></tr><br />
<tr><td> Migrating all code from non-working 64-bit to working 32-bit.</td></tr><br />
<tr><td> Processes create and context switch among one core. Push to resolve multiple cores.</td></tr><br />
<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><br />
<tr><td> Expanding startup code to include change in privilege level.</td></tr><br />
<tr><td> Finished outlining poster. Tested ethernet driver and multiple core threading throughout the week.</td></tr><br />
<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><br />
<tr><td> Studied simple Linux-style multi-core scheduling algorithms using mutual exclusion.</td></tr><br />
<tr><td> Created a method of scheduling across multiple cores with Xinu.</td></tr><br />
<tr><td> Tested multicore synchronization with atomic instructions.</td></tr><br />
<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><br />
<tr><td> Studied technical documentation on how Raspberry Pi CPU mailboxes have worked in the past.</td></tr><br />
<tr><td> Test core mailboxes and work out kinks corresponding to core setup.</td></tr><br />
<tr><td> Finished final version of research poster: Utilizing Multi-core threading on Embedded Xinu.</td></tr><br />
<tr><td> Finished research paper and submitted it to EWiLi conference.</td></tr><br />
<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><br />
<tr><td> Expanded material of final presentation.</td></tr><br />
<tr><td> Presented my research poster alongside colleagues. Viewed and discussed posters outside my discipline.</td></tr><br />
<tr><td> Watched my fellow researchers' presentations and continued making notes of guidelines.</td></tr><br />
<tr><td> Gave my final formal research presentation on the final day of the REU.</td></tr><br />
</table></div>Pmcg521https://reu.cs.mu.edu/index.php/User:Pmcg521User:Pmcg5212019-05-28T20:52:05Z<p>Pmcg521: /* Logs */</p>
<hr />
<div><center><br />
==Patrick J. McGee==<br />
<table style= "border: 40px solid #212B60; background: #edb52a;-webkit-border-radius:10px cellpadding=2px"><br />
<tr><br />
<td>[[File:Patrick_pro_pic_png.png]]</td><br />
<br />
<td><br />
<br />
<table style= "border: 1px solid black; font-family:tahoma; background: #fffced;" cellpadding=15px><br />
<tr><br />
<th style="font-family:verdana; border-bottom: 1px solid #000000">''' Personal Information'''</th><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> Incoming Junior | Computer Science Major at Marquette</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> Working with [[User:Brylow|Dr. Dennis Brylow]] on the concept of Embedded Systems ([http://reu.mscs.mu.edu/index.php/Upgrading_Embedded_Xinu_for_the_Multi-Core_Raspberry_Pi_3 Upgrading Embedded Xinu for the Multi-Core Raspberry Pi 3])</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> [http://www.mscs.mu.edu/~upsilon/ Upsilon Pi Epsilon] member</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> [http://acm.mscs.mu.edu/wiki/Main_Page ACM] At-Large Member</td><br />
</tr><br />
<br />
<tr><br />
<td> President of [https://marquette.collegiatelink.net/organization/bestbuddies Best Buddies Marquette Chapter]</td><br />
</tr><br />
<br />
</table><br />
</table><br />
<br />
==Logs==<br />
<h2>REU 2019:</h2><br />
<h3>Week 1:</h3><br />
* Establish goals for the summer: develop Embedded Xinu's serial port, Ethernet driver, HDMI driver, keyboard driver, and USB storage driver.<br />
* Look into logistics of a formal XinuPi3 release (separate branch on our GitHub to prevent single-core assumption conflicts)<br />
* Make note of MU courses that may benefit from Xinu (possible changes necessary depending on the course)<br />
<br />
<br />
<h2>REU 2017:</h2><br />
Specific progress can be viewed on our [https://github.com/tomlazar/xinu/tree/feature/multicore GitHub] repository (commits across multiple branches).<br />
<table style="border: 70px solid #212B60; border-collapse: collapse; font-family:tahoma" bgcolor="#fffced" border=1 cellpadding=2px><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000; background: #edb52a">'''Week 1: May 30-June 2'''</th></tr><br />
<tr><td> Began attempts to boot the full version of Embedded Xinu kernel with Raspberry Pi 3</td></tr><br />
<tr><td> Researched a Linaro Cross-Compiler to use for its Cortex A-53 ARM processor with ARMv8 architecture</td></tr><br />
<tr><td> Drew diagrams of the boot sequence and compilation for better understanding of the Pi 3's mechanisms</td></tr><br />
<tr><td> Traced through the dynamics of written Assembly code in the full research version of Xinu</td></tr><br />
<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><br />
<tr><td> Tested the LED program in updated Assembly code. Began testing the Serial Port Transceiver driver for the Pi 3</td></tr><br />
<tr><td> Read about Raspberry Pi bare metal programming via online sources</td></tr><br />
<tr><td> Read about how the Raspberry Pi 3 controls the frequency of its UART pins</td></tr><br />
<tr><td> Read ARM processor documentation about configuring UART clock frequency</td></tr><br />
<tr><td> Used the oscilloscope in attempt to obtain the clock frequency of the UART pin</td></tr><br />
<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><br />
<tr><td> Read an online textbook about the ARM processor of the Pi 3. </td></tr><br />
<tr><td> Successfully controlled the PL011 UART with a 48MHz frequency. Began porting full version of Xinu.</td></tr><br />
<tr><td> Read ARM64 documentation on registers to use with process interrupt handling.</td></tr><br />
<tr><td> Began working on the context switch for the 64-bit architecture.</td></tr><br />
<tr><td> Finishing work on the files necessary for context switching and rescheduling.</td></tr><br />
<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><br />
<tr><td> Continue working on the boot functions of our implementation. Finished the Research Conduct course.</td></tr><br />
<tr><td> Read about register manipulation in the ARM guide. Continue working on process creation.</td></tr><br />
<tr><td> Begin researching physical memory space in the Pi 3.</td></tr><br />
<tr><td> Read guides to porting from ARM32 to ARM64. Digging deep for a solution to a memory allocation problem.</td></tr><br />
<tr><td> Read about ATAGS and what steps need to be taken to ensure the proper accessible RAM amount.</td></tr><br />
<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><br />
<tr><td> Narrowed down the memory issue to an Aarch64-specific register-load requirement. Working on the fix.</td></tr><br />
<tr><td> Fixed memory issue - now allocating nearly all available memory.</td></tr><br />
<tr><td> Presentation by Dr. Kim Factor on tips to create a good research poster.</td></tr><br />
<tr><td> Began formulating research poster. Working on process queue structure.</td></tr><br />
<tr><td> Continue outlining research paper for submission to EWiLi Embedded Systems conference.</td></tr><br />
<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><br />
<tr><td> Major change of working state: switch from 64-bit to 32-bit for compatibility and teachability reasons.</td></tr><br />
<tr><td> Migrating all code from non-working 64-bit to working 32-bit.</td></tr><br />
<tr><td> Processes create and context switch among one core. Push to resolve multiple cores.</td></tr><br />
<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><br />
<tr><td> Expanding startup code to include change in privilege level.</td></tr><br />
<tr><td> Finished outlining poster. Tested ethernet driver and multiple core threading throughout the week.</td></tr><br />
<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><br />
<tr><td> Studied simple Linux-style multi-core scheduling algorithms using mutual exclusion.</td></tr><br />
<tr><td> Created a method of scheduling across multiple cores with Xinu.</td></tr><br />
<tr><td> Tested multicore synchronization with atomic instructions.</td></tr><br />
<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><br />
<tr><td> Studied technical documentation on how Raspberry Pi CPU mailboxes have worked in the past.</td></tr><br />
<tr><td> Test core mailboxes and work out kinks corresponding to core setup.</td></tr><br />
<tr><td> Finished final version of research poster: Utilizing Multi-core threading on Embedded Xinu.</td></tr><br />
<tr><td> Finished research paper and submitted it to EWiLi conference.</td></tr><br />
<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><br />
<tr><td> Expanded material of final presentation.</td></tr><br />
<tr><td> Presented my research poster alongside colleagues. Viewed and discussed posters outside my discipline.</td></tr><br />
<tr><td> Watched my fellow researchers' presentations and continued making notes of guidelines.</td></tr><br />
<tr><td> Gave my final formal research presentation on the final day of the REU.</td></tr><br />
</table></div>Pmcg521https://reu.cs.mu.edu/index.php/User:Pmcg521User:Pmcg5212017-08-07T19:49:43Z<p>Pmcg521: </p>
<hr />
<div><center><br />
==Patrick J. McGee==<br />
<table style= "border: 40px solid #212B60; background: #edb52a;-webkit-border-radius:10px cellpadding=2px"><br />
<tr><br />
<td>[[File:Patrick_pro_pic_png.png]]</td><br />
<br />
<td><br />
<br />
<table style= "border: 1px solid black; font-family:tahoma; background: #fffced;" cellpadding=15px><br />
<tr><br />
<th style="font-family:verdana; border-bottom: 1px solid #000000">''' Personal Information'''</th><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> Incoming Junior | Computer Science Major at Marquette</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> Working with [[User:Brylow|Dr. Dennis Brylow]] on the concept of Embedded Systems ([http://reu.mscs.mu.edu/index.php/Upgrading_Embedded_Xinu_for_the_Multi-Core_Raspberry_Pi_3 Upgrading Embedded Xinu for the Multi-Core Raspberry Pi 3])</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> [http://www.mscs.mu.edu/~upsilon/ Upsilon Pi Epsilon] member</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> [http://acm.mscs.mu.edu/wiki/Main_Page ACM] At-Large Member</td><br />
</tr><br />
<br />
<tr><br />
<td> President of [https://marquette.collegiatelink.net/organization/bestbuddies Best Buddies Marquette Chapter]</td><br />
</tr><br />
<br />
</table><br />
</table><br />
<br />
==Logs==<br />
All specific progress concerning code can be viewed on our [https://github.com/tomlazar/xinu/tree/feature/multicore GitHub] repository (commits across multiple branches).<br />
<table style="border: 70px solid #212B60; border-collapse: collapse; font-family:tahoma" bgcolor="#fffced" border=1 cellpadding=2px><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000; background: #edb52a">'''Week 1: May 30-June 2'''</th></tr><br />
<tr><td> Began attempts to boot the full version of Embedded Xinu kernel with Raspberry Pi 3</td></tr><br />
<tr><td> Researched a Linaro Cross-Compiler to use for its Cortex A-53 ARM processor with ARMv8 architecture</td></tr><br />
<tr><td> Drew diagrams of the boot sequence and compilation for better understanding of the Pi 3's mechanisms</td></tr><br />
<tr><td> Traced through the dynamics of written Assembly code in the full research version of Xinu</td></tr><br />
<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><br />
<tr><td> Tested the LED program in updated Assembly code. Began testing the Serial Port Transceiver driver for the Pi 3</td></tr><br />
<tr><td> Read about Raspberry Pi bare metal programming via online sources</td></tr><br />
<tr><td> Read about how the Raspberry Pi 3 controls the frequency of its UART pins</td></tr><br />
<tr><td> Read ARM processor documentation about configuring UART clock frequency</td></tr><br />
<tr><td> Used the oscilloscope in attempt to obtain the clock frequency of the UART pin</td></tr><br />
<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><br />
<tr><td> Read an online textbook about the ARM processor of the Pi 3. </td></tr><br />
<tr><td> Successfully controlled the PL011 UART with a 48MHz frequency. Began porting full version of Xinu.</td></tr><br />
<tr><td> Read ARM64 documentation on registers to use with process interrupt handling.</td></tr><br />
<tr><td> Began working on the context switch for the 64-bit architecture.</td></tr><br />
<tr><td> Finishing work on the files necessary for context switching and rescheduling.</td></tr><br />
<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><br />
<tr><td> Continue working on the boot functions of our implementation. Finished the Research Conduct course.</td></tr><br />
<tr><td> Read about register manipulation in the ARM guide. Continue working on process creation.</td></tr><br />
<tr><td> Begin researching physical memory space in the Pi 3.</td></tr><br />
<tr><td> Read guides to porting from ARM32 to ARM64. Digging deep for a solution to a memory allocation problem.</td></tr><br />
<tr><td> Read about ATAGS and what steps need to be taken to ensure the proper accessible RAM amount.</td></tr><br />
<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><br />
<tr><td> Narrowed down the memory issue to an Aarch64-specific register-load requirement. Working on the fix.</td></tr><br />
<tr><td> Fixed memory issue - now allocating nearly all available memory.</td></tr><br />
<tr><td> Presentation by Dr. Kim Factor on tips to create a good research poster.</td></tr><br />
<tr><td> Began formulating research poster. Working on process queue structure.</td></tr><br />
<tr><td> Continue outlining research paper for submission to EWiLi Embedded Systems conference.</td></tr><br />
<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><br />
<tr><td> Major change of working state: switch from 64-bit to 32-bit for compatibility and teachability reasons.</td></tr><br />
<tr><td> Migrating all code from non-working 64-bit to working 32-bit.</td></tr><br />
<tr><td> Processes create and context switch among one core. Push to resolve multiple cores.</td></tr><br />
<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><br />
<tr><td> Expanding startup code to include change in privilege level.</td></tr><br />
<tr><td> Finished outlining poster. Tested ethernet driver and multiple core threading throughout the week.</td></tr><br />
<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><br />
<tr><td> Studied simple Linux-style multi-core scheduling algorithms using mutual exclusion.</td></tr><br />
<tr><td> Created a method of scheduling across multiple cores with Xinu.</td></tr><br />
<tr><td> Tested multicore synchronization with atomic instructions.</td></tr><br />
<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><br />
<tr><td> Studied technical documentation on how Raspberry Pi CPU mailboxes have worked in the past.</td></tr><br />
<tr><td> Test core mailboxes and work out kinks corresponding to core setup.</td></tr><br />
<tr><td> Finished final version of research poster: Utilizing Multi-core threading on Embedded Xinu.</td></tr><br />
<tr><td> Finished research paper and submitted it to EWiLi conference.</td></tr><br />
<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><br />
<tr><td> Expanded material of final presentation.</td></tr><br />
<tr><td> Presented my research poster alongside colleagues. Viewed and discussed posters outside my discipline.</td></tr><br />
<tr><td> Watched my fellow researchers' presentations and continued making notes of guidelines.</td></tr><br />
<tr><td> Gave my final formal research presentation on the final day of the REU.</td></tr><br />
</table></div>Pmcg521https://reu.cs.mu.edu/index.php/User:Pmcg521User:Pmcg5212017-08-07T19:48:37Z<p>Pmcg521: </p>
<hr />
<div><center><br />
==Patrick J. McGee==<br />
<table style= "border: 40px solid #212B60; background: #edb52a;-webkit-border-radius:10px cellpadding=2px"><br />
<tr><br />
<td>[[File:Patrick_pro_pic_png.png]]</td><br />
<br />
<td><br />
<br />
<table style= "border: 1px solid black; font-family:tahoma; background: #fffced;" cellpadding=15px><br />
<tr><br />
<th style="font-family:verdana; border-bottom: 1px solid #000000">''' Personal Information'''</th><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> Incoming Junior | Computer Science Major at Marquette</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> Working with [[User:Brylow|Dr. Dennis Brylow]] on the concept of Embedded Systems ([http://reu.mscs.mu.edu/index.php/Upgrading_Embedded_Xinu_for_the_Multi-Core_Raspberry_Pi_3 Upgrading Embedded Xinu for the Multi-Core Raspberry Pi 3])</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> [http://www.mscs.mu.edu/~upsilon/ Upsilon Pi Epsilon] member</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> [http://acm.mscs.mu.edu/wiki/Main_Page ACM] At-Large Member</td><br />
</tr><br />
<br />
<tr><br />
<td> President of [https://marquette.collegiatelink.net/organization/bestbuddies Best Buddies Marquette Chapter]</td><br />
</tr><br />
<br />
</table><br />
</table><br />
<br />
==Logs==<br />
All specific progress concerning code can be viewed on our [https://github.com/tomlazar/xinu/tree/feature/multicore GitHub] repository (commits across multiple branches).<br />
<table style="border: 70px solid #212B60; border-collapse: collapse; font-family:tahoma" bgcolor="#fffced" border=1 cellpadding=2px><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000; background: #edb52a">'''Week 1: May 30-June 2'''</th></tr><br />
<tr><td> Began attempts to boot the full version of Embedded Xinu kernel with Raspberry Pi 3</td></tr><br />
<tr><td> Researched a Linaro Cross-Compiler to use for its Cortex A-53 ARM processor with ARMv8 architecture</td></tr><br />
<tr><td> Drew diagrams of the boot sequence and compilation for better understanding of the Pi 3's mechanisms</td></tr><br />
<tr><td> Traced through the dynamics of written Assembly code in the full research version of Xinu</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 2: June 5-9'''</th></tr><br />
<tr><td> Tested the LED program in updated Assembly code. Began testing the Serial Port Transceiver driver for the Pi 3</td></tr><br />
<tr><td> Read about Raspberry Pi bare metal programming via online sources</td></tr><br />
<tr><td> Read about how the Raspberry Pi 3 controls the frequency of its UART pins</td></tr><br />
<tr><td> Read ARM processor documentation about configuring UART clock frequency</td></tr><br />
<tr><td> Used the oscilloscope in attempt to obtain the clock frequency of the UART pin</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 3: June 12-16'''</th></tr><br />
<tr><td> Read an online textbook about the ARM processor of the Pi 3. </td></tr><br />
<tr><td> Successfully controlled the PL011 UART with a 48MHz frequency. Began porting full version of Xinu.</td></tr><br />
<tr><td> Read ARM64 documentation on registers to use with process interrupt handling.</td></tr><br />
<tr><td> Began working on the context switch for the 64-bit architecture.</td></tr><br />
<tr><td> Finishing work on the files necessary for context switching and rescheduling.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 4: June 19-23'''</th></tr><br />
<tr><td> Continue working on the boot functions of our implementation. Finished the Research Conduct course.</td></tr><br />
<tr><td> Read about register manipulation in the ARM guide. Continue working on process creation.</td></tr><br />
<tr><td> Begin researching physical memory space in the Pi 3.</td></tr><br />
<tr><td> Read guides to porting from ARM32 to ARM64. Digging deep for a solution to a memory allocation problem.</td></tr><br />
<tr><td> Read about ATAGS and what steps need to be taken to ensure the proper accessible RAM amount.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 5: June 26-30'''</th></tr><br />
<tr><td> Narrowed down the memory issue to an Aarch64-specific register-load requirement. Working on the fix.</td></tr><br />
<tr><td> Fixed memory issue - now allocating nearly all available memory.</td></tr><br />
<tr><td> Presentation by Dr. Kim Factor on tips to create a good research poster.</td></tr><br />
<tr><td> Began formulating research poster. Working on process queue structure.</td></tr><br />
<tr><td> Continue outlining research paper for submission to EWiLi Embedded Systems conference.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 6: July 3-7'''</th></tr><br />
<tr><td> Major change of working state: switch from 64-bit to 32-bit for compatibility and teachability reasons.</td></tr><br />
<tr><td> Migrating all code from non-working 64-bit to working 32-bit.</td></tr><br />
<tr><td> Processes create and context switch among one core. Push to resolve multiple cores.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 7: July 10-14'''</th></tr><br />
<tr><td> Expanding startup code to include change in privilege level.</td></tr><br />
<tr><td> Finished outlining poster. Tested ethernet driver and multiple core threading throughout the week.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 8: July 17-21'''</th></tr><br />
<tr><td> Studied simple Linux-style multi-core scheduling algorithms using mutual exclusion.</td></tr><br />
<tr><td> Created a method of scheduling across multiple cores with Xinu.</td></tr><br />
<tr><td> Tested multicore synchronization with atomic instructions.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 9: July 24-28'''</th></tr><br />
<tr><td> Studied technical documentation on how Raspberry Pi CPU mailboxes have worked in the past.</td></tr><br />
<tr><td> Test core mailboxes and work out kinks corresponding to core setup.</td></tr><br />
<tr><td> Finished final version of research poster: Utilizing Multi-core threading on Embedded Xinu.</td></tr><br />
<tr><td> Finished research paper and submitted it to EWiLi conference.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 10: July 31-August 4'''</th></tr><br />
<tr><td> Expanded material of final presentation.</td></tr><br />
<tr><td> Presented my research poster alongside colleagues. Viewed and discussed posters outside my discipline.</td></tr><br />
<tr><td> Watched my fellow researchers' presentations and continued making notes of guidelines.</td></tr><br />
<tr><td> Gave my final formal research presentation on the final day of the REU.</td></tr><br />
</table></div>Pmcg521https://reu.cs.mu.edu/index.php/Upgrading_Embedded_Xinu_for_the_Multi-Core_Raspberry_Pi_3Upgrading Embedded Xinu for the Multi-Core Raspberry Pi 32017-08-07T09:12:59Z<p>Pmcg521: </p>
<hr />
<div>'''Researchers:''' [[User:Tlazar|Tom Lazar]], [[User:Pmcg521|Patrick J. McGee]], [[User:Rlatinov|Rade Latinovich]] and [[User:Pbansal|Priya Bansal]]<br />
<br />
'''Mentor:''' [[User:Brylow|Dr. Dennis Brylow]]<br />
<br />
'''[https://github.com/tomlazar/xinu/tree/feature/multicore Our GitHub Repository]'''<br />
<br />
==Abstract==<br />
As computer platforms become more advanced, there is an escalating need to teach the complex concepts which they are capable of executing. This paper addresses one such need by presenting XinuPi3, a port of the lightweight instructional operating system {\em Embedded Xinu} to the Raspberry Pi 3. The Raspberry Pi 3 improves upon previous generations of inexpensive, credit card-sized computers by including a quad-core, ARM-based processor, opening the door for educators to demonstrate essential aspects of modern computing like inter-core communication and genuine concurrency.<br />
<br />
Embedded Xinu has proven to be an effective teaching tool for demonstrating low-level concepts on single-core platforms, and it is currently used to teach a range of systems courses at multiple universities. As of this writing, no other bare metal educational operating system supports multicore computing. XinuPi3 provides a suitable learning environment for beginners on genuinely concurrent hardware. This paper provides an overview of the key features of the XinuPi3 system, as well as the novel embedded system education experiences it makes possible.<br />
==Background && Motivation==<br />
<br />
The [http://xinu.mscs.mu.edu Embedded Xinu] infrastructure is a simple operating system designed to introduce students to many low-level computing concepts, including Driver Creation, Exception and Interrupt Handling, and much more. Many universities, such as [http://www.xinu.cs.purdue.edu/#lab Purdue University], [https://wiki.cse.buffalo.edu/services/content/xinu University at Buffalo], and [https://john.cs.olemiss.edu/~ruth/Xinu/Xinu.html University of Mississippi], have created Xinu Labs. These are classrooms running Xinu on multiple embedded devices (either Raspberry Pis or Linksys Routers). [http://www.mscs.mu.edu/~brylow/xinu/ Marquette University uses one such Xinu Lab] to teach its Operating Systems course among other computing courses.<br />
<br />
Using information obtained from past studies, we expand on the current Xinu infrastructure. One of the main goals of this project is to modify Xinu to run on new multi-core Raspberry Pi 3s while still maintaining support for previous platforms. Another goal of this project is to create structures within Xinu which effectively and efficiently use multiple cores.<br />
<br />
==Milestones==<br />
<table><br />
<tr><br />
<td style="border-bottom: 2px solid #ffa556; border-style: solid; border-color: #ffa556; padding: 15px; background: #ffa556; border-radius: 25px"><br />
===Understanding the Pi 3===<br />
</td><br />
</tr><br />
</table><br />
In order to begin porting Xinu onto the new architecture of the Raspberry Pi 3, we first needed to understand the fundamental differences between the Pi 3 and its simpler predecessor, the Pi 1 (which currently runs Xinu in Marquette's Systems Lab). Here is a table of distinctions between the two:<br />
<br />
<table align="center" bgcolor="#fffced" border=1><br />
<tr><br />
<td></td><br />
<td align = "center">'''RPi 1 (Model B)'''</td><br />
<td align = "center">'''RPi 3'''</td><br />
</tr><br />
<br />
<tr><br />
<td align = "center">'''CPU'''</td><br />
<td align = "center">ARM 1176JZF-S</td><br />
<td align = "center">ARM Cortex-A53</td><br />
</tr><br />
<br />
<tr><br />
<td align = "center">'''Architecture'''</td><br />
<td align = "center">ARMv6 (32-bit)</td><br />
<td align = "center">ARMv8 (64-bit)</td><br />
</tr><br />
<br />
<tr><br />
<td align = "center">'''Cores'''</td><br />
<td align = "center">One</td><br />
<td align = "center">Four</td><br />
</tr><br />
<br />
<tr><br />
<td align = "center">'''Registers'''</td><br />
<td align = "center">16</td><br />
<td align = "center">32</td><br />
<br />
<tr><br />
<td align = "center">'''RAM'''</td><br />
<td align = "center">512MB</td><br />
<td align = "center">1GB</td><br />
<br />
<tr><br />
<td align = "center">'''SoC'''</td><br />
<td align = "center">BCM2835</td><br />
<td align = "center">BCM2837</td><br />
<br />
</table><br />
<br />
Unfortunately, the documentation for the Raspberry Pi 3's System on Chip is sparse. However, deeper digging yielded more knowledge on how past Raspberry Pi systems have worked. With such information, it is safe to infer that the Pi 3's SoC is most likely similar to that of its predecessors. Below is a diagram of the Pi's boot order and compilation:<br />
<br />
<center>[[File:rpi3_boot_order.png]][[File:placeholder.png]][[File:compilation_diagram_pi3(2).png]]</center><br />
<br />
<br />
<table><br />
<tr><br />
<td style="border-bottom: 2px solid #72eab2; border-style: solid; border-color: #72eab2; padding: 15px; background: #72eab2; border-radius: 25px"><br />
===Hello World Pt. 1: Bare Metal LED Program===<br />
</td><br />
</tr><br />
</table><br />
<br />
*Got a bare metal program to run on our Raspberry Pi 3<br />
*:- Using our own C program: Turned on an LED light using GPIO pin 16 on our Pi<br />
<center>[[File:GPIO_key.png]]</center><br />
*:- Reprocessed our C code into ARM64 Assembly code, and used it to turn on an LED using the same pins as before.<br />
<center>[[File:pi_LED.png]][[File:pi_LED2.png]]</center><br />
<center>[[File:AmazingXINU3.0.gif]]</center><br />
<br />
<br />
<table><br />
<tr><br />
<td style="border-bottom: 2px solid #ff5a30; border-style: dotted solid; border-color: #ff5a30; padding: 15px; background: #ff5a30; border-radius: 25px"><br />
===Hello World Pt. 2: Utilizing the Serial Port===<br />
</td><br />
</tr><br />
</table><br />
There are two UARTs on the Raspberry Pi 3: the mini UART and the PL011. The mini UART is used for Linux console output. The PL011 is generally more reliable and more versatile than the mini UART, mainly because the mini UART has a direct baud rate link to the Pi 3's Graphics Processor (VPU) clock speed. Contrasting the two UARTs:<br />
<table align="center" bgcolor="#fffced" border=1><br />
<tr><br />
<td></td><br />
<td align = "center">'''Mini UART'''</td><br />
<td align = "center">'''PL011'''</td><br />
</tr><br />
<br />
<tr><br />
<td align = "center">'''Break detection'''</td><br />
<td align = "center">&#x2718;</td><br />
<td align = "center">&#x2714;</td><br />
</tr><br />
<br />
<tr><br />
<td align = "center">'''Framing errors detection'''</td><br />
<td align = "center">&#x2718;</td><br />
<td align = "center">&#x2714;</td><br />
</tr><br />
<br />
<tr><br />
<td align = "center">'''Parity bit'''</td><br />
<td align = "center">&#x2718;</td><br />
<td align = "center">&#x2714;</td><br />
</tr><br />
<br />
<tr><br />
<td align = "center">'''Large FIFOs'''</td><br />
<td align = "center">&#x2718;</td><br />
<td align = "center">&#x2714;</td><br />
</tr><br />
<br />
<tr><br />
<td align = "center">'''Flow control'''</td><br />
<td align = "center">&#x2718;</td><br />
<td align = "center">&#x2714;</td><br />
</tr><br />
<br />
</table><br />
<br />
'''Mini UART'''<br />
* Our team created a "hello world" C program by sending a string using Xinu's puts() function. After initializing the serial pins within the program, we connected the R232 serial adapter from a computer (via ethernet) to our Pi 3's Mini-UART GPIO pins (pins 14 and 15) using a baud rate of 115200, which yielded a response in the console.<br />
<br />
<br />
<center>[[File:final_rpi3_serial_port.png]]</center><br />
<br />
'''PL011'''<br />
<br />
Getting the PL011 UART to respond was a challenge. Firstly, we enabled the PL011 register in our "hello world" program, and assigned the same baud rate of 115200 to it. Unfortunately, this yielded garbage output. If we know the UART clock frequency, we can calculate the baud rate. To determine reference frequency used by the PL011, we used an oscilloscope and performed the following steps:<br />
* Enabled GPIO pin 4 and programmed it to its ALT0 function. This outputs the clock manager reference frequency at that pin.<br />
* Plugged in our oscilloscope probe to GPIO pin 4 and read its frequency. In its latest firmware, the Raspberry Pi 3 has a 48MHz UART frequency.<br />
<center>[[File:oscill_freq.png]]</center><br />
* Back to our C program: with a programmed divisor of 48MHz (to be used in the baud rate calculation), and TX/RX pins set to be enabled, the computer received a "hello world" from the PL011 UART.<br />
<br />
<br />
<table><br />
<tr><br />
<td style="border-bottom: 2px solid #90b9f9; border-style: dotted solid; border-color: #90b9f9; padding: 15px; background: #90b9f9; border-radius: 25px"><br />
===Porting Xinu Pt. 1: Send/Recv with UART ===<br />
</td><br />
</tr><br />
</table><br />
<br />
Now that necessary measures have been taken to utilize the serial port and understand low-level, bare metal programming with the Pi 3, we can begin upgrading and porting the full research version of Embedded Xinu. Before jumping into the full research version, a good place to start testing is the "lite" educational version of Xinu.<br />
<br />
<br />
'''Demo of kgetc() working in Xinu "Lite" and Full versions:'''<br />
<br />
Xinu says hello! Our team configured Xinu function kgetc() to be used with our working UART. The program waits for a key to be pressed (checking the PL011 flag register's FIFO), and then echoes the output back. In this example, the user entered the character "h":<br />
<center>[[File:kgetc_demo.gif]]</center><br />
<br />
==Remaining updates==<br />
* ATAGS are passed and memory amount is fixed using fixup.dat.<br />
* Core 0 executes processes with or without preemption. Context switch works (must be in system mode).<br />
* Cores begin in a parked state. We unparked them and have working concurrency. See our [https://github.com/tomlazar/xinu/tree/feature/multicore GitHub Repository]<br />
* Mutual exclusion being worked on with atomic instructions. Unknown issues regarding cache setup and MMU.</div>Pmcg521https://reu.cs.mu.edu/index.php/Upgrading_Embedded_Xinu_for_the_Multi-Core_Raspberry_Pi_3Upgrading Embedded Xinu for the Multi-Core Raspberry Pi 32017-08-07T09:11:23Z<p>Pmcg521: </p>
<hr />
<div>'''Researchers:''' [[User:Tlazar|Tom Lazar]], [[User:Pmcg521|Patrick J. McGee]], [[User:Rlatinov|Rade Latinovich]] and [[User:Pbansal|Priya Bansal]]<br />
<br />
'''Mentor:''' [[User:Brylow|Dr. Dennis Brylow]]<br />
<br />
'''[https://github.com/tomlazar/xinu/tree/feature/multicore Our GitHub Repository]'''<br />
<br />
==Abstract==<br />
As computer platforms become more advanced, there is an escalating need to teach the complex concepts which they are capable of executing. This paper addresses one such need by presenting XinuPi3, a port of the lightweight instructional operating system {\em Embedded Xinu} to the Raspberry Pi 3. The Raspberry Pi 3 improves upon previous generations of inexpensive, credit card-sized computers by including a quad-core, ARM-based processor, opening the door for educators to demonstrate essential aspects of modern computing like inter-core communication and genuine concurrency.<br />
<br />
Embedded Xinu has proven to be an effective teaching tool for demonstrating low-level concepts on single-core platforms, and it is currently used to teach a range of systems courses at multiple universities. As of this writing, no other bare metal educational operating system supports multicore computing. XinuPi3 provides a suitable learning environment for beginners on genuinely concurrent hardware. This paper provides an overview of the key features of the XinuPi3 system, as well as the novel embedded system education experiences it makes possible.<br />
==Background && Motivation==<br />
<br />
The [http://xinu.mscs.mu.edu Embedded Xinu] infrastructure is a simple operating system designed to introduce students to many low-level computing concepts, including Driver Creation, Exception and Interrupt Handling, and much more. Many universities, such as [http://www.xinu.cs.purdue.edu/#lab Purdue University], [https://wiki.cse.buffalo.edu/services/content/xinu University at Buffalo], and [https://john.cs.olemiss.edu/~ruth/Xinu/Xinu.html University of Mississippi], have created Xinu Labs. These are classrooms running Xinu on multiple embedded devices (either Raspberry Pis or Linksys Routers). [http://www.mscs.mu.edu/~brylow/xinu/ Marquette University uses one such Xinu Lab] to teach its Operating Systems course among other computing courses.<br />
<br />
Using information obtained from past studies, we expand on the current Xinu infrastructure. One of the main goals of this project is to modify Xinu to run on new multi-core Raspberry Pi 3s while still maintaining support for previous platforms. Another goal of this project is to create structures within Xinu which effectively and efficiently use multiple cores.<br />
<br />
==Milestones==<br />
<table><br />
<tr><br />
<td style="border-bottom: 2px solid #ffa556; border-style: solid; border-color: #ffa556; padding: 15px; background: #ffa556; border-radius: 25px"><br />
===Understanding the Pi 3===<br />
</td><br />
</tr><br />
</table><br />
In order to begin porting Xinu onto the new architecture of the Raspberry Pi 3, we first needed to understand the fundamental differences between the Pi 3 and its simpler predecessor, the Pi 1 (which currently runs Xinu in Marquette's Systems Lab). Here is a table of distinctions between the two:<br />
<br />
<table align="center" bgcolor="#fffced" border=1><br />
<tr><br />
<td></td><br />
<td align = "center">'''RPi 1 (Model B)'''</td><br />
<td align = "center">'''RPi 3'''</td><br />
</tr><br />
<br />
<tr><br />
<td align = "center">'''CPU'''</td><br />
<td align = "center">ARM 1176JZF-S</td><br />
<td align = "center">ARM Cortex-A53</td><br />
</tr><br />
<br />
<tr><br />
<td align = "center">'''Architecture'''</td><br />
<td align = "center">ARMv6 (32-bit)</td><br />
<td align = "center">ARMv8 (64-bit)</td><br />
</tr><br />
<br />
<tr><br />
<td align = "center">'''Cores'''</td><br />
<td align = "center">One</td><br />
<td align = "center">Four</td><br />
</tr><br />
<br />
<tr><br />
<td align = "center">'''Registers'''</td><br />
<td align = "center">16</td><br />
<td align = "center">32</td><br />
<br />
<tr><br />
<td align = "center">'''RAM'''</td><br />
<td align = "center">512MB</td><br />
<td align = "center">1GB</td><br />
<br />
<tr><br />
<td align = "center">'''SoC'''</td><br />
<td align = "center">BCM2835</td><br />
<td align = "center">BCM2837</td><br />
<br />
</table><br />
<br />
Unfortunately, the documentation for the Raspberry Pi 3's System on Chip is sparse. However, deeper digging yielded more knowledge on how past Raspberry Pi systems have worked. With such information, it is safe to infer that the Pi 3's SoC is most likely similar to that of its predecessors. Below is a diagram of the Pi's boot order and compilation:<br />
<br />
<center>[[File:rpi3_boot_order.png]][[File:placeholder.png]][[File:compilation_diagram_pi3(2).png]]</center><br />
<br />
<br />
<table><br />
<tr><br />
<td style="border-bottom: 2px solid #72eab2; border-style: solid; border-color: #72eab2; padding: 15px; background: #72eab2; border-radius: 25px"><br />
===Hello World Pt. 1: Bare Metal LED Program===<br />
</td><br />
</tr><br />
</table><br />
<br />
*Got a bare metal program to run on our Raspberry Pi 3<br />
*:- Using our own C program: Turned on an LED light using GPIO pin 16 on our Pi<br />
<center>[[File:GPIO_key.png]]</center><br />
*:- Reprocessed our C code into ARM64 Assembly code, and used it to turn on an LED using the same pins as before.<br />
<center>[[File:pi_LED.png]][[File:pi_LED2.png]]</center><br />
<center>[[File:AmazingXINU3.0.gif]]</center><br />
<br />
<br />
<table><br />
<tr><br />
<td style="border-bottom: 2px solid #ff5a30; border-style: dotted solid; border-color: #ff5a30; padding: 15px; background: #ff5a30; border-radius: 25px"><br />
===Hello World Pt. 2: Utilizing the Serial Port===<br />
</td><br />
</tr><br />
</table><br />
There are two UARTs on the Raspberry Pi 3: the mini UART and the PL011. The mini UART is used for Linux console output. The PL011 is generally more reliable and more versatile than the mini UART, mainly because the mini UART has a direct baud rate link to the Pi 3's Graphics Processor (VPU) clock speed. Contrasting the two UARTs:<br />
<table align="center" bgcolor="#fffced" border=1><br />
<tr><br />
<td></td><br />
<td align = "center">'''Mini UART'''</td><br />
<td align = "center">'''PL011'''</td><br />
</tr><br />
<br />
<tr><br />
<td align = "center">'''Break detection'''</td><br />
<td align = "center">&#x2718;</td><br />
<td align = "center">&#x2714;</td><br />
</tr><br />
<br />
<tr><br />
<td align = "center">'''Framing errors detection'''</td><br />
<td align = "center">&#x2718;</td><br />
<td align = "center">&#x2714;</td><br />
</tr><br />
<br />
<tr><br />
<td align = "center">'''Parity bit'''</td><br />
<td align = "center">&#x2718;</td><br />
<td align = "center">&#x2714;</td><br />
</tr><br />
<br />
<tr><br />
<td align = "center">'''Large FIFOs'''</td><br />
<td align = "center">&#x2718;</td><br />
<td align = "center">&#x2714;</td><br />
</tr><br />
<br />
<tr><br />
<td align = "center">'''Flow control'''</td><br />
<td align = "center">&#x2718;</td><br />
<td align = "center">&#x2714;</td><br />
</tr><br />
<br />
</table><br />
<br />
'''Mini UART'''<br />
* Our team created a "hello world" C program by sending a string using Xinu's puts() function. After initializing the serial pins within the program, we connected the R232 serial adapter from a computer (via ethernet) to our Pi 3's Mini-UART GPIO pins (pins 14 and 15) using a baud rate of 115200, which yielded a response in the console.<br />
<br />
<br />
<center>[[File:final_rpi3_serial_port.png]]</center><br />
<br />
'''PL011'''<br />
<br />
Getting the PL011 UART to respond was a challenge. Firstly, we enabled the PL011 register in our "hello world" program, and assigned the same baud rate of 115200 to it. Unfortunately, this yielded garbage output. If we know the UART clock frequency, we can calculate the baud rate. To determine reference frequency used by the PL011, we used an oscilloscope and performed the following steps:<br />
* Enabled GPIO pin 4 and programmed it to its ALT0 function. This outputs the clock manager reference frequency at that pin.<br />
* Plugged in our oscilloscope probe to GPIO pin 4 and read its frequency. In its latest firmware, the Raspberry Pi 3 has a 48MHz UART frequency.<br />
<center>[[File:oscill_freq.png]]</center><br />
* Back to our C program: with a programmed divisor of 48MHz (to be used in the baud rate calculation), and TX/RX pins set to be enabled, the computer received a "hello world" from the PL011 UART.<br />
<br />
<br />
<table><br />
<tr><br />
<td style="border-bottom: 2px solid #90b9f9; border-style: dotted solid; border-color: #90b9f9; padding: 15px; background: #90b9f9; border-radius: 25px"><br />
===Porting Xinu Pt. 1: Send/Recv with UART ===<br />
</td><br />
</tr><br />
</table><br />
<br />
Now that necessary measures have been taken to utilize the serial port and understand low-level, bare metal programming with the Pi 3, we can begin upgrading and porting the full research version of Embedded Xinu. Before jumping into the full research version, a good place to start testing is the "lite" educational version of Xinu.<br />
<br />
<br />
'''Demo of kgetc() working in Xinu "Lite" and Full versions:'''<br />
<br />
Xinu says hello! Our team configured Xinu function kgetc() to be used with our working UART. The program waits for a key to be pressed (checking the PL011 flag register's FIFO), and then echoes the output back. In this example, the user entered the character "h":<br />
<center>[[File:kgetc_demo.gif]]</center><br />
<br />
==Remaining updates==<br />
* ATAGS are passed and memory amount is fixed using fixup.dat.<br />
* Cores begin in a parked state. We unparked them and have working concurrency. See our [https://github.com/tomlazar/xinu/tree/feature/multicore GitHub Repository]<br />
* Mutual exclusion being worked on with atomic instructions. Unknown issues regarding cache setup and MMU.</div>Pmcg521https://reu.cs.mu.edu/index.php/Upgrading_Embedded_Xinu_for_the_Multi-Core_Raspberry_Pi_3Upgrading Embedded Xinu for the Multi-Core Raspberry Pi 32017-08-07T09:10:52Z<p>Pmcg521: </p>
<hr />
<div>'''Researchers:''' [[User:Tlazar|Tom Lazar]], [[User:Pmcg521|Patrick J. McGee]], [[User:Rlatinov|Rade Latinovich]] and [[User:Pbansal|Priya Bansal]]<br />
<br />
'''Mentor:''' [[User:Brylow|Dr. Dennis Brylow]]<br />
<br />
==Abstract==<br />
As computer platforms become more advanced, there is an escalating need to teach the complex concepts which they are capable of executing. This paper addresses one such need by presenting XinuPi3, a port of the lightweight instructional operating system {\em Embedded Xinu} to the Raspberry Pi 3. The Raspberry Pi 3 improves upon previous generations of inexpensive, credit card-sized computers by including a quad-core, ARM-based processor, opening the door for educators to demonstrate essential aspects of modern computing like inter-core communication and genuine concurrency.<br />
<br />
Embedded Xinu has proven to be an effective teaching tool for demonstrating low-level concepts on single-core platforms, and it is currently used to teach a range of systems courses at multiple universities. As of this writing, no other bare metal educational operating system supports multicore computing. XinuPi3 provides a suitable learning environment for beginners on genuinely concurrent hardware. This paper provides an overview of the key features of the XinuPi3 system, as well as the novel embedded system education experiences it makes possible.<br />
==Background && Motivation==<br />
<br />
The [http://xinu.mscs.mu.edu Embedded Xinu] infrastructure is a simple operating system designed to introduce students to many low-level computing concepts, including Driver Creation, Exception and Interrupt Handling, and much more. Many universities, such as [http://www.xinu.cs.purdue.edu/#lab Purdue University], [https://wiki.cse.buffalo.edu/services/content/xinu University at Buffalo], and [https://john.cs.olemiss.edu/~ruth/Xinu/Xinu.html University of Mississippi], have created Xinu Labs. These are classrooms running Xinu on multiple embedded devices (either Raspberry Pis or Linksys Routers). [http://www.mscs.mu.edu/~brylow/xinu/ Marquette University uses one such Xinu Lab] to teach its Operating Systems course among other computing courses.<br />
<br />
Using information obtained from past studies, we expand on the current Xinu infrastructure. One of the main goals of this project is to modify Xinu to run on new multi-core Raspberry Pi 3s while still maintaining support for previous platforms. Another goal of this project is to create structures within Xinu which effectively and efficiently use multiple cores.<br />
<br />
'''Our [https://github.com/tomlazar/xinu/tree/feature/multicore GitHub Repository]'''<br />
<br />
==Milestones==<br />
<table><br />
<tr><br />
<td style="border-bottom: 2px solid #ffa556; border-style: solid; border-color: #ffa556; padding: 15px; background: #ffa556; border-radius: 25px"><br />
===Understanding the Pi 3===<br />
</td><br />
</tr><br />
</table><br />
In order to begin porting Xinu onto the new architecture of the Raspberry Pi 3, we first needed to understand the fundamental differences between the Pi 3 and its simpler predecessor, the Pi 1 (which currently runs Xinu in Marquette's Systems Lab). Here is a table of distinctions between the two:<br />
<br />
<table align="center" bgcolor="#fffced" border=1><br />
<tr><br />
<td></td><br />
<td align = "center">'''RPi 1 (Model B)'''</td><br />
<td align = "center">'''RPi 3'''</td><br />
</tr><br />
<br />
<tr><br />
<td align = "center">'''CPU'''</td><br />
<td align = "center">ARM 1176JZF-S</td><br />
<td align = "center">ARM Cortex-A53</td><br />
</tr><br />
<br />
<tr><br />
<td align = "center">'''Architecture'''</td><br />
<td align = "center">ARMv6 (32-bit)</td><br />
<td align = "center">ARMv8 (64-bit)</td><br />
</tr><br />
<br />
<tr><br />
<td align = "center">'''Cores'''</td><br />
<td align = "center">One</td><br />
<td align = "center">Four</td><br />
</tr><br />
<br />
<tr><br />
<td align = "center">'''Registers'''</td><br />
<td align = "center">16</td><br />
<td align = "center">32</td><br />
<br />
<tr><br />
<td align = "center">'''RAM'''</td><br />
<td align = "center">512MB</td><br />
<td align = "center">1GB</td><br />
<br />
<tr><br />
<td align = "center">'''SoC'''</td><br />
<td align = "center">BCM2835</td><br />
<td align = "center">BCM2837</td><br />
<br />
</table><br />
<br />
Unfortunately, the documentation for the Raspberry Pi 3's System on Chip is sparse. However, deeper digging yielded more knowledge on how past Raspberry Pi systems have worked. With such information, it is safe to infer that the Pi 3's SoC is most likely similar to that of its predecessors. Below is a diagram of the Pi's boot order and compilation:<br />
<br />
<center>[[File:rpi3_boot_order.png]][[File:placeholder.png]][[File:compilation_diagram_pi3(2).png]]</center><br />
<br />
<br />
<table><br />
<tr><br />
<td style="border-bottom: 2px solid #72eab2; border-style: solid; border-color: #72eab2; padding: 15px; background: #72eab2; border-radius: 25px"><br />
===Hello World Pt. 1: Bare Metal LED Program===<br />
</td><br />
</tr><br />
</table><br />
<br />
*Got a bare metal program to run on our Raspberry Pi 3<br />
*:- Using our own C program: Turned on an LED light using GPIO pin 16 on our Pi<br />
<center>[[File:GPIO_key.png]]</center><br />
*:- Reprocessed our C code into ARM64 Assembly code, and used it to turn on an LED using the same pins as before.<br />
<center>[[File:pi_LED.png]][[File:pi_LED2.png]]</center><br />
<center>[[File:AmazingXINU3.0.gif]]</center><br />
<br />
<br />
<table><br />
<tr><br />
<td style="border-bottom: 2px solid #ff5a30; border-style: dotted solid; border-color: #ff5a30; padding: 15px; background: #ff5a30; border-radius: 25px"><br />
===Hello World Pt. 2: Utilizing the Serial Port===<br />
</td><br />
</tr><br />
</table><br />
There are two UARTs on the Raspberry Pi 3: the mini UART and the PL011. The mini UART is used for Linux console output. The PL011 is generally more reliable and more versatile than the mini UART, mainly because the mini UART has a direct baud rate link to the Pi 3's Graphics Processor (VPU) clock speed. Contrasting the two UARTs:<br />
<table align="center" bgcolor="#fffced" border=1><br />
<tr><br />
<td></td><br />
<td align = "center">'''Mini UART'''</td><br />
<td align = "center">'''PL011'''</td><br />
</tr><br />
<br />
<tr><br />
<td align = "center">'''Break detection'''</td><br />
<td align = "center">&#x2718;</td><br />
<td align = "center">&#x2714;</td><br />
</tr><br />
<br />
<tr><br />
<td align = "center">'''Framing errors detection'''</td><br />
<td align = "center">&#x2718;</td><br />
<td align = "center">&#x2714;</td><br />
</tr><br />
<br />
<tr><br />
<td align = "center">'''Parity bit'''</td><br />
<td align = "center">&#x2718;</td><br />
<td align = "center">&#x2714;</td><br />
</tr><br />
<br />
<tr><br />
<td align = "center">'''Large FIFOs'''</td><br />
<td align = "center">&#x2718;</td><br />
<td align = "center">&#x2714;</td><br />
</tr><br />
<br />
<tr><br />
<td align = "center">'''Flow control'''</td><br />
<td align = "center">&#x2718;</td><br />
<td align = "center">&#x2714;</td><br />
</tr><br />
<br />
</table><br />
<br />
'''Mini UART'''<br />
* Our team created a "hello world" C program by sending a string using Xinu's puts() function. After initializing the serial pins within the program, we connected the R232 serial adapter from a computer (via ethernet) to our Pi 3's Mini-UART GPIO pins (pins 14 and 15) using a baud rate of 115200, which yielded a response in the console.<br />
<br />
<br />
<center>[[File:final_rpi3_serial_port.png]]</center><br />
<br />
'''PL011'''<br />
<br />
Getting the PL011 UART to respond was a challenge. Firstly, we enabled the PL011 register in our "hello world" program, and assigned the same baud rate of 115200 to it. Unfortunately, this yielded garbage output. If we know the UART clock frequency, we can calculate the baud rate. To determine reference frequency used by the PL011, we used an oscilloscope and performed the following steps:<br />
* Enabled GPIO pin 4 and programmed it to its ALT0 function. This outputs the clock manager reference frequency at that pin.<br />
* Plugged in our oscilloscope probe to GPIO pin 4 and read its frequency. In its latest firmware, the Raspberry Pi 3 has a 48MHz UART frequency.<br />
<center>[[File:oscill_freq.png]]</center><br />
* Back to our C program: with a programmed divisor of 48MHz (to be used in the baud rate calculation), and TX/RX pins set to be enabled, the computer received a "hello world" from the PL011 UART.<br />
<br />
<br />
<table><br />
<tr><br />
<td style="border-bottom: 2px solid #90b9f9; border-style: dotted solid; border-color: #90b9f9; padding: 15px; background: #90b9f9; border-radius: 25px"><br />
===Porting Xinu Pt. 1: Send/Recv with UART ===<br />
</td><br />
</tr><br />
</table><br />
<br />
Now that necessary measures have been taken to utilize the serial port and understand low-level, bare metal programming with the Pi 3, we can begin upgrading and porting the full research version of Embedded Xinu. Before jumping into the full research version, a good place to start testing is the "lite" educational version of Xinu.<br />
<br />
<br />
'''Demo of kgetc() working in Xinu "Lite" and Full versions:'''<br />
<br />
Xinu says hello! Our team configured Xinu function kgetc() to be used with our working UART. The program waits for a key to be pressed (checking the PL011 flag register's FIFO), and then echoes the output back. In this example, the user entered the character "h":<br />
<center>[[File:kgetc_demo.gif]]</center><br />
<br />
==Remaining updates==<br />
* ATAGS are passed and memory amount is fixed using fixup.dat.<br />
* Cores begin in a parked state. We unparked them and have working concurrency. See our [https://github.com/tomlazar/xinu/tree/feature/multicore GitHub Repository]<br />
* Mutual exclusion being worked on with atomic instructions. Unknown issues regarding cache setup and MMU.</div>Pmcg521https://reu.cs.mu.edu/index.php/Upgrading_Embedded_Xinu_for_the_Multi-Core_Raspberry_Pi_3Upgrading Embedded Xinu for the Multi-Core Raspberry Pi 32017-08-07T09:09:48Z<p>Pmcg521: </p>
<hr />
<div>'''Researchers:''' [[User:Tlazar|Tom Lazar]], [[User:Pmcg521|Patrick J. McGee]], [[User:Rlatinov|Rade Latinovich]] and [[User:Pbansal|Priya Bansal]]<br />
<br />
'''Mentor:''' [[User:Brylow|Dr. Dennis Brylow]]<br />
==Abstract==<br />
As computer platforms become more advanced, there is an escalating need to teach the complex concepts which they are capable of executing. This paper addresses one such need by presenting XinuPi3, a port of the lightweight instructional operating system {\em Embedded Xinu} to the Raspberry Pi 3. The Raspberry Pi 3 improves upon previous generations of inexpensive, credit card-sized computers by including a quad-core, ARM-based processor, opening the door for educators to demonstrate essential aspects of modern computing like inter-core communication and genuine concurrency.<br />
<br />
Embedded Xinu has proven to be an effective teaching tool for demonstrating low-level concepts on single-core platforms, and it is currently used to teach a range of systems courses at multiple universities. As of this writing, no other bare metal educational operating system supports multicore computing. XinuPi3 provides a suitable learning environment for beginners on genuinely concurrent hardware. This paper provides an overview of the key features of the XinuPi3 system, as well as the novel embedded system education experiences it makes possible.<br />
==Background && Motivation==<br />
<br />
The [http://xinu.mscs.mu.edu Embedded Xinu] infrastructure is a simple operating system designed to introduce students to many low-level computing concepts, including Driver Creation, Exception and Interrupt Handling, and much more. Many universities, such as [http://www.xinu.cs.purdue.edu/#lab Purdue University], [https://wiki.cse.buffalo.edu/services/content/xinu University at Buffalo], and [https://john.cs.olemiss.edu/~ruth/Xinu/Xinu.html University of Mississippi], have created Xinu Labs. These are classrooms running Xinu on multiple embedded devices (either Raspberry Pis or Linksys Routers). [http://www.mscs.mu.edu/~brylow/xinu/ Marquette University uses one such Xinu Lab] to teach its Operating Systems course among other computing courses.<br />
<br />
Using information obtained from past studies, we expand on the current Xinu infrastructure. One of the main goals of this project is to modify Xinu to run on new multi-core Raspberry Pi 3s while still maintaining support for previous platforms. Another goal of this project is to create structures within Xinu which effectively and efficiently use multiple cores.<br />
<br />
==Milestones==<br />
<table><br />
<tr><br />
<td style="border-bottom: 2px solid #ffa556; border-style: solid; border-color: #ffa556; padding: 15px; background: #ffa556; border-radius: 25px"><br />
===Understanding the Pi 3===<br />
</td><br />
</tr><br />
</table><br />
In order to begin porting Xinu onto the new architecture of the Raspberry Pi 3, we first needed to understand the fundamental differences between the Pi 3 and its simpler predecessor, the Pi 1 (which currently runs Xinu in Marquette's Systems Lab). Here is a table of distinctions between the two:<br />
<br />
<table align="center" bgcolor="#fffced" border=1><br />
<tr><br />
<td></td><br />
<td align = "center">'''RPi 1 (Model B)'''</td><br />
<td align = "center">'''RPi 3'''</td><br />
</tr><br />
<br />
<tr><br />
<td align = "center">'''CPU'''</td><br />
<td align = "center">ARM 1176JZF-S</td><br />
<td align = "center">ARM Cortex-A53</td><br />
</tr><br />
<br />
<tr><br />
<td align = "center">'''Architecture'''</td><br />
<td align = "center">ARMv6 (32-bit)</td><br />
<td align = "center">ARMv8 (64-bit)</td><br />
</tr><br />
<br />
<tr><br />
<td align = "center">'''Cores'''</td><br />
<td align = "center">One</td><br />
<td align = "center">Four</td><br />
</tr><br />
<br />
<tr><br />
<td align = "center">'''Registers'''</td><br />
<td align = "center">16</td><br />
<td align = "center">32</td><br />
<br />
<tr><br />
<td align = "center">'''RAM'''</td><br />
<td align = "center">512MB</td><br />
<td align = "center">1GB</td><br />
<br />
<tr><br />
<td align = "center">'''SoC'''</td><br />
<td align = "center">BCM2835</td><br />
<td align = "center">BCM2837</td><br />
<br />
</table><br />
<br />
Unfortunately, the documentation for the Raspberry Pi 3's System on Chip is sparse. However, deeper digging yielded more knowledge on how past Raspberry Pi systems have worked. With such information, it is safe to infer that the Pi 3's SoC is most likely similar to that of its predecessors. Below is a diagram of the Pi's boot order and compilation:<br />
<br />
<center>[[File:rpi3_boot_order.png]][[File:placeholder.png]][[File:compilation_diagram_pi3(2).png]]</center><br />
<br />
<br />
<table><br />
<tr><br />
<td style="border-bottom: 2px solid #72eab2; border-style: solid; border-color: #72eab2; padding: 15px; background: #72eab2; border-radius: 25px"><br />
===Hello World Pt. 1: Bare Metal LED Program===<br />
</td><br />
</tr><br />
</table><br />
<br />
*Got a bare metal program to run on our Raspberry Pi 3<br />
*:- Using our own C program: Turned on an LED light using GPIO pin 16 on our Pi<br />
<center>[[File:GPIO_key.png]]</center><br />
*:- Reprocessed our C code into ARM64 Assembly code, and used it to turn on an LED using the same pins as before.<br />
<center>[[File:pi_LED.png]][[File:pi_LED2.png]]</center><br />
<center>[[File:AmazingXINU3.0.gif]]</center><br />
<br />
<br />
<table><br />
<tr><br />
<td style="border-bottom: 2px solid #ff5a30; border-style: dotted solid; border-color: #ff5a30; padding: 15px; background: #ff5a30; border-radius: 25px"><br />
===Hello World Pt. 2: Utilizing the Serial Port===<br />
</td><br />
</tr><br />
</table><br />
There are two UARTs on the Raspberry Pi 3: the mini UART and the PL011. The mini UART is used for Linux console output. The PL011 is generally more reliable and more versatile than the mini UART, mainly because the mini UART has a direct baud rate link to the Pi 3's Graphics Processor (VPU) clock speed. Contrasting the two UARTs:<br />
<table align="center" bgcolor="#fffced" border=1><br />
<tr><br />
<td></td><br />
<td align = "center">'''Mini UART'''</td><br />
<td align = "center">'''PL011'''</td><br />
</tr><br />
<br />
<tr><br />
<td align = "center">'''Break detection'''</td><br />
<td align = "center">&#x2718;</td><br />
<td align = "center">&#x2714;</td><br />
</tr><br />
<br />
<tr><br />
<td align = "center">'''Framing errors detection'''</td><br />
<td align = "center">&#x2718;</td><br />
<td align = "center">&#x2714;</td><br />
</tr><br />
<br />
<tr><br />
<td align = "center">'''Parity bit'''</td><br />
<td align = "center">&#x2718;</td><br />
<td align = "center">&#x2714;</td><br />
</tr><br />
<br />
<tr><br />
<td align = "center">'''Large FIFOs'''</td><br />
<td align = "center">&#x2718;</td><br />
<td align = "center">&#x2714;</td><br />
</tr><br />
<br />
<tr><br />
<td align = "center">'''Flow control'''</td><br />
<td align = "center">&#x2718;</td><br />
<td align = "center">&#x2714;</td><br />
</tr><br />
<br />
</table><br />
<br />
'''Mini UART'''<br />
* Our team created a "hello world" C program by sending a string using Xinu's puts() function. After initializing the serial pins within the program, we connected the R232 serial adapter from a computer (via ethernet) to our Pi 3's Mini-UART GPIO pins (pins 14 and 15) using a baud rate of 115200, which yielded a response in the console.<br />
<br />
<br />
<center>[[File:final_rpi3_serial_port.png]]</center><br />
<br />
'''PL011'''<br />
<br />
Getting the PL011 UART to respond was a challenge. Firstly, we enabled the PL011 register in our "hello world" program, and assigned the same baud rate of 115200 to it. Unfortunately, this yielded garbage output. If we know the UART clock frequency, we can calculate the baud rate. To determine reference frequency used by the PL011, we used an oscilloscope and performed the following steps:<br />
* Enabled GPIO pin 4 and programmed it to its ALT0 function. This outputs the clock manager reference frequency at that pin.<br />
* Plugged in our oscilloscope probe to GPIO pin 4 and read its frequency. In its latest firmware, the Raspberry Pi 3 has a 48MHz UART frequency.<br />
<center>[[File:oscill_freq.png]]</center><br />
* Back to our C program: with a programmed divisor of 48MHz (to be used in the baud rate calculation), and TX/RX pins set to be enabled, the computer received a "hello world" from the PL011 UART.<br />
<br />
<br />
<table><br />
<tr><br />
<td style="border-bottom: 2px solid #90b9f9; border-style: dotted solid; border-color: #90b9f9; padding: 15px; background: #90b9f9; border-radius: 25px"><br />
===Porting Xinu Pt. 1: Send/Recv with UART ===<br />
</td><br />
</tr><br />
</table><br />
<br />
Now that necessary measures have been taken to utilize the serial port and understand low-level, bare metal programming with the Pi 3, we can begin upgrading and porting the full research version of Embedded Xinu. Before jumping into the full research version, a good place to start testing is the "lite" educational version of Xinu.<br />
<br />
<br />
'''Demo of kgetc() working in Xinu "Lite" and Full versions:'''<br />
<br />
Xinu says hello! Our team configured Xinu function kgetc() to be used with our working UART. The program waits for a key to be pressed (checking the PL011 flag register's FIFO), and then echoes the output back. In this example, the user entered the character "h":<br />
<center>[[File:kgetc_demo.gif]]</center><br />
<br />
==Remaining updates==<br />
* ATAGS are passed and memory amount is fixed using fixup.dat.<br />
* Cores begin in a parked state. We unparked them and have working concurrency. See our [https://github.com/tomlazar/xinu/tree/feature/multicore GitHub Repository]<br />
* Mutual exclusion being worked on with atomic instructions. Unknown issues regarding cache setup and MMU.</div>Pmcg521https://reu.cs.mu.edu/index.php/Upgrading_Embedded_Xinu_for_the_Multi-Core_Raspberry_Pi_3Upgrading Embedded Xinu for the Multi-Core Raspberry Pi 32017-08-07T09:09:41Z<p>Pmcg521: </p>
<hr />
<div>'''Researchers:''' [[User:Tlazar|Tom Lazar]], [[User:Pmcg521|Patrick J. McGee]], [[User:Rlatinov|Rade Latinovich]] and [[User:Pbansal|Priya Bansal]]<br />
<br />
'''Mentor:''' [[User:Brylow|Dr. Dennis Brylow]]<br />
==Abstract==<br />
As computer platforms become more advanced, there is an escalating need to teach the complex concepts which they are capable of executing. This paper addresses one such need by presenting XinuPi3, a port of the lightweight instructional operating system {\em Embedded Xinu} to the Raspberry Pi 3. The Raspberry Pi 3 improves upon previous generations of inexpensive, credit card-sized computers by including a quad-core, ARM-based processor, opening the door for educators to demonstrate essential aspects of modern computing like inter-core communication and genuine concurrency.<br />
<br />
Embedded Xinu has proven to be an effective teaching tool for demonstrating low-level concepts on single-core platforms, and it is currently used to teach a range of systems courses at multiple universities. As of this writing, no other bare metal educational operating system supports multicore computing. XinuPi3 provides a suitable learning environment for beginners on genuinely concurrent hardware. This paper provides an overview of the key features of the XinuPi3 system, as well as the novel embedded system education experiences it makes possible.<br />
==Background && Motivation==<br />
<br />
The [http://xinu.mscs.mu.edu Embedded Xinu] infrastructure is a simple operating system designed to introduce students to many low-level computing concepts, including Driver Creation, Exception and Interrupt Handling, and much more. Many universities, such as [http://www.xinu.cs.purdue.edu/#lab Purdue University], [https://wiki.cse.buffalo.edu/services/content/xinu University at Buffalo], and [https://john.cs.olemiss.edu/~ruth/Xinu/Xinu.html University of Mississippi], have created Xinu Labs. These are classrooms running Xinu on multiple embedded devices (either Raspberry Pis or Linksys Routers). [http://www.mscs.mu.edu/~brylow/xinu/ Marquette University uses one such Xinu Lab] to teach its Operating Systems course among other computing courses.<br />
<br />
Using information obtained from past studies, we expand on the current Xinu infrastructure. One of the main goals of this project is to modify Xinu to run on new multi-core Raspberry Pi 3s while still maintaining support for previous platforms. Another goal of this project is to create structures within Xinu which effectively and efficiently use multiple cores.<br />
<br />
==Milestones==<br />
<table><br />
<tr><br />
<td style="border-bottom: 2px solid #ffa556; border-style: solid; border-color: #ffa556; padding: 15px; background: #ffa556; border-radius: 25px"><br />
===Understanding the Pi 3===<br />
</td><br />
</tr><br />
</table><br />
In order to begin porting Xinu onto the new architecture of the Raspberry Pi 3, we first needed to understand the fundamental differences between the Pi 3 and its simpler predecessor, the Pi 1 (which currently runs Xinu in Marquette's Systems Lab). Here is a table of distinctions between the two:<br />
<br />
<table align="center" bgcolor="#fffced" border=1><br />
<tr><br />
<td></td><br />
<td align = "center">'''RPi 1 (Model B)'''</td><br />
<td align = "center">'''RPi 3'''</td><br />
</tr><br />
<br />
<tr><br />
<td align = "center">'''CPU'''</td><br />
<td align = "center">ARM 1176JZF-S</td><br />
<td align = "center">ARM Cortex-A53</td><br />
</tr><br />
<br />
<tr><br />
<td align = "center">'''Architecture'''</td><br />
<td align = "center">ARMv6 (32-bit)</td><br />
<td align = "center">ARMv8 (64-bit)</td><br />
</tr><br />
<br />
<tr><br />
<td align = "center">'''Cores'''</td><br />
<td align = "center">One</td><br />
<td align = "center">Four</td><br />
</tr><br />
<br />
<tr><br />
<td align = "center">'''Registers'''</td><br />
<td align = "center">16</td><br />
<td align = "center">32</td><br />
<br />
<tr><br />
<td align = "center">'''RAM'''</td><br />
<td align = "center">512MB</td><br />
<td align = "center">1GB</td><br />
<br />
<tr><br />
<td align = "center">'''SoC'''</td><br />
<td align = "center">BCM2835</td><br />
<td align = "center">BCM2837</td><br />
<br />
</table><br />
<br />
Unfortunately, the documentation for the Raspberry Pi 3's System on Chip is sparse. However, deeper digging yielded more knowledge on how past Raspberry Pi systems have worked. With such information, it is safe to infer that the Pi 3's SoC is most likely similar to that of its predecessors. Below is a diagram of the Pi's boot order and compilation:<br />
<br />
<center>[[File:rpi3_boot_order.png]][[File:placeholder.png]][[File:compilation_diagram_pi3(2).png]]</center><br />
<br />
<br />
<table><br />
<tr><br />
<td style="border-bottom: 2px solid #72eab2; border-style: solid; border-color: #72eab2; padding: 15px; background: #72eab2; border-radius: 25px"><br />
===Hello World Pt. 1: Bare Metal LED Program===<br />
</td><br />
</tr><br />
</table><br />
<br />
*Got a bare metal program to run on our Raspberry Pi 3<br />
*:- Using our own C program: Turned on an LED light using GPIO pin 16 on our Pi<br />
<center>[[File:GPIO_key.png]]</center><br />
*:- Reprocessed our C code into ARM64 Assembly code, and used it to turn on an LED using the same pins as before.<br />
<center>[[File:pi_LED.png]][[File:pi_LED2.png]]</center><br />
<center>[[File:AmazingXINU3.0.gif]]</center><br />
<br />
<br />
<table><br />
<tr><br />
<td style="border-bottom: 2px solid #ff5a30; border-style: dotted solid; border-color: #ff5a30; padding: 15px; background: #ff5a30; border-radius: 25px"><br />
===Hello World Pt. 2: Utilizing the Serial Port===<br />
</td><br />
</tr><br />
</table><br />
There are two UARTs on the Raspberry Pi 3: the mini UART and the PL011. The mini UART is used for Linux console output. The PL011 is generally more reliable and more versatile than the mini UART, mainly because the mini UART has a direct baud rate link to the Pi 3's Graphics Processor (VPU) clock speed. Contrasting the two UARTs:<br />
<table align="center" bgcolor="#fffced" border=1><br />
<tr><br />
<td></td><br />
<td align = "center">'''Mini UART'''</td><br />
<td align = "center">'''PL011'''</td><br />
</tr><br />
<br />
<tr><br />
<td align = "center">'''Break detection'''</td><br />
<td align = "center">&#x2718;</td><br />
<td align = "center">&#x2714;</td><br />
</tr><br />
<br />
<tr><br />
<td align = "center">'''Framing errors detection'''</td><br />
<td align = "center">&#x2718;</td><br />
<td align = "center">&#x2714;</td><br />
</tr><br />
<br />
<tr><br />
<td align = "center">'''Parity bit'''</td><br />
<td align = "center">&#x2718;</td><br />
<td align = "center">&#x2714;</td><br />
</tr><br />
<br />
<tr><br />
<td align = "center">'''Large FIFOs'''</td><br />
<td align = "center">&#x2718;</td><br />
<td align = "center">&#x2714;</td><br />
</tr><br />
<br />
<tr><br />
<td align = "center">'''Flow control'''</td><br />
<td align = "center">&#x2718;</td><br />
<td align = "center">&#x2714;</td><br />
</tr><br />
<br />
</table><br />
<br />
'''Mini UART'''<br />
* Our team created a "hello world" C program by sending a string using Xinu's puts() function. After initializing the serial pins within the program, we connected the R232 serial adapter from a computer (via ethernet) to our Pi 3's Mini-UART GPIO pins (pins 14 and 15) using a baud rate of 115200, which yielded a response in the console.<br />
<br />
<br />
<center>[[File:final_rpi3_serial_port.png]]</center><br />
<br />
'''PL011'''<br />
<br />
Getting the PL011 UART to respond was a challenge. Firstly, we enabled the PL011 register in our "hello world" program, and assigned the same baud rate of 115200 to it. Unfortunately, this yielded garbage output. If we know the UART clock frequency, we can calculate the baud rate. To determine reference frequency used by the PL011, we used an oscilloscope and performed the following steps:<br />
* Enabled GPIO pin 4 and programmed it to its ALT0 function. This outputs the clock manager reference frequency at that pin.<br />
* Plugged in our oscilloscope probe to GPIO pin 4 and read its frequency. In its latest firmware, the Raspberry Pi 3 has a 48MHz UART frequency.<br />
<center>[[File:oscill_freq.png]]</center><br />
* Back to our C program: with a programmed divisor of 48MHz (to be used in the baud rate calculation), and TX/RX pins set to be enabled, the computer received a "hello world" from the PL011 UART.<br />
<br />
<br />
<table><br />
<tr><br />
<td style="border-bottom: 2px solid #90b9f9; border-style: dotted solid; border-color: #90b9f9; padding: 15px; background: #90b9f9; border-radius: 25px"><br />
===Porting Xinu Pt. 1: Send/Recv with UART ===<br />
</td><br />
</tr><br />
</table><br />
<br />
Now that necessary measures have been taken to utilize the serial port and understand low-level, bare metal programming with the Pi 3, we can begin upgrading and porting the full research version of Embedded Xinu. Before jumping into the full research version, a good place to start testing is the "lite" educational version of Xinu.<br />
<br />
<br />
'''Demo of kgetc() working in Xinu "Lite" and Full versions:'''<br />
<br />
Xinu says hello! Our team configured Xinu function kgetc() to be used with our working UART. The program waits for a key to be pressed (checking the PL011 flag register's FIFO), and then echoes the output back. In this example, the user entered the character "h":<br />
<center>[[File:kgetc_demo.gif]]</center><br />
<br />
==Remaining updates:==<br />
* ATAGS are passed and memory amount is fixed using fixup.dat.<br />
* Cores begin in a parked state. We unparked them and have working concurrency. See our [https://github.com/tomlazar/xinu/tree/feature/multicore GitHub Repository]<br />
* Mutual exclusion being worked on with atomic instructions. Unknown issues regarding cache setup and MMU.</div>Pmcg521https://reu.cs.mu.edu/index.php/Upgrading_Embedded_Xinu_for_the_Multi-Core_Raspberry_Pi_3Upgrading Embedded Xinu for the Multi-Core Raspberry Pi 32017-08-07T09:09:24Z<p>Pmcg521: </p>
<hr />
<div>'''Researchers:''' [[User:Tlazar|Tom Lazar]], [[User:Pmcg521|Patrick J. McGee]], [[User:Rlatinov|Rade Latinovich]] and [[User:Pbansal|Priya Bansal]]<br />
<br />
'''Mentor:''' [[User:Brylow|Dr. Dennis Brylow]]<br />
==Abstract==<br />
As computer platforms become more advanced, there is an escalating need to teach the complex concepts which they are capable of executing. This paper addresses one such need by presenting XinuPi3, a port of the lightweight instructional operating system {\em Embedded Xinu} to the Raspberry Pi 3. The Raspberry Pi 3 improves upon previous generations of inexpensive, credit card-sized computers by including a quad-core, ARM-based processor, opening the door for educators to demonstrate essential aspects of modern computing like inter-core communication and genuine concurrency.<br />
<br />
Embedded Xinu has proven to be an effective teaching tool for demonstrating low-level concepts on single-core platforms, and it is currently used to teach a range of systems courses at multiple universities. As of this writing, no other bare metal educational operating system supports multicore computing. XinuPi3 provides a suitable learning environment for beginners on genuinely concurrent hardware. This paper provides an overview of the key features of the XinuPi3 system, as well as the novel embedded system education experiences it makes possible.<br />
==Background && Motivation==<br />
<br />
The [http://xinu.mscs.mu.edu Embedded Xinu] infrastructure is a simple operating system designed to introduce students to many low-level computing concepts, including Driver Creation, Exception and Interrupt Handling, and much more. Many universities, such as [http://www.xinu.cs.purdue.edu/#lab Purdue University], [https://wiki.cse.buffalo.edu/services/content/xinu University at Buffalo], and [https://john.cs.olemiss.edu/~ruth/Xinu/Xinu.html University of Mississippi], have created Xinu Labs. These are classrooms running Xinu on multiple embedded devices (either Raspberry Pis or Linksys Routers). [http://www.mscs.mu.edu/~brylow/xinu/ Marquette University uses one such Xinu Lab] to teach its Operating Systems course among other computing courses.<br />
<br />
Using information obtained from past studies, we expand on the current Xinu infrastructure. One of the main goals of this project is to modify Xinu to run on new multi-core Raspberry Pi 3s while still maintaining support for previous platforms. Another goal of this project is to create structures within Xinu which effectively and efficiently use multiple cores.<br />
<br />
==Milestones==<br />
<table><br />
<tr><br />
<td style="border-bottom: 2px solid #ffa556; border-style: solid; border-color: #ffa556; padding: 15px; background: #ffa556; border-radius: 25px"><br />
===Understanding the Pi 3===<br />
</td><br />
</tr><br />
</table><br />
In order to begin porting Xinu onto the new architecture of the Raspberry Pi 3, we first needed to understand the fundamental differences between the Pi 3 and its simpler predecessor, the Pi 1 (which currently runs Xinu in Marquette's Systems Lab). Here is a table of distinctions between the two:<br />
<br />
<table align="center" bgcolor="#fffced" border=1><br />
<tr><br />
<td></td><br />
<td align = "center">'''RPi 1 (Model B)'''</td><br />
<td align = "center">'''RPi 3'''</td><br />
</tr><br />
<br />
<tr><br />
<td align = "center">'''CPU'''</td><br />
<td align = "center">ARM 1176JZF-S</td><br />
<td align = "center">ARM Cortex-A53</td><br />
</tr><br />
<br />
<tr><br />
<td align = "center">'''Architecture'''</td><br />
<td align = "center">ARMv6 (32-bit)</td><br />
<td align = "center">ARMv8 (64-bit)</td><br />
</tr><br />
<br />
<tr><br />
<td align = "center">'''Cores'''</td><br />
<td align = "center">One</td><br />
<td align = "center">Four</td><br />
</tr><br />
<br />
<tr><br />
<td align = "center">'''Registers'''</td><br />
<td align = "center">16</td><br />
<td align = "center">32</td><br />
<br />
<tr><br />
<td align = "center">'''RAM'''</td><br />
<td align = "center">512MB</td><br />
<td align = "center">1GB</td><br />
<br />
<tr><br />
<td align = "center">'''SoC'''</td><br />
<td align = "center">BCM2835</td><br />
<td align = "center">BCM2837</td><br />
<br />
</table><br />
<br />
Unfortunately, the documentation for the Raspberry Pi 3's System on Chip is sparse. However, deeper digging yielded more knowledge on how past Raspberry Pi systems have worked. With such information, it is safe to infer that the Pi 3's SoC is most likely similar to that of its predecessors. Below is a diagram of the Pi's boot order and compilation:<br />
<br />
<center>[[File:rpi3_boot_order.png]][[File:placeholder.png]][[File:compilation_diagram_pi3(2).png]]</center><br />
<br />
<br />
<table><br />
<tr><br />
<td style="border-bottom: 2px solid #72eab2; border-style: solid; border-color: #72eab2; padding: 15px; background: #72eab2; border-radius: 25px"><br />
===Hello World Pt. 1: Bare Metal LED Program===<br />
</td><br />
</tr><br />
</table><br />
<br />
*Got a bare metal program to run on our Raspberry Pi 3<br />
*:- Using our own C program: Turned on an LED light using GPIO pin 16 on our Pi<br />
<center>[[File:GPIO_key.png]]</center><br />
*:- Reprocessed our C code into ARM64 Assembly code, and used it to turn on an LED using the same pins as before.<br />
<center>[[File:pi_LED.png]][[File:pi_LED2.png]]</center><br />
<center>[[File:AmazingXINU3.0.gif]]</center><br />
<br />
<br />
<table><br />
<tr><br />
<td style="border-bottom: 2px solid #ff5a30; border-style: dotted solid; border-color: #ff5a30; padding: 15px; background: #ff5a30; border-radius: 25px"><br />
===Hello World Pt. 2: Utilizing the Serial Port===<br />
</td><br />
</tr><br />
</table><br />
There are two UARTs on the Raspberry Pi 3: the mini UART and the PL011. The mini UART is used for Linux console output. The PL011 is generally more reliable and more versatile than the mini UART, mainly because the mini UART has a direct baud rate link to the Pi 3's Graphics Processor (VPU) clock speed. Contrasting the two UARTs:<br />
<table align="center" bgcolor="#fffced" border=1><br />
<tr><br />
<td></td><br />
<td align = "center">'''Mini UART'''</td><br />
<td align = "center">'''PL011'''</td><br />
</tr><br />
<br />
<tr><br />
<td align = "center">'''Break detection'''</td><br />
<td align = "center">&#x2718;</td><br />
<td align = "center">&#x2714;</td><br />
</tr><br />
<br />
<tr><br />
<td align = "center">'''Framing errors detection'''</td><br />
<td align = "center">&#x2718;</td><br />
<td align = "center">&#x2714;</td><br />
</tr><br />
<br />
<tr><br />
<td align = "center">'''Parity bit'''</td><br />
<td align = "center">&#x2718;</td><br />
<td align = "center">&#x2714;</td><br />
</tr><br />
<br />
<tr><br />
<td align = "center">'''Large FIFOs'''</td><br />
<td align = "center">&#x2718;</td><br />
<td align = "center">&#x2714;</td><br />
</tr><br />
<br />
<tr><br />
<td align = "center">'''Flow control'''</td><br />
<td align = "center">&#x2718;</td><br />
<td align = "center">&#x2714;</td><br />
</tr><br />
<br />
</table><br />
<br />
'''Mini UART'''<br />
* Our team created a "hello world" C program by sending a string using Xinu's puts() function. After initializing the serial pins within the program, we connected the R232 serial adapter from a computer (via ethernet) to our Pi 3's Mini-UART GPIO pins (pins 14 and 15) using a baud rate of 115200, which yielded a response in the console.<br />
<br />
<br />
<center>[[File:final_rpi3_serial_port.png]]</center><br />
<br />
'''PL011'''<br />
<br />
Getting the PL011 UART to respond was a challenge. Firstly, we enabled the PL011 register in our "hello world" program, and assigned the same baud rate of 115200 to it. Unfortunately, this yielded garbage output. If we know the UART clock frequency, we can calculate the baud rate. To determine reference frequency used by the PL011, we used an oscilloscope and performed the following steps:<br />
* Enabled GPIO pin 4 and programmed it to its ALT0 function. This outputs the clock manager reference frequency at that pin.<br />
* Plugged in our oscilloscope probe to GPIO pin 4 and read its frequency. In its latest firmware, the Raspberry Pi 3 has a 48MHz UART frequency.<br />
<center>[[File:oscill_freq.png]]</center><br />
* Back to our C program: with a programmed divisor of 48MHz (to be used in the baud rate calculation), and TX/RX pins set to be enabled, the computer received a "hello world" from the PL011 UART.<br />
<br />
<br />
<table><br />
<tr><br />
<td style="border-bottom: 2px solid #90b9f9; border-style: dotted solid; border-color: #90b9f9; padding: 15px; background: #90b9f9; border-radius: 25px"><br />
===Porting Xinu Pt. 1: Send/Recv with UART ===<br />
</td><br />
</tr><br />
</table><br />
<br />
Now that necessary measures have been taken to utilize the serial port and understand low-level, bare metal programming with the Pi 3, we can begin upgrading and porting the full research version of Embedded Xinu. Before jumping into the full research version, a good place to start testing is the "lite" educational version of Xinu.<br />
<br />
<br />
'''Demo of kgetc() working in Xinu "Lite" and Full versions:'''<br />
<br />
Xinu says hello! Our team configured Xinu function kgetc() to be used with our working UART. The program waits for a key to be pressed (checking the PL011 flag register's FIFO), and then echoes the output back. In this example, the user entered the character "h":<br />
<center>[[File:kgetc_demo.gif]]</center><br />
<br />
==Follow-up updates:==<br />
* ATAGS are passed and memory amount is fixed using fixup.dat.<br />
* Cores begin in a parked state. We unparked them and have working concurrency. See our [https://github.com/tomlazar/xinu/tree/feature/multicore GitHub Repository]<br />
* Mutual exclusion being worked on with atomic instructions. Unknown issues regarding cache setup and MMU.</div>Pmcg521https://reu.cs.mu.edu/index.php/Upgrading_Embedded_Xinu_for_the_Multi-Core_Raspberry_Pi_3Upgrading Embedded Xinu for the Multi-Core Raspberry Pi 32017-08-07T09:08:44Z<p>Pmcg521: </p>
<hr />
<div>'''Researchers:''' [[User:Tlazar|Tom Lazar]], [[User:Pmcg521|Patrick J. McGee]], [[User:Rlatinov|Rade Latinovich]] and [[User:Pbansal|Priya Bansal]]<br />
<br />
'''Mentor:''' [[User:Brylow|Dr. Dennis Brylow]]<br />
==Abstract==<br />
As computer platforms become more advanced, there is an escalating need to teach the complex concepts which they are capable of executing. This paper addresses one such need by presenting XinuPi3, a port of the lightweight instructional operating system {\em Embedded Xinu} to the Raspberry Pi 3. The Raspberry Pi 3 improves upon previous generations of inexpensive, credit card-sized computers by including a quad-core, ARM-based processor, opening the door for educators to demonstrate essential aspects of modern computing like inter-core communication and genuine concurrency.<br />
<br />
Embedded Xinu has proven to be an effective teaching tool for demonstrating low-level concepts on single-core platforms, and it is currently used to teach a range of systems courses at multiple universities. As of this writing, no other bare metal educational operating system supports multicore computing. XinuPi3 provides a suitable learning environment for beginners on genuinely concurrent hardware. This paper provides an overview of the key features of the XinuPi3 system, as well as the novel embedded system education experiences it makes possible.<br />
==Background && Motivation==<br />
<br />
The [http://xinu.mscs.mu.edu Embedded Xinu] infrastructure is a simple operating system designed to introduce students to many low-level computing concepts, including Driver Creation, Exception and Interrupt Handling, and much more. Many universities, such as [http://www.xinu.cs.purdue.edu/#lab Purdue University], [https://wiki.cse.buffalo.edu/services/content/xinu University at Buffalo], and [https://john.cs.olemiss.edu/~ruth/Xinu/Xinu.html University of Mississippi], have created Xinu Labs. These are classrooms running Xinu on multiple embedded devices (either Raspberry Pis or Linksys Routers). [http://www.mscs.mu.edu/~brylow/xinu/ Marquette University uses one such Xinu Lab] to teach its Operating Systems course among other computing courses.<br />
<br />
Using information obtained from past studies, we expand on the current Xinu infrastructure. One of the main goals of this project is to modify Xinu to run on new multi-core Raspberry Pi 3s while still maintaining support for previous platforms. Another goal of this project is to create structures within Xinu which effectively and efficiently use multiple cores.<br />
<br />
==Milestones==<br />
<table><br />
<tr><br />
<td style="border-bottom: 2px solid #ffa556; border-style: solid; border-color: #ffa556; padding: 15px; background: #ffa556; border-radius: 25px"><br />
===Understanding the Pi 3===<br />
</td><br />
</tr><br />
</table><br />
In order to begin porting Xinu onto the new architecture of the Raspberry Pi 3, we first needed to understand the fundamental differences between the Pi 3 and its simpler predecessor, the Pi 1 (which currently runs Xinu in Marquette's Systems Lab). Here is a table of distinctions between the two:<br />
<br />
<table align="center" bgcolor="#fffced" border=1><br />
<tr><br />
<td></td><br />
<td align = "center">'''RPi 1 (Model B)'''</td><br />
<td align = "center">'''RPi 3'''</td><br />
</tr><br />
<br />
<tr><br />
<td align = "center">'''CPU'''</td><br />
<td align = "center">ARM 1176JZF-S</td><br />
<td align = "center">ARM Cortex-A53</td><br />
</tr><br />
<br />
<tr><br />
<td align = "center">'''Architecture'''</td><br />
<td align = "center">ARMv6 (32-bit)</td><br />
<td align = "center">ARMv8 (64-bit)</td><br />
</tr><br />
<br />
<tr><br />
<td align = "center">'''Cores'''</td><br />
<td align = "center">One</td><br />
<td align = "center">Four</td><br />
</tr><br />
<br />
<tr><br />
<td align = "center">'''Registers'''</td><br />
<td align = "center">16</td><br />
<td align = "center">32</td><br />
<br />
<tr><br />
<td align = "center">'''RAM'''</td><br />
<td align = "center">512MB</td><br />
<td align = "center">1GB</td><br />
<br />
<tr><br />
<td align = "center">'''SoC'''</td><br />
<td align = "center">BCM2835</td><br />
<td align = "center">BCM2837</td><br />
<br />
</table><br />
<br />
Unfortunately, the documentation for the Raspberry Pi 3's System on Chip is sparse. However, deeper digging yielded more knowledge on how past Raspberry Pi systems have worked. With such information, it is safe to infer that the Pi 3's SoC is most likely similar to that of its predecessors. Below is a diagram of the Pi's boot order and compilation:<br />
<br />
<center>[[File:rpi3_boot_order.png]][[File:placeholder.png]][[File:compilation_diagram_pi3(2).png]]</center><br />
<br />
<br />
<table><br />
<tr><br />
<td style="border-bottom: 2px solid #72eab2; border-style: solid; border-color: #72eab2; padding: 15px; background: #72eab2; border-radius: 25px"><br />
===Hello World Pt. 1: Bare Metal LED Program===<br />
</td><br />
</tr><br />
</table><br />
<br />
*Got a bare metal program to run on our Raspberry Pi 3<br />
*:- Using our own C program: Turned on an LED light using GPIO pin 16 on our Pi<br />
<center>[[File:GPIO_key.png]]</center><br />
*:- Reprocessed our C code into ARM64 Assembly code, and used it to turn on an LED using the same pins as before.<br />
<center>[[File:pi_LED.png]][[File:pi_LED2.png]]</center><br />
<center>[[File:AmazingXINU3.0.gif]]</center><br />
<br />
<br />
<table><br />
<tr><br />
<td style="border-bottom: 2px solid #ff5a30; border-style: dotted solid; border-color: #ff5a30; padding: 15px; background: #ff5a30; border-radius: 25px"><br />
===Hello World Pt. 2: Utilizing the Serial Port===<br />
</td><br />
</tr><br />
</table><br />
There are two UARTs on the Raspberry Pi 3: the mini UART and the PL011. The mini UART is used for Linux console output. The PL011 is generally more reliable and more versatile than the mini UART, mainly because the mini UART has a direct baud rate link to the Pi 3's Graphics Processor (VPU) clock speed. Contrasting the two UARTs:<br />
<table align="center" bgcolor="#fffced" border=1><br />
<tr><br />
<td></td><br />
<td align = "center">'''Mini UART'''</td><br />
<td align = "center">'''PL011'''</td><br />
</tr><br />
<br />
<tr><br />
<td align = "center">'''Break detection'''</td><br />
<td align = "center">&#x2718;</td><br />
<td align = "center">&#x2714;</td><br />
</tr><br />
<br />
<tr><br />
<td align = "center">'''Framing errors detection'''</td><br />
<td align = "center">&#x2718;</td><br />
<td align = "center">&#x2714;</td><br />
</tr><br />
<br />
<tr><br />
<td align = "center">'''Parity bit'''</td><br />
<td align = "center">&#x2718;</td><br />
<td align = "center">&#x2714;</td><br />
</tr><br />
<br />
<tr><br />
<td align = "center">'''Large FIFOs'''</td><br />
<td align = "center">&#x2718;</td><br />
<td align = "center">&#x2714;</td><br />
</tr><br />
<br />
<tr><br />
<td align = "center">'''Flow control'''</td><br />
<td align = "center">&#x2718;</td><br />
<td align = "center">&#x2714;</td><br />
</tr><br />
<br />
</table><br />
<br />
'''Mini UART'''<br />
* Our team created a "hello world" C program by sending a string using Xinu's puts() function. After initializing the serial pins within the program, we connected the R232 serial adapter from a computer (via ethernet) to our Pi 3's Mini-UART GPIO pins (pins 14 and 15) using a baud rate of 115200, which yielded a response in the console.<br />
<br />
<br />
<center>[[File:final_rpi3_serial_port.png]]</center><br />
<br />
'''PL011'''<br />
<br />
Getting the PL011 UART to respond was a challenge. Firstly, we enabled the PL011 register in our "hello world" program, and assigned the same baud rate of 115200 to it. Unfortunately, this yielded garbage output. If we know the UART clock frequency, we can calculate the baud rate. To determine reference frequency used by the PL011, we used an oscilloscope and performed the following steps:<br />
* Enabled GPIO pin 4 and programmed it to its ALT0 function. This outputs the clock manager reference frequency at that pin.<br />
* Plugged in our oscilloscope probe to GPIO pin 4 and read its frequency. In its latest firmware, the Raspberry Pi 3 has a 48MHz UART frequency.<br />
<center>[[File:oscill_freq.png]]</center><br />
* Back to our C program: with a programmed divisor of 48MHz (to be used in the baud rate calculation), and TX/RX pins set to be enabled, the computer received a "hello world" from the PL011 UART.<br />
<br />
<br />
<table><br />
<tr><br />
<td style="border-bottom: 2px solid #90b9f9; border-style: dotted solid; border-color: #90b9f9; padding: 15px; background: #90b9f9; border-radius: 25px"><br />
===Porting Xinu Pt. 1: Send/Recv with UART ===<br />
</td><br />
</tr><br />
</table><br />
<br />
Now that necessary measures have been taken to utilize the serial port and understand low-level, bare metal programming with the Pi 3, we can begin upgrading and porting the full research version of Embedded Xinu. Before jumping into the full research version, a good place to start testing is the "lite" educational version of Xinu.<br />
<br />
<br />
'''Demo of kgetc() working in Xinu "Lite" and Full versions:'''<br />
<br />
Xinu says hello! Our team configured Xinu function kgetc() to be used with our working UART. The program waits for a key to be pressed (checking the PL011 flag register's FIFO), and then echoes the output back. In this example, the user entered the character "h":<br />
<center>[[File:kgetc_demo.gif]]</center><br />
<br />
Follow-up updates:<br />
* ATAGS are passed and memory amount is fixed using fixup.dat.<br />
* Cores begin in a parked state. We unparked them and have working concurrency. See our [https://github.com/tomlazar/xinu/tree/feature/multicore GitHub Repository]<br />
* Mutual exclusion being worked on with atomic instructions. Unknown issues regarding cache setup and MMU.</div>Pmcg521https://reu.cs.mu.edu/index.php/Upgrading_Embedded_Xinu_for_the_Multi-Core_Raspberry_Pi_3Upgrading Embedded Xinu for the Multi-Core Raspberry Pi 32017-08-07T09:04:41Z<p>Pmcg521: </p>
<hr />
<div>'''Researchers:''' [[User:Tlazar|Tom Lazar]], [[User:Pmcg521|Patrick J. McGee]], [[User:Rlatinov|Rade Latinovich]] and [[User:Pbansal|Priya Bansal]]<br />
<br />
'''Mentor:''' [[User:Brylow|Dr. Dennis Brylow]]<br />
==Abstract==<br />
As computer platforms become more advanced, there is an escalating need to teach the complex concepts which they are capable of executing. This paper addresses one such need by presenting XinuPi3, a port of the lightweight instructional operating system {\em Embedded Xinu} to the Raspberry Pi 3. The Raspberry Pi 3 improves upon previous generations of inexpensive, credit card-sized computers by including a quad-core, ARM-based processor, opening the door for educators to demonstrate essential aspects of modern computing like inter-core communication and genuine concurrency.<br />
<br />
Embedded Xinu has proven to be an effective teaching tool for demonstrating low-level concepts on single-core platforms, and it is currently used to teach a range of systems courses at multiple universities. As of this writing, no other bare metal educational operating system supports multicore computing. XinuPi3 provides a suitable learning environment for beginners on genuinely concurrent hardware. This paper provides an overview of the key features of the XinuPi3 system, as well as the novel embedded system education experiences it makes possible.<br />
==Background && Motivation==<br />
<br />
The [http://xinu.mscs.mu.edu Embedded Xinu] infrastructure is a simple operating system designed to introduce students to many low-level computing concepts, including Driver Creation, Exception and Interrupt Handling, and much more. Many universities, such as [http://www.xinu.cs.purdue.edu/#lab Purdue University], [https://wiki.cse.buffalo.edu/services/content/xinu University at Buffalo], and [https://john.cs.olemiss.edu/~ruth/Xinu/Xinu.html University of Mississippi], have created Xinu Labs. These are classrooms running Xinu on multiple embedded devices (either Raspberry Pis or Linksys Routers). [http://www.mscs.mu.edu/~brylow/xinu/ Marquette University uses one such Xinu Lab] to teach its Operating Systems course among other computing courses.<br />
<br />
Using information obtained from past studies, we expand on the current Xinu infrastructure. One of the main goals of this project is to modify Xinu to run on new multi-core Raspberry Pi 3s while still maintaining support for previous platforms. Another goal of this project is to create structures within Xinu which effectively and efficiently use multiple cores.<br />
<br />
==Milestones==<br />
<table><br />
<tr><br />
<td style="border-bottom: 2px solid #ffa556; border-style: solid; border-color: #ffa556; padding: 15px; background: #ffa556; border-radius: 25px"><br />
===Understanding the Pi 3===<br />
</td><br />
</tr><br />
</table><br />
In order to begin porting Xinu onto the new architecture of the Raspberry Pi 3, we first needed to understand the fundamental differences between the Pi 3 and its simpler predecessor, the Pi 1 (which currently runs Xinu in Marquette's Systems Lab). Here is a table of distinctions between the two:<br />
<br />
<table align="center" bgcolor="#fffced" border=1><br />
<tr><br />
<td></td><br />
<td align = "center">'''RPi 1 (Model B)'''</td><br />
<td align = "center">'''RPi 3'''</td><br />
</tr><br />
<br />
<tr><br />
<td align = "center">'''CPU'''</td><br />
<td align = "center">ARM 1176JZF-S</td><br />
<td align = "center">ARM Cortex-A53</td><br />
</tr><br />
<br />
<tr><br />
<td align = "center">'''Architecture'''</td><br />
<td align = "center">ARMv6 (32-bit)</td><br />
<td align = "center">ARMv8 (64-bit)</td><br />
</tr><br />
<br />
<tr><br />
<td align = "center">'''Cores'''</td><br />
<td align = "center">One</td><br />
<td align = "center">Four</td><br />
</tr><br />
<br />
<tr><br />
<td align = "center">'''Registers'''</td><br />
<td align = "center">16</td><br />
<td align = "center">32</td><br />
<br />
<tr><br />
<td align = "center">'''RAM'''</td><br />
<td align = "center">512MB</td><br />
<td align = "center">1GB</td><br />
<br />
<tr><br />
<td align = "center">'''SoC'''</td><br />
<td align = "center">BCM2835</td><br />
<td align = "center">BCM2837</td><br />
<br />
</table><br />
<br />
Unfortunately, the documentation for the Raspberry Pi 3's System on Chip is sparse. However, deeper digging yielded more knowledge on how past Raspberry Pi systems have worked. With such information, it is safe to infer that the Pi 3's SoC is most likely similar to that of its predecessors. Below is a diagram of the Pi's boot order and compilation:<br />
<br />
<center>[[File:rpi3_boot_order.png]][[File:placeholder.png]][[File:compilation_diagram_pi3(2).png]]</center><br />
<br />
<br />
<table><br />
<tr><br />
<td style="border-bottom: 2px solid #72eab2; border-style: solid; border-color: #72eab2; padding: 15px; background: #72eab2; border-radius: 25px"><br />
===Hello World Pt. 1: Bare Metal LED Program===<br />
</td><br />
</tr><br />
</table><br />
<br />
*Got a bare metal program to run on our Raspberry Pi 3<br />
*:- Using our own C program: Turned on an LED light using GPIO pin 16 on our Pi<br />
<center>[[File:GPIO_key.png]]</center><br />
*:- Reprocessed our C code into ARM64 Assembly code, and used it to turn on an LED using the same pins as before.<br />
<center>[[File:pi_LED.png]][[File:pi_LED2.png]]</center><br />
<center>[[File:AmazingXINU3.0.gif]]</center><br />
<br />
<br />
<table><br />
<tr><br />
<td style="border-bottom: 2px solid #ff5a30; border-style: dotted solid; border-color: #ff5a30; padding: 15px; background: #ff5a30; border-radius: 25px"><br />
===Hello World Pt. 2: Utilizing the Serial Port===<br />
</td><br />
</tr><br />
</table><br />
There are two UARTs on the Raspberry Pi 3: the mini UART and the PL011. The mini UART is used for Linux console output. The PL011 is generally more reliable and more versatile than the mini UART, mainly because the mini UART has a direct baud rate link to the Pi 3's Graphics Processor (VPU) clock speed. Contrasting the two UARTs:<br />
<table align="center" bgcolor="#fffced" border=1><br />
<tr><br />
<td></td><br />
<td align = "center">'''Mini UART'''</td><br />
<td align = "center">'''PL011'''</td><br />
</tr><br />
<br />
<tr><br />
<td align = "center">'''Break detection'''</td><br />
<td align = "center">&#x2718;</td><br />
<td align = "center">&#x2714;</td><br />
</tr><br />
<br />
<tr><br />
<td align = "center">'''Framing errors detection'''</td><br />
<td align = "center">&#x2718;</td><br />
<td align = "center">&#x2714;</td><br />
</tr><br />
<br />
<tr><br />
<td align = "center">'''Parity bit'''</td><br />
<td align = "center">&#x2718;</td><br />
<td align = "center">&#x2714;</td><br />
</tr><br />
<br />
<tr><br />
<td align = "center">'''Large FIFOs'''</td><br />
<td align = "center">&#x2718;</td><br />
<td align = "center">&#x2714;</td><br />
</tr><br />
<br />
<tr><br />
<td align = "center">'''Flow control'''</td><br />
<td align = "center">&#x2718;</td><br />
<td align = "center">&#x2714;</td><br />
</tr><br />
<br />
</table><br />
<br />
'''Mini UART'''<br />
* Our team created a "hello world" C program by sending a string using Xinu's puts() function. After initializing the serial pins within the program, we connected the R232 serial adapter from a computer (via ethernet) to our Pi 3's Mini-UART GPIO pins (pins 14 and 15) using a baud rate of 115200, which yielded a response in the console.<br />
<br />
<br />
<center>[[File:final_rpi3_serial_port.png]]</center><br />
<br />
'''PL011'''<br />
<br />
Getting the PL011 UART to respond was a challenge. Firstly, we enabled the PL011 register in our "hello world" program, and assigned the same baud rate of 115200 to it. Unfortunately, this yielded garbage output. If we know the UART clock frequency, we can calculate the baud rate. To determine reference frequency used by the PL011, we used an oscilloscope and performed the following steps:<br />
* Enabled GPIO pin 4 and programmed it to its ALT0 function. This outputs the clock manager reference frequency at that pin.<br />
* Plugged in our oscilloscope probe to GPIO pin 4 and read its frequency. In its latest firmware, the Raspberry Pi 3 has a 48MHz UART frequency.<br />
<center>[[File:oscill_freq.png]]</center><br />
* Back to our C program: with a programmed divisor of 48MHz (to be used in the baud rate calculation), and TX/RX pins set to be enabled, the computer received a "hello world" from the PL011 UART.<br />
<br />
<br />
<table><br />
<tr><br />
<td style="border-bottom: 2px solid #90b9f9; border-style: dotted solid; border-color: #90b9f9; padding: 15px; background: #90b9f9; border-radius: 25px"><br />
===Porting Xinu Pt. 1: Send/Recv with UART ===<br />
</td><br />
</tr><br />
</table><br />
<br />
Now that necessary measures have been taken to utilize the serial port and understand low-level, bare metal programming with the Pi 3, we can begin upgrading and porting the full research version of Embedded Xinu. Before jumping into the full research version, a good place to start testing is the "lite" educational version of Xinu.<br />
<br />
<br />
'''Demo of kgetc() working in Xinu "Lite" and Full versions:'''<br />
<br />
Xinu says hello! Using a "lite" version of Xinu (not the full research version yet), our team configured Xinu function kgetc() to be used with our working UART. The program waits for a key to be pressed (checking the PL011 flag register's FIFO), and then echoes the output back. In this example, the user entered the character "h":<br />
<center>[[File:kgetc_demo.gif]]</center><br />
<br />
Now we will port the kgetc(), kputc(), and kungetc() functions to the full research version of Xinu.</div>Pmcg521https://reu.cs.mu.edu/index.php/User:Pmcg521User:Pmcg5212017-08-07T09:02:58Z<p>Pmcg521: </p>
<hr />
<div><center><br />
==Patrick J. McGee==<br />
<table style= "border: 40px solid #212B60; background: #edb52a;-webkit-border-radius:10px cellpadding=2px"><br />
<tr><br />
<td>[[File:Patrick_pro_pic_png.png]]</td><br />
<br />
<td><br />
<br />
<table style= "border: 1px solid black; font-family:tahoma; background: #fffced;" cellpadding=15px><br />
<tr><br />
<th style="font-family:verdana; border-bottom: 1px solid #000000">''' Personal Information'''</th><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> Incoming Junior | Computer Science Major at Marquette</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> Working with [[User:Brylow|Dr. Dennis Brylow]] on the concept of Embedded Systems ([http://reu.mscs.mu.edu/index.php/Upgrading_Embedded_Xinu_for_the_Multi-Core_Raspberry_Pi_3 Upgrading Embedded Xinu for the Multi-Core Raspberry Pi 3])</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> [http://www.mscs.mu.edu/~upsilon/ Upsilon Pi Epsilon] member</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> [http://acm.mscs.mu.edu/wiki/Main_Page ACM] At-Large Member</td><br />
</tr><br />
<br />
<tr><br />
<td> President of [https://marquette.collegiatelink.net/organization/bestbuddies Best Buddies Marquette Chapter]</td><br />
</tr><br />
<br />
</table><br />
</table><br />
<br />
==Logs==<br />
All specific progress concerning code can be viewed on our [https://github.com/tomlazar/xinu/tree/feature/multicore GitHub] repository (commits across multiple branches).<br />
<table style="border: 70px solid #212B60; border-collapse: collapse; font-family:tahoma" bgcolor="#fffced" border=1 cellpadding=2px><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 1: May 30-June 2'''</th></tr><br />
<tr><td> Began attempts to boot the full version of Embedded Xinu kernel with Raspberry Pi 3</td></tr><br />
<tr><td> Researched a Linaro Cross-Compiler to use for its Cortex A-53 ARM processor with ARMv8 architecture</td></tr><br />
<tr><td> Drew diagrams of the boot sequence and compilation for better understanding of the Pi 3's mechanisms</td></tr><br />
<tr><td> Traced through the dynamics of written Assembly code in the full research version of Xinu</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 2: June 5-9'''</th></tr><br />
<tr><td> Tested the LED program in updated Assembly code. Began testing the Serial Port Transceiver driver for the Pi 3</td></tr><br />
<tr><td> Read about Raspberry Pi bare metal programming via online sources</td></tr><br />
<tr><td> Read about how the Raspberry Pi 3 controls the frequency of its UART pins</td></tr><br />
<tr><td> Read ARM processor documentation about configuring UART clock frequency</td></tr><br />
<tr><td> Used the oscilloscope in attempt to obtain the clock frequency of the UART pin</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 3: June 12-16'''</th></tr><br />
<tr><td> Read an online textbook about the ARM processor of the Pi 3. </td></tr><br />
<tr><td> Successfully controlled the PL011 UART with a 48MHz frequency. Began porting full version of Xinu.</td></tr><br />
<tr><td> Read ARM64 documentation on registers to use with process interrupt handling.</td></tr><br />
<tr><td> Began working on the context switch for the 64-bit architecture.</td></tr><br />
<tr><td> Finishing work on the files necessary for context switching and rescheduling.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 4: June 19-23'''</th></tr><br />
<tr><td> Continue working on the boot functions of our implementation. Finished the Research Conduct course.</td></tr><br />
<tr><td> Read about register manipulation in the ARM guide. Continue working on process creation.</td></tr><br />
<tr><td> Begin researching physical memory space in the Pi 3.</td></tr><br />
<tr><td> Read guides to porting from ARM32 to ARM64. Digging deep for a solution to a memory allocation problem.</td></tr><br />
<tr><td> Read about ATAGS and what steps need to be taken to ensure the proper accessible RAM amount.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 5: June 26-30'''</th></tr><br />
<tr><td> Narrowed down the memory issue to an Aarch64-specific register-load requirement. Working on the fix.</td></tr><br />
<tr><td> Fixed memory issue - now allocating nearly all available memory.</td></tr><br />
<tr><td> Presentation by Dr. Kim Factor on tips to create a good research poster.</td></tr><br />
<tr><td> Began formulating research poster. Working on process queue structure.</td></tr><br />
<tr><td> Continue outlining research paper for submission to EWiLi Embedded Systems conference.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 6: July 3-7'''</th></tr><br />
<tr><td> Major change of working state: switch from 64-bit to 32-bit for compatibility and teachability reasons.</td></tr><br />
<tr><td> Migrating all code from non-working 64-bit to working 32-bit.</td></tr><br />
<tr><td> Processes create and context switch among one core. Push to resolve multiple cores.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 7: July 10-14'''</th></tr><br />
<tr><td> Expanding startup code to include change in privilege level.</td></tr><br />
<tr><td> Finished outlining poster. Tested ethernet driver and multiple core threading throughout the week.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 8: July 17-21'''</th></tr><br />
<tr><td> Studied simple Linux-style multi-core scheduling algorithms using mutual exclusion.</td></tr><br />
<tr><td> Created a method of scheduling across multiple cores with Xinu.</td></tr><br />
<tr><td> Tested multicore synchronization with atomic instructions.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 9: July 24-28'''</th></tr><br />
<tr><td> Studied technical documentation on how Raspberry Pi CPU mailboxes have worked in the past.</td></tr><br />
<tr><td> Test core mailboxes and work out kinks corresponding to core setup.</td></tr><br />
<tr><td> Finished final version of research poster: Utilizing Multi-core threading on Embedded Xinu.</td></tr><br />
<tr><td> Finished research paper and submitted it to EWiLi conference.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 10: July 31-August 4'''</th></tr><br />
<tr><td> Expanded material of final presentation.</td></tr><br />
<tr><td> Presented my research poster alongside colleagues. Viewed and discussed posters outside my discipline.</td></tr><br />
<tr><td> Watched my fellow researchers' presentations and continued making notes of guidelines.</td></tr><br />
<tr><td> Gave my final formal research presentation on the final day of the REU.</td></tr><br />
</table></div>Pmcg521https://reu.cs.mu.edu/index.php/User:Pmcg521User:Pmcg5212017-08-07T09:01:33Z<p>Pmcg521: </p>
<hr />
<div><center><br />
==Patrick J. McGee==<br />
<table style= "border: 40px solid #212B60; background: #edb52a;-webkit-border-radius:10px cellpadding=2px"><br />
<tr><br />
<td>[[File:Patrick_pro_pic_png.png]]</td><br />
<br />
<td><br />
<br />
<table style= "border: 1px solid black; font-family:tahoma; background: #fffced;" cellpadding=15px><br />
<tr><br />
<th style="font-family:verdana; border-bottom: 1px solid #000000">''' Personal Information'''</th><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> Incoming Junior | Computer Science Major at Marquette</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> Working with [[User:Brylow|Dr. Dennis Brylow]] on the concept of Embedded Systems ([http://reu.mscs.mu.edu/index.php/Upgrading_Embedded_Xinu_for_the_Multi-Core_Raspberry_Pi_3 Upgrading Embedded Xinu for the Multi-Core Raspberry Pi 3])</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> [http://www.mscs.mu.edu/~upsilon/ Upsilon Pi Epsilon] member</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> [http://acm.mscs.mu.edu/wiki/Main_Page ACM] At-Large Member</td><br />
</tr><br />
<br />
<tr><br />
<td> President of [https://marquette.collegiatelink.net/organization/bestbuddies Best Buddies Marquette Chapter]</td><br />
</tr><br />
<br />
</table><br />
</table><br />
<br />
==Logs==<br />
All specific progress concerning code can be viewed on our [https://github.com/tomlazar/xinu/tree/feature/multicore GitHub] repository (commits across multiple branches).<br />
<table style="border: 70px solid #212B60; border-collapse: collapse; font-family:tahoma" bgcolor="#fffced" border=1 cellpadding=2px><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 1: May 30-June 2'''</th></tr><br />
<tr><td> Began attempts to boot the full version of Embedded Xinu kernel with Raspberry Pi 3</td></tr><br />
<tr><td> Researched a Linaro Cross-Compiler to use for its Cortex A-53 ARM processor with ARMv8 architecture</td></tr><br />
<tr><td> Drew diagrams of the boot sequence and compilation for better understanding of the Pi 3's mechanisms</td></tr><br />
<tr><td> Traced through the dynamics of written Assembly code in the full research version of Xinu</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 2: June 5-9'''</th></tr><br />
<tr><td> Tested the LED program in updated Assembly code. Began testing the Serial Port Transceiver driver for the Pi 3</td></tr><br />
<tr><td> Read about Raspberry Pi bare metal programming via online sources</td></tr><br />
<tr><td> Read about how the Raspberry Pi 3 controls the frequency of its UART pins</td></tr><br />
<tr><td> Read ARM processor documentation about configuring UART clock frequency</td></tr><br />
<tr><td> Used the oscilloscope in attempt to obtain the clock frequency of the UART pin</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 3: June 12-16'''</th></tr><br />
<tr><td> Read an online textbook about the ARM processor of the Pi 3. </td></tr><br />
<tr><td> Successfully controlled the PL011 UART with a 48MHz frequency. Began porting full version of Xinu.</td></tr><br />
<tr><td> Read ARM64 documentation on registers to use with process interrupt handling.</td></tr><br />
<tr><td> Began working on the context switch for the 64-bit architecture.</td></tr><br />
<tr><td> Finishing work on the files necessary for context switching and rescheduling.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 4: June 19-23'''</th></tr><br />
<tr><td> Continue working on the boot functions of our implementation. Finished the Research Conduct course.</td></tr><br />
<tr><td> Read about register manipulation in the ARM guide. Continue working on process creation.</td></tr><br />
<tr><td> Begin researching physical memory space in the Pi 3.</td></tr><br />
<tr><td> Read guides to porting from ARM32 to ARM64. Digging deep for a solution to a memory allocation problem.</td></tr><br />
<tr><td> Read about ATAGS and what steps need to be taken to ensure the proper accessible RAM amount.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 5: June 26-30'''</th></tr><br />
<tr><td> Narrowed down the memory issue to an Aarch64-specific register-load requirement. Working on the fix.</td></tr><br />
<tr><td> Fixed memory issue - now allocating nearly all available memory.</td></tr><br />
<tr><td> Presentation by Dr. Kim Factor on tips to create a good research poster.</td></tr><br />
<tr><td> Began formulating research poster. Working on process queue structure.</td></tr><br />
<tr><td> Continue outlining research paper for submission to EWiLi Embedded Systems conference.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 6: July 3-7'''</th></tr><br />
<tr><td> Major change of working state: switch from 64-bit to 32-bit for compatibility and teachability reasons.</td></tr><br />
<tr><td> Migrating all code from non-working 64-bit to working 32-bit.</td></tr><br />
<tr><td> Processes create and context switch among one core. Push to resolve multiple cores.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 7: July 10-14'''</th></tr><br />
<tr><td> Expanding startup code to include change in privilege level.</td></tr><br />
<tr><td> Finished outlining poster. Tested ethernet driver and multiple core threading throughout the week.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 8: July 17-21'''</th></tr><br />
<tr><td> Studied simple Linux-style multi-core scheduling algorithms using mutual exclusion.</td></tr><br />
<tr><td> Created a method of scheduling across multiple cores with Xinu.</td></tr><br />
<tr><td> Tested multicore synchronization with atomic instructions.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 9: July 24-28'''</th></tr><br />
<tr><td> Studied technical documentation on how Raspberry Pi CPU mailboxes have worked in the past.</td></tr><br />
<tr><td> Test core mailboxes and work out kinks corresponding to core setup.</td></tr><br />
<tr><td> Finished final version of research poster: Utilizing Multi-core threading on Embedded Xinu.</td></tr><br />
<tr><td> Finished research paper and submitted it to EWiLi conference.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 10: July 3-7'''</th></tr><br />
<tr><td> Expanded material of final presentation.</td></tr><br />
<tr><td> Presented my research poster alongside colleagues. Viewed and discussed posters outside my discipline.</td></tr><br />
<tr><td> Watched my fellow researchers' presentations and continued making notes of guidelines.</td></tr><br />
<tr><td> Gave my final formal research presentation on the final day of the REU.</td></tr><br />
</table></div>Pmcg521https://reu.cs.mu.edu/index.php/User:Pmcg521User:Pmcg5212017-08-07T08:54:17Z<p>Pmcg521: </p>
<hr />
<div><center><br />
==Patrick J. McGee==<br />
<table style= "border: 40px solid #212B60; background: #FAFAA0;-webkit-border-radius:10px cellpadding=2px"><br />
<tr><br />
<td>[[File:Patrick_pro_pic_png.png]]</td><br />
<br />
<td><br />
<br />
<table style= "border: 1px solid black; font-family:tahoma; background: #fffced;" cellpadding=15px><br />
<tr><br />
<th style="font-family:verdana; border-bottom: 1px solid #000000">''' Personal Information'''</th><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> Incoming Junior | Computer Science Major at Marquette</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> Working with [[User:Brylow|Dr. Dennis Brylow]] on the concept of Embedded Systems ([http://reu.mscs.mu.edu/index.php/Upgrading_Embedded_Xinu_for_the_Multi-Core_Raspberry_Pi_3 Upgrading Embedded Xinu for the Multi-Core Raspberry Pi 3])</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> [http://www.mscs.mu.edu/~upsilon/ Upsilon Pi Epsilon] member</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> [http://acm.mscs.mu.edu/wiki/Main_Page ACM] At-Large Member</td><br />
</tr><br />
<br />
<tr><br />
<td> President of [https://marquette.collegiatelink.net/organization/bestbuddies Best Buddies Marquette Chapter]</td><br />
</tr><br />
<br />
</table><br />
</table><br />
<br />
==Logs==<br />
All specific progress concerning code can be viewed on our [https://github.com/tomlazar/xinu/tree/feature/multicore GitHub] repository (commits across multiple branches).<br />
<table style="border: 70px solid #212B60; border-collapse: collapse; font-family:tahoma" bgcolor="#fffced" border=1 cellpadding=2px><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 1: May 30-June 2'''</th></tr><br />
<tr><td> Began attempts to boot the full version of Embedded Xinu kernel with Raspberry Pi 3</td></tr><br />
<tr><td> Researched a Linaro Cross-Compiler to use for its Cortex A-53 ARM processor with ARMv8 architecture</td></tr><br />
<tr><td> Drew diagrams of the boot sequence and compilation for better understanding of the Pi 3's mechanisms</td></tr><br />
<tr><td> Traced through the dynamics of written Assembly code in the full research version of Xinu</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 2: June 5-9'''</th></tr><br />
<tr><td> Tested the LED program in updated Assembly code. Began testing the Serial Port Transceiver driver for the Pi 3</td></tr><br />
<tr><td> Read about Raspberry Pi bare metal programming via online sources</td></tr><br />
<tr><td> Read about how the Raspberry Pi 3 controls the frequency of its UART pins</td></tr><br />
<tr><td> Read ARM processor documentation about configuring UART clock frequency</td></tr><br />
<tr><td> Used the oscilloscope in attempt to obtain the clock frequency of the UART pin</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 3: June 12-16'''</th></tr><br />
<tr><td> Read an online textbook about the ARM processor of the Pi 3. </td></tr><br />
<tr><td> Successfully controlled the PL011 UART with a 48MHz frequency. Began porting full version of Xinu.</td></tr><br />
<tr><td> Read ARM64 documentation on registers to use with process interrupt handling.</td></tr><br />
<tr><td> Began working on the context switch for the 64-bit architecture.</td></tr><br />
<tr><td> Finishing work on the files necessary for context switching and rescheduling.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 4: June 19-23'''</th></tr><br />
<tr><td> Continue working on the boot functions of our implementation. Finished the Research Conduct course.</td></tr><br />
<tr><td> Read about register manipulation in the ARM guide. Continue working on process creation.</td></tr><br />
<tr><td> Begin researching physical memory space in the Pi 3.</td></tr><br />
<tr><td> Read guides to porting from ARM32 to ARM64. Digging deep for a solution to a memory allocation problem.</td></tr><br />
<tr><td> Read about ATAGS and what steps need to be taken to ensure the proper accessible RAM amount.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 5: June 26-30'''</th></tr><br />
<tr><td> Narrowed down the memory issue to an Aarch64-specific register-load requirement. Working on the fix.</td></tr><br />
<tr><td> Fixed memory issue - now allocating nearly all available memory.</td></tr><br />
<tr><td> Presentation by Dr. Kim Factor on tips to create a good research poster.</td></tr><br />
<tr><td> Began formulating research poster. Working on process queue structure.</td></tr><br />
<tr><td> Continue outlining research paper for submission to EWiLi Embedded Systems conference.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 6: July 3-7'''</th></tr><br />
<tr><td> Major change of working state: switch from 64-bit to 32-bit for compatibility and teachability reasons.</td></tr><br />
<tr><td> Migrating all code from non-working 64-bit to working 32-bit.</td></tr><br />
<tr><td> Processes create and context switch among one core. Push to resolve multiple cores.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 7: July 10-14'''</th></tr><br />
<tr><td> Expanding startup code to include change in privilege level.</td></tr><br />
<tr><td> Finished outlining poster. Tested ethernet driver and multiple core threading throughout the week.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 8: July 17-21'''</th></tr><br />
<tr><td> Studied simple Linux-style multi-core scheduling algorithms using mutual exclusion.</td></tr><br />
<tr><td> Created a method of scheduling across multiple cores with Xinu.</td></tr><br />
<tr><td> Tested multicore synchronization with atomic instructions.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 9: July 24-28'''</th></tr><br />
<tr><td> Studied technical documentation on how Raspberry Pi CPU mailboxes have worked in the past.</td></tr><br />
<tr><td> Test core mailboxes and work out kinks corresponding to core setup.</td></tr><br />
<tr><td> Finished final version of research poster: Utilizing Multi-core threading on Embedded Xinu.</td></tr><br />
<tr><td> Finished research paper and submitted it to EWiLi conference.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 10: July 3-7'''</th></tr><br />
<tr><td> Expanded material of final presentation.</td></tr><br />
<tr><td> Presented my research poster alongside colleagues. Viewed and discussed posters outside my discipline.</td></tr><br />
<tr><td> Watched my fellow researchers' presentations and continued making notes of guidelines.</td></tr><br />
<tr><td> Gave my final formal research presentation on the final day of the REU.</td></tr><br />
</table></div>Pmcg521https://reu.cs.mu.edu/index.php/User:Pmcg521User:Pmcg5212017-08-07T08:53:53Z<p>Pmcg521: </p>
<hr />
<div><center><br />
==Patrick J. McGee==<br />
<table style= "border: 40px solid #212B60; background: #FAFAA0;-webkit-border-radius:6px cellpadding=2px"><br />
<tr><br />
<td>[[File:Patrick_pro_pic_png.png]]</td><br />
<br />
<td><br />
<br />
<table style= "border: 1px solid black; font-family:tahoma; background: #fffced;" cellpadding=15px><br />
<tr><br />
<th style="font-family:verdana; border-bottom: 1px solid #000000">''' Personal Information'''</th><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> Incoming Junior | Computer Science Major at Marquette</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> Working with [[User:Brylow|Dr. Dennis Brylow]] on the concept of Embedded Systems ([http://reu.mscs.mu.edu/index.php/Upgrading_Embedded_Xinu_for_the_Multi-Core_Raspberry_Pi_3 Upgrading Embedded Xinu for the Multi-Core Raspberry Pi 3])</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> [http://www.mscs.mu.edu/~upsilon/ Upsilon Pi Epsilon] member</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> [http://acm.mscs.mu.edu/wiki/Main_Page ACM] At-Large Member</td><br />
</tr><br />
<br />
<tr><br />
<td> President of [https://marquette.collegiatelink.net/organization/bestbuddies Best Buddies Marquette Chapter]</td><br />
</tr><br />
<br />
</table><br />
</table><br />
<br />
==Logs==<br />
All specific progress concerning code can be viewed on our [https://github.com/tomlazar/xinu/tree/feature/multicore GitHub] repository (commits across multiple branches).<br />
<table style="border: 70px solid #212B60; border-collapse: collapse; font-family:tahoma" bgcolor="#fffced" border=1 cellpadding=2px><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 1: May 30-June 2'''</th></tr><br />
<tr><td> Began attempts to boot the full version of Embedded Xinu kernel with Raspberry Pi 3</td></tr><br />
<tr><td> Researched a Linaro Cross-Compiler to use for its Cortex A-53 ARM processor with ARMv8 architecture</td></tr><br />
<tr><td> Drew diagrams of the boot sequence and compilation for better understanding of the Pi 3's mechanisms</td></tr><br />
<tr><td> Traced through the dynamics of written Assembly code in the full research version of Xinu</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 2: June 5-9'''</th></tr><br />
<tr><td> Tested the LED program in updated Assembly code. Began testing the Serial Port Transceiver driver for the Pi 3</td></tr><br />
<tr><td> Read about Raspberry Pi bare metal programming via online sources</td></tr><br />
<tr><td> Read about how the Raspberry Pi 3 controls the frequency of its UART pins</td></tr><br />
<tr><td> Read ARM processor documentation about configuring UART clock frequency</td></tr><br />
<tr><td> Used the oscilloscope in attempt to obtain the clock frequency of the UART pin</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 3: June 12-16'''</th></tr><br />
<tr><td> Read an online textbook about the ARM processor of the Pi 3. </td></tr><br />
<tr><td> Successfully controlled the PL011 UART with a 48MHz frequency. Began porting full version of Xinu.</td></tr><br />
<tr><td> Read ARM64 documentation on registers to use with process interrupt handling.</td></tr><br />
<tr><td> Began working on the context switch for the 64-bit architecture.</td></tr><br />
<tr><td> Finishing work on the files necessary for context switching and rescheduling.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 4: June 19-23'''</th></tr><br />
<tr><td> Continue working on the boot functions of our implementation. Finished the Research Conduct course.</td></tr><br />
<tr><td> Read about register manipulation in the ARM guide. Continue working on process creation.</td></tr><br />
<tr><td> Begin researching physical memory space in the Pi 3.</td></tr><br />
<tr><td> Read guides to porting from ARM32 to ARM64. Digging deep for a solution to a memory allocation problem.</td></tr><br />
<tr><td> Read about ATAGS and what steps need to be taken to ensure the proper accessible RAM amount.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 5: June 26-30'''</th></tr><br />
<tr><td> Narrowed down the memory issue to an Aarch64-specific register-load requirement. Working on the fix.</td></tr><br />
<tr><td> Fixed memory issue - now allocating nearly all available memory.</td></tr><br />
<tr><td> Presentation by Dr. Kim Factor on tips to create a good research poster.</td></tr><br />
<tr><td> Began formulating research poster. Working on process queue structure.</td></tr><br />
<tr><td> Continue outlining research paper for submission to EWiLi Embedded Systems conference.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 6: July 3-7'''</th></tr><br />
<tr><td> Major change of working state: switch from 64-bit to 32-bit for compatibility and teachability reasons.</td></tr><br />
<tr><td> Migrating all code from non-working 64-bit to working 32-bit.</td></tr><br />
<tr><td> Processes create and context switch among one core. Push to resolve multiple cores.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 7: July 10-14'''</th></tr><br />
<tr><td> Expanding startup code to include change in privilege level.</td></tr><br />
<tr><td> Finished outlining poster. Tested ethernet driver and multiple core threading throughout the week.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 8: July 17-21'''</th></tr><br />
<tr><td> Studied simple Linux-style multi-core scheduling algorithms using mutual exclusion.</td></tr><br />
<tr><td> Created a method of scheduling across multiple cores with Xinu.</td></tr><br />
<tr><td> Tested multicore synchronization with atomic instructions.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 9: July 24-28'''</th></tr><br />
<tr><td> Studied technical documentation on how Raspberry Pi CPU mailboxes have worked in the past.</td></tr><br />
<tr><td> Test core mailboxes and work out kinks corresponding to core setup.</td></tr><br />
<tr><td> Finished final version of research poster: Utilizing Multi-core threading on Embedded Xinu.</td></tr><br />
<tr><td> Finished research paper and submitted it to EWiLi conference.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 10: July 3-7'''</th></tr><br />
<tr><td> Expanded material of final presentation.</td></tr><br />
<tr><td> Presented my research poster alongside colleagues. Viewed and discussed posters outside my discipline.</td></tr><br />
<tr><td> Watched my fellow researchers' presentations and continued making notes of guidelines.</td></tr><br />
<tr><td> Gave my final formal research presentation on the final day of the REU.</td></tr><br />
</table></div>Pmcg521https://reu.cs.mu.edu/index.php/User:Pmcg521User:Pmcg5212017-08-07T08:53:08Z<p>Pmcg521: </p>
<hr />
<div><center><br />
==Patrick J. McGee==<br />
<table style= "border: 40px solid #212B60; background: #FAFAA0;-webkit-border-radius:6px cellpadding=2px"><br />
<tr><br />
<td>[[File:Patrick_pro_pic_png.png]]</td><br />
<br />
<td><br />
<br />
<table style= "border: 1px solid black; font-family:tahoma; background: #fffced;-webkit-border-radius:5px" cellpadding=15px><br />
<tr><br />
<th style="font-family:verdana; border-bottom: 1px solid #000000">''' Personal Information'''</th><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> Incoming Junior | Computer Science Major at Marquette</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> Working with [[User:Brylow|Dr. Dennis Brylow]] on the concept of Embedded Systems ([http://reu.mscs.mu.edu/index.php/Upgrading_Embedded_Xinu_for_the_Multi-Core_Raspberry_Pi_3 Upgrading Embedded Xinu for the Multi-Core Raspberry Pi 3])</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> [http://www.mscs.mu.edu/~upsilon/ Upsilon Pi Epsilon] member</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> [http://acm.mscs.mu.edu/wiki/Main_Page ACM] At-Large Member</td><br />
</tr><br />
<br />
<tr><br />
<td> President of [https://marquette.collegiatelink.net/organization/bestbuddies Best Buddies Marquette Chapter]</td><br />
</tr><br />
<br />
</table><br />
</table><br />
<br />
==Logs==<br />
All specific progress concerning code can be viewed on our [https://github.com/tomlazar/xinu/tree/feature/multicore GitHub] repository (commits across multiple branches).<br />
<table style="border: 70px solid #212B60; border-collapse: collapse; font-family:tahoma" bgcolor="#fffced" border=1 cellpadding=2px><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 1: May 30-June 2'''</th></tr><br />
<tr><td> Began attempts to boot the full version of Embedded Xinu kernel with Raspberry Pi 3</td></tr><br />
<tr><td> Researched a Linaro Cross-Compiler to use for its Cortex A-53 ARM processor with ARMv8 architecture</td></tr><br />
<tr><td> Drew diagrams of the boot sequence and compilation for better understanding of the Pi 3's mechanisms</td></tr><br />
<tr><td> Traced through the dynamics of written Assembly code in the full research version of Xinu</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 2: June 5-9'''</th></tr><br />
<tr><td> Tested the LED program in updated Assembly code. Began testing the Serial Port Transceiver driver for the Pi 3</td></tr><br />
<tr><td> Read about Raspberry Pi bare metal programming via online sources</td></tr><br />
<tr><td> Read about how the Raspberry Pi 3 controls the frequency of its UART pins</td></tr><br />
<tr><td> Read ARM processor documentation about configuring UART clock frequency</td></tr><br />
<tr><td> Used the oscilloscope in attempt to obtain the clock frequency of the UART pin</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 3: June 12-16'''</th></tr><br />
<tr><td> Read an online textbook about the ARM processor of the Pi 3. </td></tr><br />
<tr><td> Successfully controlled the PL011 UART with a 48MHz frequency. Began porting full version of Xinu.</td></tr><br />
<tr><td> Read ARM64 documentation on registers to use with process interrupt handling.</td></tr><br />
<tr><td> Began working on the context switch for the 64-bit architecture.</td></tr><br />
<tr><td> Finishing work on the files necessary for context switching and rescheduling.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 4: June 19-23'''</th></tr><br />
<tr><td> Continue working on the boot functions of our implementation. Finished the Research Conduct course.</td></tr><br />
<tr><td> Read about register manipulation in the ARM guide. Continue working on process creation.</td></tr><br />
<tr><td> Begin researching physical memory space in the Pi 3.</td></tr><br />
<tr><td> Read guides to porting from ARM32 to ARM64. Digging deep for a solution to a memory allocation problem.</td></tr><br />
<tr><td> Read about ATAGS and what steps need to be taken to ensure the proper accessible RAM amount.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 5: June 26-30'''</th></tr><br />
<tr><td> Narrowed down the memory issue to an Aarch64-specific register-load requirement. Working on the fix.</td></tr><br />
<tr><td> Fixed memory issue - now allocating nearly all available memory.</td></tr><br />
<tr><td> Presentation by Dr. Kim Factor on tips to create a good research poster.</td></tr><br />
<tr><td> Began formulating research poster. Working on process queue structure.</td></tr><br />
<tr><td> Continue outlining research paper for submission to EWiLi Embedded Systems conference.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 6: July 3-7'''</th></tr><br />
<tr><td> Major change of working state: switch from 64-bit to 32-bit for compatibility and teachability reasons.</td></tr><br />
<tr><td> Migrating all code from non-working 64-bit to working 32-bit.</td></tr><br />
<tr><td> Processes create and context switch among one core. Push to resolve multiple cores.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 7: July 10-14'''</th></tr><br />
<tr><td> Expanding startup code to include change in privilege level.</td></tr><br />
<tr><td> Finished outlining poster. Tested ethernet driver and multiple core threading throughout the week.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 8: July 17-21'''</th></tr><br />
<tr><td> Studied simple Linux-style multi-core scheduling algorithms using mutual exclusion.</td></tr><br />
<tr><td> Created a method of scheduling across multiple cores with Xinu.</td></tr><br />
<tr><td> Tested multicore synchronization with atomic instructions.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 9: July 24-28'''</th></tr><br />
<tr><td> Studied technical documentation on how Raspberry Pi CPU mailboxes have worked in the past.</td></tr><br />
<tr><td> Test core mailboxes and work out kinks corresponding to core setup.</td></tr><br />
<tr><td> Finished final version of research poster: Utilizing Multi-core threading on Embedded Xinu.</td></tr><br />
<tr><td> Finished research paper and submitted it to EWiLi conference.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 10: July 3-7'''</th></tr><br />
<tr><td> Expanded material of final presentation.</td></tr><br />
<tr><td> Presented my research poster alongside colleagues. Viewed and discussed posters outside my discipline.</td></tr><br />
<tr><td> Watched my fellow researchers' presentations and continued making notes of guidelines.</td></tr><br />
<tr><td> Gave my final formal research presentation on the final day of the REU.</td></tr><br />
</table></div>Pmcg521https://reu.cs.mu.edu/index.php/User:Pmcg521User:Pmcg5212017-08-07T08:52:43Z<p>Pmcg521: </p>
<hr />
<div><center><br />
==Patrick J. McGee==<br />
<table style= "border: 40px solid #212B60; background: #FAFAA0;-webkit-border-radius:6px cellpadding=2px"><br />
<tr><br />
<td>[[File:Patrick_pro_pic_png.png]]</td><br />
<br />
<td><br />
<br />
<table style= "border: 1px solid black; font-family:tahoma; background: #fffced;-webkit-border-radius:5px" cellpadding=15px><br />
<tr><br />
<th style="font-family:verdana; border-bottom: 1px solid #000000">''' Personal Information'''</th><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> Incoming Junior | Computer Science Major at Marquette</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> Working with [[User:Brylow|Dr. Dennis Brylow]] on the concept of Embedded Systems ([http://reu.mscs.mu.edu/index.php/Upgrading_Embedded_Xinu_for_the_Multi-Core_Raspberry_Pi_3 Upgrading Embedded Xinu for the Multi-Core Raspberry Pi 3])</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> [http://www.mscs.mu.edu/~upsilon/ Upsilon Pi Epsilon] member</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> [http://acm.mscs.mu.edu/wiki/Main_Page ACM] At-Large Member</td><br />
</tr><br />
<br />
<tr><br />
<td> President of [https://marquette.collegiatelink.net/organization/bestbuddies Best Buddies Marquette Chapter]</td><br />
</tr><br />
<br />
</table><br />
</table><br />
<br />
==Logs==<br />
All specific progress concerning code can be viewed on our [https://github.com/tomlazar/xinu/tree/feature/multicore GitHub] (commits across multiple branches).<br />
<table style="border: 70px solid #212B60; border-collapse: collapse; font-family:tahoma" bgcolor="#fffced" border=1 cellpadding=2px><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 1: May 30-June 2'''</th></tr><br />
<tr><td> Began attempts to boot the full version of Embedded Xinu kernel with Raspberry Pi 3</td></tr><br />
<tr><td> Researched a Linaro Cross-Compiler to use for its Cortex A-53 ARM processor with ARMv8 architecture</td></tr><br />
<tr><td> Drew diagrams of the boot sequence and compilation for better understanding of the Pi 3's mechanisms</td></tr><br />
<tr><td> Traced through the dynamics of written Assembly code in the full research version of Xinu</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 2: June 5-9'''</th></tr><br />
<tr><td> Tested the LED program in updated Assembly code. Began testing the Serial Port Transceiver driver for the Pi 3</td></tr><br />
<tr><td> Read about Raspberry Pi bare metal programming via online sources</td></tr><br />
<tr><td> Read about how the Raspberry Pi 3 controls the frequency of its UART pins</td></tr><br />
<tr><td> Read ARM processor documentation about configuring UART clock frequency</td></tr><br />
<tr><td> Used the oscilloscope in attempt to obtain the clock frequency of the UART pin</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 3: June 12-16'''</th></tr><br />
<tr><td> Read an online textbook about the ARM processor of the Pi 3. </td></tr><br />
<tr><td> Successfully controlled the PL011 UART with a 48MHz frequency. Began porting full version of Xinu.</td></tr><br />
<tr><td> Read ARM64 documentation on registers to use with process interrupt handling.</td></tr><br />
<tr><td> Began working on the context switch for the 64-bit architecture.</td></tr><br />
<tr><td> Finishing work on the files necessary for context switching and rescheduling.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 4: June 19-23'''</th></tr><br />
<tr><td> Continue working on the boot functions of our implementation. Finished the Research Conduct course.</td></tr><br />
<tr><td> Read about register manipulation in the ARM guide. Continue working on process creation.</td></tr><br />
<tr><td> Begin researching physical memory space in the Pi 3.</td></tr><br />
<tr><td> Read guides to porting from ARM32 to ARM64. Digging deep for a solution to a memory allocation problem.</td></tr><br />
<tr><td> Read about ATAGS and what steps need to be taken to ensure the proper accessible RAM amount.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 5: June 26-30'''</th></tr><br />
<tr><td> Narrowed down the memory issue to an Aarch64-specific register-load requirement. Working on the fix.</td></tr><br />
<tr><td> Fixed memory issue - now allocating nearly all available memory.</td></tr><br />
<tr><td> Presentation by Dr. Kim Factor on tips to create a good research poster.</td></tr><br />
<tr><td> Began formulating research poster. Working on process queue structure.</td></tr><br />
<tr><td> Continue outlining research paper for submission to EWiLi Embedded Systems conference.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 6: July 3-7'''</th></tr><br />
<tr><td> Major change of working state: switch from 64-bit to 32-bit for compatibility and teachability reasons.</td></tr><br />
<tr><td> Migrating all code from non-working 64-bit to working 32-bit.</td></tr><br />
<tr><td> Processes create and context switch among one core. Push to resolve multiple cores.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 7: July 10-14'''</th></tr><br />
<tr><td> Expanding startup code to include change in privilege level.</td></tr><br />
<tr><td> Finished outlining poster. Tested ethernet driver and multiple core threading throughout the week.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 8: July 17-21'''</th></tr><br />
<tr><td> Studied simple Linux-style multi-core scheduling algorithms using mutual exclusion.</td></tr><br />
<tr><td> Created a method of scheduling across multiple cores with Xinu.</td></tr><br />
<tr><td> Tested multicore synchronization with atomic instructions.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 9: July 24-28'''</th></tr><br />
<tr><td> Studied technical documentation on how Raspberry Pi CPU mailboxes have worked in the past.</td></tr><br />
<tr><td> Test core mailboxes and work out kinks corresponding to core setup.</td></tr><br />
<tr><td> Finished final version of research poster: Utilizing Multi-core threading on Embedded Xinu.</td></tr><br />
<tr><td> Finished research paper and submitted it to EWiLi conference.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 10: July 3-7'''</th></tr><br />
<tr><td> Expanded material of final presentation.</td></tr><br />
<tr><td> Presented my research poster alongside colleagues. Viewed and discussed posters outside my discipline.</td></tr><br />
<tr><td> Watched my fellow researchers' presentations and continued making notes of guidelines.</td></tr><br />
<tr><td> Gave my final formal research presentation on the final day of the REU.</td></tr><br />
</table></div>Pmcg521https://reu.cs.mu.edu/index.php/User:Pmcg521User:Pmcg5212017-08-07T08:51:10Z<p>Pmcg521: /* Patrick J. McGee */</p>
<hr />
<div><center><br />
==Patrick J. McGee==<br />
<table style= "border: 40px solid #212B60; background: #FAFAA0;-webkit-border-radius:6px cellpadding=2px"><br />
<tr><br />
<td>[[File:Patrick_pro_pic_png.png]]</td><br />
<br />
<td><br />
<br />
<table style= "border: 1px solid black; font-family:tahoma; background: #fffced;-webkit-border-radius:5px" cellpadding=15px><br />
<tr><br />
<th style="font-family:verdana; border-bottom: 1px solid #000000">''' Personal Information'''</th><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> Incoming Junior | Computer Science Major at Marquette</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> Working with [[User:Brylow|Dr. Dennis Brylow]] on the concept of Embedded Systems ([http://reu.mscs.mu.edu/index.php/Upgrading_Embedded_Xinu_for_the_Multi-Core_Raspberry_Pi_3 Upgrading Embedded Xinu for the Multi-Core Raspberry Pi 3])</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> [http://www.mscs.mu.edu/~upsilon/ Upsilon Pi Epsilon] member</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> [http://acm.mscs.mu.edu/wiki/Main_Page ACM] At-Large Member</td><br />
</tr><br />
<br />
<tr><br />
<td> President of [https://marquette.collegiatelink.net/organization/bestbuddies Best Buddies Marquette Chapter]</td><br />
</tr><br />
<br />
</table><br />
</table><br />
<br />
==Logs==<br />
All specific progress concerning code can be viewed on our GitHub (commits across multiple branches): https://github.com/tomlazar/xinu/tree/feature/multicore<br />
<table style="border: 70px solid #212B60; border-collapse: collapse; font-family:tahoma" bgcolor="#fffced" border=1 cellpadding=2px><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 1: May 30-June 2'''</th></tr><br />
<tr><td> Began attempts to boot the full version of Embedded Xinu kernel with Raspberry Pi 3</td></tr><br />
<tr><td> Researched a Linaro Cross-Compiler to use for its Cortex A-53 ARM processor with ARMv8 architecture</td></tr><br />
<tr><td> Drew diagrams of the boot sequence and compilation for better understanding of the Pi 3's mechanisms</td></tr><br />
<tr><td> Traced through the dynamics of written Assembly code in the full research version of Xinu</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 2: June 5-9'''</th></tr><br />
<tr><td> Tested the LED program in updated Assembly code. Began testing the Serial Port Transceiver driver for the Pi 3</td></tr><br />
<tr><td> Read about Raspberry Pi bare metal programming via online sources</td></tr><br />
<tr><td> Read about how the Raspberry Pi 3 controls the frequency of its UART pins</td></tr><br />
<tr><td> Read ARM processor documentation about configuring UART clock frequency</td></tr><br />
<tr><td> Used the oscilloscope in attempt to obtain the clock frequency of the UART pin</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 3: June 12-16'''</th></tr><br />
<tr><td> Read an online textbook about the ARM processor of the Pi 3. </td></tr><br />
<tr><td> Successfully controlled the PL011 UART with a 48MHz frequency. Began porting full version of Xinu.</td></tr><br />
<tr><td> Read ARM64 documentation on registers to use with process interrupt handling.</td></tr><br />
<tr><td> Began working on the context switch for the 64-bit architecture.</td></tr><br />
<tr><td> Finishing work on the files necessary for context switching and rescheduling.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 4: June 19-23'''</th></tr><br />
<tr><td> Continue working on the boot functions of our implementation. Finished the Research Conduct course.</td></tr><br />
<tr><td> Read about register manipulation in the ARM guide. Continue working on process creation.</td></tr><br />
<tr><td> Begin researching physical memory space in the Pi 3.</td></tr><br />
<tr><td> Read guides to porting from ARM32 to ARM64. Digging deep for a solution to a memory allocation problem.</td></tr><br />
<tr><td> Read about ATAGS and what steps need to be taken to ensure the proper accessible RAM amount.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 5: June 26-30'''</th></tr><br />
<tr><td> Narrowed down the memory issue to an Aarch64-specific register-load requirement. Working on the fix.</td></tr><br />
<tr><td> Fixed memory issue - now allocating nearly all available memory.</td></tr><br />
<tr><td> Presentation by Dr. Kim Factor on tips to create a good research poster.</td></tr><br />
<tr><td> Began formulating research poster. Working on process queue structure.</td></tr><br />
<tr><td> Continue outlining research paper for submission to EWiLi Embedded Systems conference.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 6: July 3-7'''</th></tr><br />
<tr><td> Major change of working state: switch from 64-bit to 32-bit for compatibility and teachability reasons.</td></tr><br />
<tr><td> Migrating all code from non-working 64-bit to working 32-bit.</td></tr><br />
<tr><td> Processes create and context switch among one core. Push to resolve multiple cores.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 7: July 10-14'''</th></tr><br />
<tr><td> Expanding startup code to include change in privilege level.</td></tr><br />
<tr><td> Finished outlining poster. Tested ethernet driver and multiple core threading throughout the week.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 8: July 17-21'''</th></tr><br />
<tr><td> Studied simple Linux-style multi-core scheduling algorithms using mutual exclusion.</td></tr><br />
<tr><td> Created a method of scheduling across multiple cores with Xinu.</td></tr><br />
<tr><td> Tested multicore synchronization with atomic instructions.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 9: July 24-28'''</th></tr><br />
<tr><td> Studied technical documentation on how Raspberry Pi CPU mailboxes have worked in the past.</td></tr><br />
<tr><td> Test core mailboxes and work out kinks corresponding to core setup.</td></tr><br />
<tr><td> Finished final version of research poster: Utilizing Multi-core threading on Embedded Xinu.</td></tr><br />
<tr><td> Finished research paper and submitted it to EWiLi conference.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 10: July 3-7'''</th></tr><br />
<tr><td> Expanded material of final presentation.</td></tr><br />
<tr><td> Presented my research poster alongside colleagues. Viewed and discussed posters outside my discipline.</td></tr><br />
<tr><td> Watched my fellow researchers' presentations and continued making notes of guidelines.</td></tr><br />
<tr><td> Gave my final formal research presentation on the final day of the REU.</td></tr><br />
</table></div>Pmcg521https://reu.cs.mu.edu/index.php/User:Pmcg521User:Pmcg5212017-08-07T08:50:41Z<p>Pmcg521: </p>
<hr />
<div><center><br />
==Patrick J. McGee==<br />
<table style= "border: 40px solid #212B60; background: 5px #FAFAA0;-webkit-border-radius:6px cellpadding=2px"><br />
<tr><br />
<td>[[File:Patrick_pro_pic_png.png]]</td><br />
<br />
<td><br />
<br />
<table style= "border: 1px solid black; font-family:tahoma; background: #fffced;-webkit-border-radius:5px" cellpadding=15px><br />
<tr><br />
<th style="font-family:verdana; border-bottom: 1px solid #000000">''' Personal Information'''</th><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> Incoming Junior | Computer Science Major at Marquette</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> Working with [[User:Brylow|Dr. Dennis Brylow]] on the concept of Embedded Systems ([http://reu.mscs.mu.edu/index.php/Upgrading_Embedded_Xinu_for_the_Multi-Core_Raspberry_Pi_3 Upgrading Embedded Xinu for the Multi-Core Raspberry Pi 3])</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> [http://www.mscs.mu.edu/~upsilon/ Upsilon Pi Epsilon] member</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> [http://acm.mscs.mu.edu/wiki/Main_Page ACM] At-Large Member</td><br />
</tr><br />
<br />
<tr><br />
<td> President of [https://marquette.collegiatelink.net/organization/bestbuddies Best Buddies Marquette Chapter]</td><br />
</tr><br />
<br />
</table><br />
</table><br />
<br />
==Logs==<br />
All specific progress concerning code can be viewed on our GitHub (commits across multiple branches): https://github.com/tomlazar/xinu/tree/feature/multicore<br />
<table style="border: 70px solid #212B60; border-collapse: collapse; font-family:tahoma" bgcolor="#fffced" border=1 cellpadding=2px><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 1: May 30-June 2'''</th></tr><br />
<tr><td> Began attempts to boot the full version of Embedded Xinu kernel with Raspberry Pi 3</td></tr><br />
<tr><td> Researched a Linaro Cross-Compiler to use for its Cortex A-53 ARM processor with ARMv8 architecture</td></tr><br />
<tr><td> Drew diagrams of the boot sequence and compilation for better understanding of the Pi 3's mechanisms</td></tr><br />
<tr><td> Traced through the dynamics of written Assembly code in the full research version of Xinu</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 2: June 5-9'''</th></tr><br />
<tr><td> Tested the LED program in updated Assembly code. Began testing the Serial Port Transceiver driver for the Pi 3</td></tr><br />
<tr><td> Read about Raspberry Pi bare metal programming via online sources</td></tr><br />
<tr><td> Read about how the Raspberry Pi 3 controls the frequency of its UART pins</td></tr><br />
<tr><td> Read ARM processor documentation about configuring UART clock frequency</td></tr><br />
<tr><td> Used the oscilloscope in attempt to obtain the clock frequency of the UART pin</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 3: June 12-16'''</th></tr><br />
<tr><td> Read an online textbook about the ARM processor of the Pi 3. </td></tr><br />
<tr><td> Successfully controlled the PL011 UART with a 48MHz frequency. Began porting full version of Xinu.</td></tr><br />
<tr><td> Read ARM64 documentation on registers to use with process interrupt handling.</td></tr><br />
<tr><td> Began working on the context switch for the 64-bit architecture.</td></tr><br />
<tr><td> Finishing work on the files necessary for context switching and rescheduling.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 4: June 19-23'''</th></tr><br />
<tr><td> Continue working on the boot functions of our implementation. Finished the Research Conduct course.</td></tr><br />
<tr><td> Read about register manipulation in the ARM guide. Continue working on process creation.</td></tr><br />
<tr><td> Begin researching physical memory space in the Pi 3.</td></tr><br />
<tr><td> Read guides to porting from ARM32 to ARM64. Digging deep for a solution to a memory allocation problem.</td></tr><br />
<tr><td> Read about ATAGS and what steps need to be taken to ensure the proper accessible RAM amount.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 5: June 26-30'''</th></tr><br />
<tr><td> Narrowed down the memory issue to an Aarch64-specific register-load requirement. Working on the fix.</td></tr><br />
<tr><td> Fixed memory issue - now allocating nearly all available memory.</td></tr><br />
<tr><td> Presentation by Dr. Kim Factor on tips to create a good research poster.</td></tr><br />
<tr><td> Began formulating research poster. Working on process queue structure.</td></tr><br />
<tr><td> Continue outlining research paper for submission to EWiLi Embedded Systems conference.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 6: July 3-7'''</th></tr><br />
<tr><td> Major change of working state: switch from 64-bit to 32-bit for compatibility and teachability reasons.</td></tr><br />
<tr><td> Migrating all code from non-working 64-bit to working 32-bit.</td></tr><br />
<tr><td> Processes create and context switch among one core. Push to resolve multiple cores.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 7: July 10-14'''</th></tr><br />
<tr><td> Expanding startup code to include change in privilege level.</td></tr><br />
<tr><td> Finished outlining poster. Tested ethernet driver and multiple core threading throughout the week.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 8: July 17-21'''</th></tr><br />
<tr><td> Studied simple Linux-style multi-core scheduling algorithms using mutual exclusion.</td></tr><br />
<tr><td> Created a method of scheduling across multiple cores with Xinu.</td></tr><br />
<tr><td> Tested multicore synchronization with atomic instructions.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 9: July 24-28'''</th></tr><br />
<tr><td> Studied technical documentation on how Raspberry Pi CPU mailboxes have worked in the past.</td></tr><br />
<tr><td> Test core mailboxes and work out kinks corresponding to core setup.</td></tr><br />
<tr><td> Finished final version of research poster: Utilizing Multi-core threading on Embedded Xinu.</td></tr><br />
<tr><td> Finished research paper and submitted it to EWiLi conference.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 10: July 3-7'''</th></tr><br />
<tr><td> Expanded material of final presentation.</td></tr><br />
<tr><td> Presented my research poster alongside colleagues. Viewed and discussed posters outside my discipline.</td></tr><br />
<tr><td> Watched my fellow researchers' presentations and continued making notes of guidelines.</td></tr><br />
<tr><td> Gave my final formal research presentation on the final day of the REU.</td></tr><br />
</table></div>Pmcg521https://reu.cs.mu.edu/index.php/User:Pmcg521User:Pmcg5212017-08-07T08:50:13Z<p>Pmcg521: </p>
<hr />
<div><center><br />
==Patrick J. McGee==<br />
<table style= "border: 40px solid #212B60; background: #FAFAA0;-webkit-border-radius:6px cellpadding=2px"><br />
<tr><br />
<td>[[File:Patrick_pro_pic_png.png]]</td><br />
<br />
<td style = "border: 1px solid black><br />
<br />
<table style= "border: 1px solid black; font-family:tahoma; background: #fffced;-webkit-border-radius:5px" cellpadding=15px><br />
<tr><br />
<th style="font-family:verdana; border-bottom: 1px solid #000000">''' Personal Information'''</th><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> Incoming Junior | Computer Science Major at Marquette</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> Working with [[User:Brylow|Dr. Dennis Brylow]] on the concept of Embedded Systems ([http://reu.mscs.mu.edu/index.php/Upgrading_Embedded_Xinu_for_the_Multi-Core_Raspberry_Pi_3 Upgrading Embedded Xinu for the Multi-Core Raspberry Pi 3])</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> [http://www.mscs.mu.edu/~upsilon/ Upsilon Pi Epsilon] member</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> [http://acm.mscs.mu.edu/wiki/Main_Page ACM] At-Large Member</td><br />
</tr><br />
<br />
<tr><br />
<td> President of [https://marquette.collegiatelink.net/organization/bestbuddies Best Buddies Marquette Chapter]</td><br />
</tr><br />
<br />
</table><br />
</table><br />
<br />
==Logs==<br />
All specific progress concerning code can be viewed on our GitHub (commits across multiple branches): https://github.com/tomlazar/xinu/tree/feature/multicore<br />
<table style="border: 70px solid #212B60; border-collapse: collapse; font-family:tahoma" bgcolor="#fffced" border=1 cellpadding=2px><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 1: May 30-June 2'''</th></tr><br />
<tr><td> Began attempts to boot the full version of Embedded Xinu kernel with Raspberry Pi 3</td></tr><br />
<tr><td> Researched a Linaro Cross-Compiler to use for its Cortex A-53 ARM processor with ARMv8 architecture</td></tr><br />
<tr><td> Drew diagrams of the boot sequence and compilation for better understanding of the Pi 3's mechanisms</td></tr><br />
<tr><td> Traced through the dynamics of written Assembly code in the full research version of Xinu</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 2: June 5-9'''</th></tr><br />
<tr><td> Tested the LED program in updated Assembly code. Began testing the Serial Port Transceiver driver for the Pi 3</td></tr><br />
<tr><td> Read about Raspberry Pi bare metal programming via online sources</td></tr><br />
<tr><td> Read about how the Raspberry Pi 3 controls the frequency of its UART pins</td></tr><br />
<tr><td> Read ARM processor documentation about configuring UART clock frequency</td></tr><br />
<tr><td> Used the oscilloscope in attempt to obtain the clock frequency of the UART pin</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 3: June 12-16'''</th></tr><br />
<tr><td> Read an online textbook about the ARM processor of the Pi 3. </td></tr><br />
<tr><td> Successfully controlled the PL011 UART with a 48MHz frequency. Began porting full version of Xinu.</td></tr><br />
<tr><td> Read ARM64 documentation on registers to use with process interrupt handling.</td></tr><br />
<tr><td> Began working on the context switch for the 64-bit architecture.</td></tr><br />
<tr><td> Finishing work on the files necessary for context switching and rescheduling.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 4: June 19-23'''</th></tr><br />
<tr><td> Continue working on the boot functions of our implementation. Finished the Research Conduct course.</td></tr><br />
<tr><td> Read about register manipulation in the ARM guide. Continue working on process creation.</td></tr><br />
<tr><td> Begin researching physical memory space in the Pi 3.</td></tr><br />
<tr><td> Read guides to porting from ARM32 to ARM64. Digging deep for a solution to a memory allocation problem.</td></tr><br />
<tr><td> Read about ATAGS and what steps need to be taken to ensure the proper accessible RAM amount.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 5: June 26-30'''</th></tr><br />
<tr><td> Narrowed down the memory issue to an Aarch64-specific register-load requirement. Working on the fix.</td></tr><br />
<tr><td> Fixed memory issue - now allocating nearly all available memory.</td></tr><br />
<tr><td> Presentation by Dr. Kim Factor on tips to create a good research poster.</td></tr><br />
<tr><td> Began formulating research poster. Working on process queue structure.</td></tr><br />
<tr><td> Continue outlining research paper for submission to EWiLi Embedded Systems conference.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 6: July 3-7'''</th></tr><br />
<tr><td> Major change of working state: switch from 64-bit to 32-bit for compatibility and teachability reasons.</td></tr><br />
<tr><td> Migrating all code from non-working 64-bit to working 32-bit.</td></tr><br />
<tr><td> Processes create and context switch among one core. Push to resolve multiple cores.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 7: July 10-14'''</th></tr><br />
<tr><td> Expanding startup code to include change in privilege level.</td></tr><br />
<tr><td> Finished outlining poster. Tested ethernet driver and multiple core threading throughout the week.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 8: July 17-21'''</th></tr><br />
<tr><td> Studied simple Linux-style multi-core scheduling algorithms using mutual exclusion.</td></tr><br />
<tr><td> Created a method of scheduling across multiple cores with Xinu.</td></tr><br />
<tr><td> Tested multicore synchronization with atomic instructions.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 9: July 24-28'''</th></tr><br />
<tr><td> Studied technical documentation on how Raspberry Pi CPU mailboxes have worked in the past.</td></tr><br />
<tr><td> Test core mailboxes and work out kinks corresponding to core setup.</td></tr><br />
<tr><td> Finished final version of research poster: Utilizing Multi-core threading on Embedded Xinu.</td></tr><br />
<tr><td> Finished research paper and submitted it to EWiLi conference.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 10: July 3-7'''</th></tr><br />
<tr><td> Expanded material of final presentation.</td></tr><br />
<tr><td> Presented my research poster alongside colleagues. Viewed and discussed posters outside my discipline.</td></tr><br />
<tr><td> Watched my fellow researchers' presentations and continued making notes of guidelines.</td></tr><br />
<tr><td> Gave my final formal research presentation on the final day of the REU.</td></tr><br />
</table></div>Pmcg521https://reu.cs.mu.edu/index.php/User:Pmcg521User:Pmcg5212017-08-07T08:49:53Z<p>Pmcg521: </p>
<hr />
<div><center><br />
==Patrick J. McGee==<br />
<table style= "border: 40px solid #212B60; background: #FAFAA0;-webkit-border-radius:6px cellpadding=2px"><br />
<tr><br />
<td>[[File:Patrick_pro_pic_png.png]]</td><br />
<br />
<td><br />
<br />
<table style= "border: 1px solid black; font-family:tahoma; background: #fffced;-webkit-border-radius:5px" cellpadding=15px><br />
<tr><br />
<th style="font-family:verdana; border-bottom: 1px solid #000000">''' Personal Information'''</th><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> Incoming Junior | Computer Science Major at Marquette</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> Working with [[User:Brylow|Dr. Dennis Brylow]] on the concept of Embedded Systems ([http://reu.mscs.mu.edu/index.php/Upgrading_Embedded_Xinu_for_the_Multi-Core_Raspberry_Pi_3 Upgrading Embedded Xinu for the Multi-Core Raspberry Pi 3])</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> [http://www.mscs.mu.edu/~upsilon/ Upsilon Pi Epsilon] member</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> [http://acm.mscs.mu.edu/wiki/Main_Page ACM] At-Large Member</td><br />
</tr><br />
<br />
<tr><br />
<td> President of [https://marquette.collegiatelink.net/organization/bestbuddies Best Buddies Marquette Chapter]</td><br />
</tr><br />
<br />
</table><br />
</table><br />
<br />
==Logs==<br />
All specific progress concerning code can be viewed on our GitHub (commits across multiple branches): https://github.com/tomlazar/xinu/tree/feature/multicore<br />
<table style="border: 70px solid #212B60; border-collapse: collapse; font-family:tahoma" bgcolor="#fffced" border=1 cellpadding=2px><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 1: May 30-June 2'''</th></tr><br />
<tr><td> Began attempts to boot the full version of Embedded Xinu kernel with Raspberry Pi 3</td></tr><br />
<tr><td> Researched a Linaro Cross-Compiler to use for its Cortex A-53 ARM processor with ARMv8 architecture</td></tr><br />
<tr><td> Drew diagrams of the boot sequence and compilation for better understanding of the Pi 3's mechanisms</td></tr><br />
<tr><td> Traced through the dynamics of written Assembly code in the full research version of Xinu</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 2: June 5-9'''</th></tr><br />
<tr><td> Tested the LED program in updated Assembly code. Began testing the Serial Port Transceiver driver for the Pi 3</td></tr><br />
<tr><td> Read about Raspberry Pi bare metal programming via online sources</td></tr><br />
<tr><td> Read about how the Raspberry Pi 3 controls the frequency of its UART pins</td></tr><br />
<tr><td> Read ARM processor documentation about configuring UART clock frequency</td></tr><br />
<tr><td> Used the oscilloscope in attempt to obtain the clock frequency of the UART pin</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 3: June 12-16'''</th></tr><br />
<tr><td> Read an online textbook about the ARM processor of the Pi 3. </td></tr><br />
<tr><td> Successfully controlled the PL011 UART with a 48MHz frequency. Began porting full version of Xinu.</td></tr><br />
<tr><td> Read ARM64 documentation on registers to use with process interrupt handling.</td></tr><br />
<tr><td> Began working on the context switch for the 64-bit architecture.</td></tr><br />
<tr><td> Finishing work on the files necessary for context switching and rescheduling.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 4: June 19-23'''</th></tr><br />
<tr><td> Continue working on the boot functions of our implementation. Finished the Research Conduct course.</td></tr><br />
<tr><td> Read about register manipulation in the ARM guide. Continue working on process creation.</td></tr><br />
<tr><td> Begin researching physical memory space in the Pi 3.</td></tr><br />
<tr><td> Read guides to porting from ARM32 to ARM64. Digging deep for a solution to a memory allocation problem.</td></tr><br />
<tr><td> Read about ATAGS and what steps need to be taken to ensure the proper accessible RAM amount.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 5: June 26-30'''</th></tr><br />
<tr><td> Narrowed down the memory issue to an Aarch64-specific register-load requirement. Working on the fix.</td></tr><br />
<tr><td> Fixed memory issue - now allocating nearly all available memory.</td></tr><br />
<tr><td> Presentation by Dr. Kim Factor on tips to create a good research poster.</td></tr><br />
<tr><td> Began formulating research poster. Working on process queue structure.</td></tr><br />
<tr><td> Continue outlining research paper for submission to EWiLi Embedded Systems conference.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 6: July 3-7'''</th></tr><br />
<tr><td> Major change of working state: switch from 64-bit to 32-bit for compatibility and teachability reasons.</td></tr><br />
<tr><td> Migrating all code from non-working 64-bit to working 32-bit.</td></tr><br />
<tr><td> Processes create and context switch among one core. Push to resolve multiple cores.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 7: July 10-14'''</th></tr><br />
<tr><td> Expanding startup code to include change in privilege level.</td></tr><br />
<tr><td> Finished outlining poster. Tested ethernet driver and multiple core threading throughout the week.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 8: July 17-21'''</th></tr><br />
<tr><td> Studied simple Linux-style multi-core scheduling algorithms using mutual exclusion.</td></tr><br />
<tr><td> Created a method of scheduling across multiple cores with Xinu.</td></tr><br />
<tr><td> Tested multicore synchronization with atomic instructions.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 9: July 24-28'''</th></tr><br />
<tr><td> Studied technical documentation on how Raspberry Pi CPU mailboxes have worked in the past.</td></tr><br />
<tr><td> Test core mailboxes and work out kinks corresponding to core setup.</td></tr><br />
<tr><td> Finished final version of research poster: Utilizing Multi-core threading on Embedded Xinu.</td></tr><br />
<tr><td> Finished research paper and submitted it to EWiLi conference.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 10: July 3-7'''</th></tr><br />
<tr><td> Expanded material of final presentation.</td></tr><br />
<tr><td> Presented my research poster alongside colleagues. Viewed and discussed posters outside my discipline.</td></tr><br />
<tr><td> Watched my fellow researchers' presentations and continued making notes of guidelines.</td></tr><br />
<tr><td> Gave my final formal research presentation on the final day of the REU.</td></tr><br />
</table></div>Pmcg521https://reu.cs.mu.edu/index.php/User:Pmcg521User:Pmcg5212017-08-07T08:49:33Z<p>Pmcg521: </p>
<hr />
<div><center><br />
==Patrick J. McGee==<br />
<table style= "border: 40px solid #212B60; background: #FAFAA0;-webkit-border-radius:6px cellpadding=4px"><br />
<tr><br />
<td>[[File:Patrick_pro_pic_png.png]]</td><br />
<br />
<td><br />
<br />
<table style= "border: 1px solid black; font-family:tahoma; background: #fffced;-webkit-border-radius:5px" cellpadding=15px><br />
<tr><br />
<th style="font-family:verdana; border-bottom: 1px solid #000000">''' Personal Information'''</th><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> Incoming Junior | Computer Science Major at Marquette</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> Working with [[User:Brylow|Dr. Dennis Brylow]] on the concept of Embedded Systems ([http://reu.mscs.mu.edu/index.php/Upgrading_Embedded_Xinu_for_the_Multi-Core_Raspberry_Pi_3 Upgrading Embedded Xinu for the Multi-Core Raspberry Pi 3])</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> [http://www.mscs.mu.edu/~upsilon/ Upsilon Pi Epsilon] member</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> [http://acm.mscs.mu.edu/wiki/Main_Page ACM] At-Large Member</td><br />
</tr><br />
<br />
<tr><br />
<td> President of [https://marquette.collegiatelink.net/organization/bestbuddies Best Buddies Marquette Chapter]</td><br />
</tr><br />
<br />
</table><br />
</table><br />
<br />
==Logs==<br />
All specific progress concerning code can be viewed on our GitHub (commits across multiple branches): https://github.com/tomlazar/xinu/tree/feature/multicore<br />
<table style="border: 70px solid #212B60; border-collapse: collapse; font-family:tahoma" bgcolor="#fffced" border=1 cellpadding=2px><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 1: May 30-June 2'''</th></tr><br />
<tr><td> Began attempts to boot the full version of Embedded Xinu kernel with Raspberry Pi 3</td></tr><br />
<tr><td> Researched a Linaro Cross-Compiler to use for its Cortex A-53 ARM processor with ARMv8 architecture</td></tr><br />
<tr><td> Drew diagrams of the boot sequence and compilation for better understanding of the Pi 3's mechanisms</td></tr><br />
<tr><td> Traced through the dynamics of written Assembly code in the full research version of Xinu</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 2: June 5-9'''</th></tr><br />
<tr><td> Tested the LED program in updated Assembly code. Began testing the Serial Port Transceiver driver for the Pi 3</td></tr><br />
<tr><td> Read about Raspberry Pi bare metal programming via online sources</td></tr><br />
<tr><td> Read about how the Raspberry Pi 3 controls the frequency of its UART pins</td></tr><br />
<tr><td> Read ARM processor documentation about configuring UART clock frequency</td></tr><br />
<tr><td> Used the oscilloscope in attempt to obtain the clock frequency of the UART pin</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 3: June 12-16'''</th></tr><br />
<tr><td> Read an online textbook about the ARM processor of the Pi 3. </td></tr><br />
<tr><td> Successfully controlled the PL011 UART with a 48MHz frequency. Began porting full version of Xinu.</td></tr><br />
<tr><td> Read ARM64 documentation on registers to use with process interrupt handling.</td></tr><br />
<tr><td> Began working on the context switch for the 64-bit architecture.</td></tr><br />
<tr><td> Finishing work on the files necessary for context switching and rescheduling.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 4: June 19-23'''</th></tr><br />
<tr><td> Continue working on the boot functions of our implementation. Finished the Research Conduct course.</td></tr><br />
<tr><td> Read about register manipulation in the ARM guide. Continue working on process creation.</td></tr><br />
<tr><td> Begin researching physical memory space in the Pi 3.</td></tr><br />
<tr><td> Read guides to porting from ARM32 to ARM64. Digging deep for a solution to a memory allocation problem.</td></tr><br />
<tr><td> Read about ATAGS and what steps need to be taken to ensure the proper accessible RAM amount.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 5: June 26-30'''</th></tr><br />
<tr><td> Narrowed down the memory issue to an Aarch64-specific register-load requirement. Working on the fix.</td></tr><br />
<tr><td> Fixed memory issue - now allocating nearly all available memory.</td></tr><br />
<tr><td> Presentation by Dr. Kim Factor on tips to create a good research poster.</td></tr><br />
<tr><td> Began formulating research poster. Working on process queue structure.</td></tr><br />
<tr><td> Continue outlining research paper for submission to EWiLi Embedded Systems conference.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 6: July 3-7'''</th></tr><br />
<tr><td> Major change of working state: switch from 64-bit to 32-bit for compatibility and teachability reasons.</td></tr><br />
<tr><td> Migrating all code from non-working 64-bit to working 32-bit.</td></tr><br />
<tr><td> Processes create and context switch among one core. Push to resolve multiple cores.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 7: July 10-14'''</th></tr><br />
<tr><td> Expanding startup code to include change in privilege level.</td></tr><br />
<tr><td> Finished outlining poster. Tested ethernet driver and multiple core threading throughout the week.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 8: July 17-21'''</th></tr><br />
<tr><td> Studied simple Linux-style multi-core scheduling algorithms using mutual exclusion.</td></tr><br />
<tr><td> Created a method of scheduling across multiple cores with Xinu.</td></tr><br />
<tr><td> Tested multicore synchronization with atomic instructions.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 9: July 24-28'''</th></tr><br />
<tr><td> Studied technical documentation on how Raspberry Pi CPU mailboxes have worked in the past.</td></tr><br />
<tr><td> Test core mailboxes and work out kinks corresponding to core setup.</td></tr><br />
<tr><td> Finished final version of research poster: Utilizing Multi-core threading on Embedded Xinu.</td></tr><br />
<tr><td> Finished research paper and submitted it to EWiLi conference.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 10: July 3-7'''</th></tr><br />
<tr><td> Expanded material of final presentation.</td></tr><br />
<tr><td> Presented my research poster alongside colleagues. Viewed and discussed posters outside my discipline.</td></tr><br />
<tr><td> Watched my fellow researchers' presentations and continued making notes of guidelines.</td></tr><br />
<tr><td> Gave my final formal research presentation on the final day of the REU.</td></tr><br />
</table></div>Pmcg521https://reu.cs.mu.edu/index.php/User:Pmcg521User:Pmcg5212017-08-07T07:47:23Z<p>Pmcg521: </p>
<hr />
<div><center><br />
==Patrick J. McGee==<br />
<table style= "border: 40px solid #212B60; background: #FAFAA0;-webkit-border-radius:6px cellpadding=2px"><br />
<tr><br />
<td>[[File:Patrick_pro_pic_png.png]]</td><br />
<br />
<td><br />
<br />
<table style= "border: 1px solid black; font-family:tahoma; background: #fffced;-webkit-border-radius:5px" cellpadding=15px><br />
<tr><br />
<th style="font-family:verdana; border-bottom: 1px solid #000000">''' Personal Information'''</th><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> Incoming Junior | Computer Science Major at Marquette</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> Working with [[User:Brylow|Dr. Dennis Brylow]] on the concept of Embedded Systems ([http://reu.mscs.mu.edu/index.php/Upgrading_Embedded_Xinu_for_the_Multi-Core_Raspberry_Pi_3 Upgrading Embedded Xinu for the Multi-Core Raspberry Pi 3])</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> [http://www.mscs.mu.edu/~upsilon/ Upsilon Pi Epsilon] member</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> [http://acm.mscs.mu.edu/wiki/Main_Page ACM] At-Large Member</td><br />
</tr><br />
<br />
<tr><br />
<td> President of [https://marquette.collegiatelink.net/organization/bestbuddies Best Buddies Marquette Chapter]</td><br />
</tr><br />
<br />
</table><br />
</table><br />
<br />
==Logs==<br />
All specific progress concerning code can be viewed on our GitHub (commits across multiple branches): https://github.com/tomlazar/xinu/tree/feature/multicore<br />
<table style="border: 70px solid #212B60; border-collapse: collapse; font-family:tahoma" bgcolor="#fffced" border=1 cellpadding=2px><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 1: May 30-June 2'''</th></tr><br />
<tr><td> Began attempts to boot the full version of Embedded Xinu kernel with Raspberry Pi 3</td></tr><br />
<tr><td> Researched a Linaro Cross-Compiler to use for its Cortex A-53 ARM processor with ARMv8 architecture</td></tr><br />
<tr><td> Drew diagrams of the boot sequence and compilation for better understanding of the Pi 3's mechanisms</td></tr><br />
<tr><td> Traced through the dynamics of written Assembly code in the full research version of Xinu</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 2: June 5-9'''</th></tr><br />
<tr><td> Tested the LED program in updated Assembly code. Began testing the Serial Port Transceiver driver for the Pi 3</td></tr><br />
<tr><td> Read about Raspberry Pi bare metal programming via online sources</td></tr><br />
<tr><td> Read about how the Raspberry Pi 3 controls the frequency of its UART pins</td></tr><br />
<tr><td> Read ARM processor documentation about configuring UART clock frequency</td></tr><br />
<tr><td> Used the oscilloscope in attempt to obtain the clock frequency of the UART pin</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 3: June 12-16'''</th></tr><br />
<tr><td> Read an online textbook about the ARM processor of the Pi 3. </td></tr><br />
<tr><td> Successfully controlled the PL011 UART with a 48MHz frequency. Began porting full version of Xinu.</td></tr><br />
<tr><td> Read ARM64 documentation on registers to use with process interrupt handling.</td></tr><br />
<tr><td> Began working on the context switch for the 64-bit architecture.</td></tr><br />
<tr><td> Finishing work on the files necessary for context switching and rescheduling.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 4: June 19-23'''</th></tr><br />
<tr><td> Continue working on the boot functions of our implementation. Finished the Research Conduct course.</td></tr><br />
<tr><td> Read about register manipulation in the ARM guide. Continue working on process creation.</td></tr><br />
<tr><td> Begin researching physical memory space in the Pi 3.</td></tr><br />
<tr><td> Read guides to porting from ARM32 to ARM64. Digging deep for a solution to a memory allocation problem.</td></tr><br />
<tr><td> Read about ATAGS and what steps need to be taken to ensure the proper accessible RAM amount.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 5: June 26-30'''</th></tr><br />
<tr><td> Narrowed down the memory issue to an Aarch64-specific register-load requirement. Working on the fix.</td></tr><br />
<tr><td> Fixed memory issue - now allocating nearly all available memory.</td></tr><br />
<tr><td> Presentation by Dr. Kim Factor on tips to create a good research poster.</td></tr><br />
<tr><td> Began formulating research poster. Working on process queue structure.</td></tr><br />
<tr><td> Continue outlining research paper for submission to EWiLi Embedded Systems conference.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 6: July 3-7'''</th></tr><br />
<tr><td> Major change of working state: switch from 64-bit to 32-bit for compatibility and teachability reasons.</td></tr><br />
<tr><td> Migrating all code from non-working 64-bit to working 32-bit.</td></tr><br />
<tr><td> Processes create and context switch among one core. Push to resolve multiple cores.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 7: July 10-14'''</th></tr><br />
<tr><td> Expanding startup code to include change in privilege level.</td></tr><br />
<tr><td> Finished outlining poster. Tested ethernet driver and multiple core threading throughout the week.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 8: July 17-21'''</th></tr><br />
<tr><td> Studied simple Linux-style multi-core scheduling algorithms using mutual exclusion.</td></tr><br />
<tr><td> Created a method of scheduling across multiple cores with Xinu.</td></tr><br />
<tr><td> Tested multicore synchronization with atomic instructions.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 9: July 24-28'''</th></tr><br />
<tr><td> Studied technical documentation on how Raspberry Pi CPU mailboxes have worked in the past.</td></tr><br />
<tr><td> Test core mailboxes and work out kinks corresponding to core setup.</td></tr><br />
<tr><td> Finished final version of research poster: Utilizing Multi-core threading on Embedded Xinu.</td></tr><br />
<tr><td> Finished research paper and submitted it to EWiLi conference.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 10: July 3-7'''</th></tr><br />
<tr><td> Expanded material of final presentation.</td></tr><br />
<tr><td> Presented my research poster alongside colleagues. Viewed and discussed posters outside my discipline.</td></tr><br />
<tr><td> Watched my fellow researchers' presentations and continued making notes of guidelines.</td></tr><br />
<tr><td> Gave my final formal research presentation on the final day of the REU.</td></tr><br />
</table></div>Pmcg521https://reu.cs.mu.edu/index.php/User:Pmcg521User:Pmcg5212017-08-07T07:47:08Z<p>Pmcg521: </p>
<hr />
<div><center><br />
==Patrick J. McGee==<br />
<table style= "border: 40px solid #212B60; background: #FAFAA0;-webkit-border-radius:6px" cellpadding=2px><br />
<tr><br />
<td">[[File:Patrick_pro_pic_png.png]]</td><br />
<br />
<td><br />
<br />
<table style= "border: 1px solid black; font-family:tahoma; background: #fffced;-webkit-border-radius:5px" cellpadding=15px><br />
<tr><br />
<th style="font-family:verdana; border-bottom: 1px solid #000000">''' Personal Information'''</th><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> Incoming Junior | Computer Science Major at Marquette</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> Working with [[User:Brylow|Dr. Dennis Brylow]] on the concept of Embedded Systems ([http://reu.mscs.mu.edu/index.php/Upgrading_Embedded_Xinu_for_the_Multi-Core_Raspberry_Pi_3 Upgrading Embedded Xinu for the Multi-Core Raspberry Pi 3])</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> [http://www.mscs.mu.edu/~upsilon/ Upsilon Pi Epsilon] member</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> [http://acm.mscs.mu.edu/wiki/Main_Page ACM] At-Large Member</td><br />
</tr><br />
<br />
<tr><br />
<td> President of [https://marquette.collegiatelink.net/organization/bestbuddies Best Buddies Marquette Chapter]</td><br />
</tr><br />
<br />
</table><br />
</table><br />
<br />
==Logs==<br />
All specific progress concerning code can be viewed on our GitHub (commits across multiple branches): https://github.com/tomlazar/xinu/tree/feature/multicore<br />
<table style="border: 70px solid #212B60; border-collapse: collapse; font-family:tahoma" bgcolor="#fffced" border=1 cellpadding=2px><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 1: May 30-June 2'''</th></tr><br />
<tr><td> Began attempts to boot the full version of Embedded Xinu kernel with Raspberry Pi 3</td></tr><br />
<tr><td> Researched a Linaro Cross-Compiler to use for its Cortex A-53 ARM processor with ARMv8 architecture</td></tr><br />
<tr><td> Drew diagrams of the boot sequence and compilation for better understanding of the Pi 3's mechanisms</td></tr><br />
<tr><td> Traced through the dynamics of written Assembly code in the full research version of Xinu</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 2: June 5-9'''</th></tr><br />
<tr><td> Tested the LED program in updated Assembly code. Began testing the Serial Port Transceiver driver for the Pi 3</td></tr><br />
<tr><td> Read about Raspberry Pi bare metal programming via online sources</td></tr><br />
<tr><td> Read about how the Raspberry Pi 3 controls the frequency of its UART pins</td></tr><br />
<tr><td> Read ARM processor documentation about configuring UART clock frequency</td></tr><br />
<tr><td> Used the oscilloscope in attempt to obtain the clock frequency of the UART pin</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 3: June 12-16'''</th></tr><br />
<tr><td> Read an online textbook about the ARM processor of the Pi 3. </td></tr><br />
<tr><td> Successfully controlled the PL011 UART with a 48MHz frequency. Began porting full version of Xinu.</td></tr><br />
<tr><td> Read ARM64 documentation on registers to use with process interrupt handling.</td></tr><br />
<tr><td> Began working on the context switch for the 64-bit architecture.</td></tr><br />
<tr><td> Finishing work on the files necessary for context switching and rescheduling.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 4: June 19-23'''</th></tr><br />
<tr><td> Continue working on the boot functions of our implementation. Finished the Research Conduct course.</td></tr><br />
<tr><td> Read about register manipulation in the ARM guide. Continue working on process creation.</td></tr><br />
<tr><td> Begin researching physical memory space in the Pi 3.</td></tr><br />
<tr><td> Read guides to porting from ARM32 to ARM64. Digging deep for a solution to a memory allocation problem.</td></tr><br />
<tr><td> Read about ATAGS and what steps need to be taken to ensure the proper accessible RAM amount.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 5: June 26-30'''</th></tr><br />
<tr><td> Narrowed down the memory issue to an Aarch64-specific register-load requirement. Working on the fix.</td></tr><br />
<tr><td> Fixed memory issue - now allocating nearly all available memory.</td></tr><br />
<tr><td> Presentation by Dr. Kim Factor on tips to create a good research poster.</td></tr><br />
<tr><td> Began formulating research poster. Working on process queue structure.</td></tr><br />
<tr><td> Continue outlining research paper for submission to EWiLi Embedded Systems conference.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 6: July 3-7'''</th></tr><br />
<tr><td> Major change of working state: switch from 64-bit to 32-bit for compatibility and teachability reasons.</td></tr><br />
<tr><td> Migrating all code from non-working 64-bit to working 32-bit.</td></tr><br />
<tr><td> Processes create and context switch among one core. Push to resolve multiple cores.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 7: July 10-14'''</th></tr><br />
<tr><td> Expanding startup code to include change in privilege level.</td></tr><br />
<tr><td> Finished outlining poster. Tested ethernet driver and multiple core threading throughout the week.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 8: July 17-21'''</th></tr><br />
<tr><td> Studied simple Linux-style multi-core scheduling algorithms using mutual exclusion.</td></tr><br />
<tr><td> Created a method of scheduling across multiple cores with Xinu.</td></tr><br />
<tr><td> Tested multicore synchronization with atomic instructions.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 9: July 24-28'''</th></tr><br />
<tr><td> Studied technical documentation on how Raspberry Pi CPU mailboxes have worked in the past.</td></tr><br />
<tr><td> Test core mailboxes and work out kinks corresponding to core setup.</td></tr><br />
<tr><td> Finished final version of research poster: Utilizing Multi-core threading on Embedded Xinu.</td></tr><br />
<tr><td> Finished research paper and submitted it to EWiLi conference.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 10: July 3-7'''</th></tr><br />
<tr><td> Expanded material of final presentation.</td></tr><br />
<tr><td> Presented my research poster alongside colleagues. Viewed and discussed posters outside my discipline.</td></tr><br />
<tr><td> Watched my fellow researchers' presentations and continued making notes of guidelines.</td></tr><br />
<tr><td> Gave my final formal research presentation on the final day of the REU.</td></tr><br />
</table></div>Pmcg521https://reu.cs.mu.edu/index.php/User:Pmcg521User:Pmcg5212017-08-07T07:46:56Z<p>Pmcg521: </p>
<hr />
<div><center><br />
==Patrick J. McGee==<br />
<table style= "border: 40px solid #212B60; background: #FAFAA0;-webkit-border-radius:6px cellpadding=2px"><br />
<tr><br />
<td">[[File:Patrick_pro_pic_png.png]]</td><br />
<br />
<td><br />
<br />
<table style= "border: 1px solid black; font-family:tahoma; background: #fffced;-webkit-border-radius:5px" cellpadding=15px><br />
<tr><br />
<th style="font-family:verdana; border-bottom: 1px solid #000000">''' Personal Information'''</th><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> Incoming Junior | Computer Science Major at Marquette</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> Working with [[User:Brylow|Dr. Dennis Brylow]] on the concept of Embedded Systems ([http://reu.mscs.mu.edu/index.php/Upgrading_Embedded_Xinu_for_the_Multi-Core_Raspberry_Pi_3 Upgrading Embedded Xinu for the Multi-Core Raspberry Pi 3])</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> [http://www.mscs.mu.edu/~upsilon/ Upsilon Pi Epsilon] member</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> [http://acm.mscs.mu.edu/wiki/Main_Page ACM] At-Large Member</td><br />
</tr><br />
<br />
<tr><br />
<td> President of [https://marquette.collegiatelink.net/organization/bestbuddies Best Buddies Marquette Chapter]</td><br />
</tr><br />
<br />
</table><br />
</table><br />
<br />
==Logs==<br />
All specific progress concerning code can be viewed on our GitHub (commits across multiple branches): https://github.com/tomlazar/xinu/tree/feature/multicore<br />
<table style="border: 70px solid #212B60; border-collapse: collapse; font-family:tahoma" bgcolor="#fffced" border=1 cellpadding=2px><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 1: May 30-June 2'''</th></tr><br />
<tr><td> Began attempts to boot the full version of Embedded Xinu kernel with Raspberry Pi 3</td></tr><br />
<tr><td> Researched a Linaro Cross-Compiler to use for its Cortex A-53 ARM processor with ARMv8 architecture</td></tr><br />
<tr><td> Drew diagrams of the boot sequence and compilation for better understanding of the Pi 3's mechanisms</td></tr><br />
<tr><td> Traced through the dynamics of written Assembly code in the full research version of Xinu</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 2: June 5-9'''</th></tr><br />
<tr><td> Tested the LED program in updated Assembly code. Began testing the Serial Port Transceiver driver for the Pi 3</td></tr><br />
<tr><td> Read about Raspberry Pi bare metal programming via online sources</td></tr><br />
<tr><td> Read about how the Raspberry Pi 3 controls the frequency of its UART pins</td></tr><br />
<tr><td> Read ARM processor documentation about configuring UART clock frequency</td></tr><br />
<tr><td> Used the oscilloscope in attempt to obtain the clock frequency of the UART pin</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 3: June 12-16'''</th></tr><br />
<tr><td> Read an online textbook about the ARM processor of the Pi 3. </td></tr><br />
<tr><td> Successfully controlled the PL011 UART with a 48MHz frequency. Began porting full version of Xinu.</td></tr><br />
<tr><td> Read ARM64 documentation on registers to use with process interrupt handling.</td></tr><br />
<tr><td> Began working on the context switch for the 64-bit architecture.</td></tr><br />
<tr><td> Finishing work on the files necessary for context switching and rescheduling.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 4: June 19-23'''</th></tr><br />
<tr><td> Continue working on the boot functions of our implementation. Finished the Research Conduct course.</td></tr><br />
<tr><td> Read about register manipulation in the ARM guide. Continue working on process creation.</td></tr><br />
<tr><td> Begin researching physical memory space in the Pi 3.</td></tr><br />
<tr><td> Read guides to porting from ARM32 to ARM64. Digging deep for a solution to a memory allocation problem.</td></tr><br />
<tr><td> Read about ATAGS and what steps need to be taken to ensure the proper accessible RAM amount.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 5: June 26-30'''</th></tr><br />
<tr><td> Narrowed down the memory issue to an Aarch64-specific register-load requirement. Working on the fix.</td></tr><br />
<tr><td> Fixed memory issue - now allocating nearly all available memory.</td></tr><br />
<tr><td> Presentation by Dr. Kim Factor on tips to create a good research poster.</td></tr><br />
<tr><td> Began formulating research poster. Working on process queue structure.</td></tr><br />
<tr><td> Continue outlining research paper for submission to EWiLi Embedded Systems conference.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 6: July 3-7'''</th></tr><br />
<tr><td> Major change of working state: switch from 64-bit to 32-bit for compatibility and teachability reasons.</td></tr><br />
<tr><td> Migrating all code from non-working 64-bit to working 32-bit.</td></tr><br />
<tr><td> Processes create and context switch among one core. Push to resolve multiple cores.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 7: July 10-14'''</th></tr><br />
<tr><td> Expanding startup code to include change in privilege level.</td></tr><br />
<tr><td> Finished outlining poster. Tested ethernet driver and multiple core threading throughout the week.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 8: July 17-21'''</th></tr><br />
<tr><td> Studied simple Linux-style multi-core scheduling algorithms using mutual exclusion.</td></tr><br />
<tr><td> Created a method of scheduling across multiple cores with Xinu.</td></tr><br />
<tr><td> Tested multicore synchronization with atomic instructions.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 9: July 24-28'''</th></tr><br />
<tr><td> Studied technical documentation on how Raspberry Pi CPU mailboxes have worked in the past.</td></tr><br />
<tr><td> Test core mailboxes and work out kinks corresponding to core setup.</td></tr><br />
<tr><td> Finished final version of research poster: Utilizing Multi-core threading on Embedded Xinu.</td></tr><br />
<tr><td> Finished research paper and submitted it to EWiLi conference.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 10: July 3-7'''</th></tr><br />
<tr><td> Expanded material of final presentation.</td></tr><br />
<tr><td> Presented my research poster alongside colleagues. Viewed and discussed posters outside my discipline.</td></tr><br />
<tr><td> Watched my fellow researchers' presentations and continued making notes of guidelines.</td></tr><br />
<tr><td> Gave my final formal research presentation on the final day of the REU.</td></tr><br />
</table></div>Pmcg521https://reu.cs.mu.edu/index.php/User:Pmcg521User:Pmcg5212017-08-07T07:46:21Z<p>Pmcg521: /* Patrick J. McGee */</p>
<hr />
<div><center><br />
==Patrick J. McGee==<br />
<table style= "border: 40px solid #212B60; background: #FAFAA0;-webkit-border-radius:6px" cellpadding=2px><br />
<tr><br />
<td style = "border: 1px solid black">[[File:Patrick_pro_pic_png.png]]</td><br />
<br />
<td><br />
<br />
<table style= "border: 1px solid black; font-family:tahoma; background: #fffced;-webkit-border-radius:5px" cellpadding=15px><br />
<tr><br />
<th style="font-family:verdana; border-bottom: 1px solid #000000">''' Personal Information'''</th><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> Incoming Junior | Computer Science Major at Marquette</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> Working with [[User:Brylow|Dr. Dennis Brylow]] on the concept of Embedded Systems ([http://reu.mscs.mu.edu/index.php/Upgrading_Embedded_Xinu_for_the_Multi-Core_Raspberry_Pi_3 Upgrading Embedded Xinu for the Multi-Core Raspberry Pi 3])</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> [http://www.mscs.mu.edu/~upsilon/ Upsilon Pi Epsilon] member</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> [http://acm.mscs.mu.edu/wiki/Main_Page ACM] At-Large Member</td><br />
</tr><br />
<br />
<tr><br />
<td> President of [https://marquette.collegiatelink.net/organization/bestbuddies Best Buddies Marquette Chapter]</td><br />
</tr><br />
<br />
</table><br />
</table><br />
<br />
==Logs==<br />
All specific progress concerning code can be viewed on our GitHub (commits across multiple branches): https://github.com/tomlazar/xinu/tree/feature/multicore<br />
<table style="border: 70px solid #212B60; border-collapse: collapse; font-family:tahoma" bgcolor="#fffced" border=1 cellpadding=2px><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 1: May 30-June 2'''</th></tr><br />
<tr><td> Began attempts to boot the full version of Embedded Xinu kernel with Raspberry Pi 3</td></tr><br />
<tr><td> Researched a Linaro Cross-Compiler to use for its Cortex A-53 ARM processor with ARMv8 architecture</td></tr><br />
<tr><td> Drew diagrams of the boot sequence and compilation for better understanding of the Pi 3's mechanisms</td></tr><br />
<tr><td> Traced through the dynamics of written Assembly code in the full research version of Xinu</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 2: June 5-9'''</th></tr><br />
<tr><td> Tested the LED program in updated Assembly code. Began testing the Serial Port Transceiver driver for the Pi 3</td></tr><br />
<tr><td> Read about Raspberry Pi bare metal programming via online sources</td></tr><br />
<tr><td> Read about how the Raspberry Pi 3 controls the frequency of its UART pins</td></tr><br />
<tr><td> Read ARM processor documentation about configuring UART clock frequency</td></tr><br />
<tr><td> Used the oscilloscope in attempt to obtain the clock frequency of the UART pin</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 3: June 12-16'''</th></tr><br />
<tr><td> Read an online textbook about the ARM processor of the Pi 3. </td></tr><br />
<tr><td> Successfully controlled the PL011 UART with a 48MHz frequency. Began porting full version of Xinu.</td></tr><br />
<tr><td> Read ARM64 documentation on registers to use with process interrupt handling.</td></tr><br />
<tr><td> Began working on the context switch for the 64-bit architecture.</td></tr><br />
<tr><td> Finishing work on the files necessary for context switching and rescheduling.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 4: June 19-23'''</th></tr><br />
<tr><td> Continue working on the boot functions of our implementation. Finished the Research Conduct course.</td></tr><br />
<tr><td> Read about register manipulation in the ARM guide. Continue working on process creation.</td></tr><br />
<tr><td> Begin researching physical memory space in the Pi 3.</td></tr><br />
<tr><td> Read guides to porting from ARM32 to ARM64. Digging deep for a solution to a memory allocation problem.</td></tr><br />
<tr><td> Read about ATAGS and what steps need to be taken to ensure the proper accessible RAM amount.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 5: June 26-30'''</th></tr><br />
<tr><td> Narrowed down the memory issue to an Aarch64-specific register-load requirement. Working on the fix.</td></tr><br />
<tr><td> Fixed memory issue - now allocating nearly all available memory.</td></tr><br />
<tr><td> Presentation by Dr. Kim Factor on tips to create a good research poster.</td></tr><br />
<tr><td> Began formulating research poster. Working on process queue structure.</td></tr><br />
<tr><td> Continue outlining research paper for submission to EWiLi Embedded Systems conference.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 6: July 3-7'''</th></tr><br />
<tr><td> Major change of working state: switch from 64-bit to 32-bit for compatibility and teachability reasons.</td></tr><br />
<tr><td> Migrating all code from non-working 64-bit to working 32-bit.</td></tr><br />
<tr><td> Processes create and context switch among one core. Push to resolve multiple cores.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 7: July 10-14'''</th></tr><br />
<tr><td> Expanding startup code to include change in privilege level.</td></tr><br />
<tr><td> Finished outlining poster. Tested ethernet driver and multiple core threading throughout the week.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 8: July 17-21'''</th></tr><br />
<tr><td> Studied simple Linux-style multi-core scheduling algorithms using mutual exclusion.</td></tr><br />
<tr><td> Created a method of scheduling across multiple cores with Xinu.</td></tr><br />
<tr><td> Tested multicore synchronization with atomic instructions.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 9: July 24-28'''</th></tr><br />
<tr><td> Studied technical documentation on how Raspberry Pi CPU mailboxes have worked in the past.</td></tr><br />
<tr><td> Test core mailboxes and work out kinks corresponding to core setup.</td></tr><br />
<tr><td> Finished final version of research poster: Utilizing Multi-core threading on Embedded Xinu.</td></tr><br />
<tr><td> Finished research paper and submitted it to EWiLi conference.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 10: July 3-7'''</th></tr><br />
<tr><td> Expanded material of final presentation.</td></tr><br />
<tr><td> Presented my research poster alongside colleagues. Viewed and discussed posters outside my discipline.</td></tr><br />
<tr><td> Watched my fellow researchers' presentations and continued making notes of guidelines.</td></tr><br />
<tr><td> Gave my final formal research presentation on the final day of the REU.</td></tr><br />
</table></div>Pmcg521https://reu.cs.mu.edu/index.php/User:Pmcg521User:Pmcg5212017-08-07T07:45:23Z<p>Pmcg521: </p>
<hr />
<div><center><br />
==Patrick J. McGee==<br />
<table style= "border: 40px solid #212B60; background: #FAFAA0;-webkit-border-radius:6px" cellpadding=2px><br />
<tr><br />
<td border = 1>[[File:Patrick_pro_pic_png.png]]</td><br />
<br />
<td><br />
<br />
<table style= "border: 1px solid black; font-family:tahoma; background: #fffced;-webkit-border-radius:5px" cellpadding=15px><br />
<tr><br />
<th style="font-family:verdana; border-bottom: 1px solid #000000">''' Personal Information'''</th><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> Incoming Junior | Computer Science Major at Marquette</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> Working with [[User:Brylow|Dr. Dennis Brylow]] on the concept of Embedded Systems ([http://reu.mscs.mu.edu/index.php/Upgrading_Embedded_Xinu_for_the_Multi-Core_Raspberry_Pi_3 Upgrading Embedded Xinu for the Multi-Core Raspberry Pi 3])</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> [http://www.mscs.mu.edu/~upsilon/ Upsilon Pi Epsilon] member</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> [http://acm.mscs.mu.edu/wiki/Main_Page ACM] At-Large Member</td><br />
</tr><br />
<br />
<tr><br />
<td> President of [https://marquette.collegiatelink.net/organization/bestbuddies Best Buddies Marquette Chapter]</td><br />
</tr><br />
<br />
</table><br />
</table><br />
<br />
==Logs==<br />
All specific progress concerning code can be viewed on our GitHub (commits across multiple branches): https://github.com/tomlazar/xinu/tree/feature/multicore<br />
<table style="border: 70px solid #212B60; border-collapse: collapse; font-family:tahoma" bgcolor="#fffced" border=1 cellpadding=2px><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 1: May 30-June 2'''</th></tr><br />
<tr><td> Began attempts to boot the full version of Embedded Xinu kernel with Raspberry Pi 3</td></tr><br />
<tr><td> Researched a Linaro Cross-Compiler to use for its Cortex A-53 ARM processor with ARMv8 architecture</td></tr><br />
<tr><td> Drew diagrams of the boot sequence and compilation for better understanding of the Pi 3's mechanisms</td></tr><br />
<tr><td> Traced through the dynamics of written Assembly code in the full research version of Xinu</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 2: June 5-9'''</th></tr><br />
<tr><td> Tested the LED program in updated Assembly code. Began testing the Serial Port Transceiver driver for the Pi 3</td></tr><br />
<tr><td> Read about Raspberry Pi bare metal programming via online sources</td></tr><br />
<tr><td> Read about how the Raspberry Pi 3 controls the frequency of its UART pins</td></tr><br />
<tr><td> Read ARM processor documentation about configuring UART clock frequency</td></tr><br />
<tr><td> Used the oscilloscope in attempt to obtain the clock frequency of the UART pin</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 3: June 12-16'''</th></tr><br />
<tr><td> Read an online textbook about the ARM processor of the Pi 3. </td></tr><br />
<tr><td> Successfully controlled the PL011 UART with a 48MHz frequency. Began porting full version of Xinu.</td></tr><br />
<tr><td> Read ARM64 documentation on registers to use with process interrupt handling.</td></tr><br />
<tr><td> Began working on the context switch for the 64-bit architecture.</td></tr><br />
<tr><td> Finishing work on the files necessary for context switching and rescheduling.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 4: June 19-23'''</th></tr><br />
<tr><td> Continue working on the boot functions of our implementation. Finished the Research Conduct course.</td></tr><br />
<tr><td> Read about register manipulation in the ARM guide. Continue working on process creation.</td></tr><br />
<tr><td> Begin researching physical memory space in the Pi 3.</td></tr><br />
<tr><td> Read guides to porting from ARM32 to ARM64. Digging deep for a solution to a memory allocation problem.</td></tr><br />
<tr><td> Read about ATAGS and what steps need to be taken to ensure the proper accessible RAM amount.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 5: June 26-30'''</th></tr><br />
<tr><td> Narrowed down the memory issue to an Aarch64-specific register-load requirement. Working on the fix.</td></tr><br />
<tr><td> Fixed memory issue - now allocating nearly all available memory.</td></tr><br />
<tr><td> Presentation by Dr. Kim Factor on tips to create a good research poster.</td></tr><br />
<tr><td> Began formulating research poster. Working on process queue structure.</td></tr><br />
<tr><td> Continue outlining research paper for submission to EWiLi Embedded Systems conference.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 6: July 3-7'''</th></tr><br />
<tr><td> Major change of working state: switch from 64-bit to 32-bit for compatibility and teachability reasons.</td></tr><br />
<tr><td> Migrating all code from non-working 64-bit to working 32-bit.</td></tr><br />
<tr><td> Processes create and context switch among one core. Push to resolve multiple cores.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 7: July 10-14'''</th></tr><br />
<tr><td> Expanding startup code to include change in privilege level.</td></tr><br />
<tr><td> Finished outlining poster. Tested ethernet driver and multiple core threading throughout the week.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 8: July 17-21'''</th></tr><br />
<tr><td> Studied simple Linux-style multi-core scheduling algorithms using mutual exclusion.</td></tr><br />
<tr><td> Created a method of scheduling across multiple cores with Xinu.</td></tr><br />
<tr><td> Tested multicore synchronization with atomic instructions.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 9: July 24-28'''</th></tr><br />
<tr><td> Studied technical documentation on how Raspberry Pi CPU mailboxes have worked in the past.</td></tr><br />
<tr><td> Test core mailboxes and work out kinks corresponding to core setup.</td></tr><br />
<tr><td> Finished final version of research poster: Utilizing Multi-core threading on Embedded Xinu.</td></tr><br />
<tr><td> Finished research paper and submitted it to EWiLi conference.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 10: July 3-7'''</th></tr><br />
<tr><td> Expanded material of final presentation.</td></tr><br />
<tr><td> Presented my research poster alongside colleagues. Viewed and discussed posters outside my discipline.</td></tr><br />
<tr><td> Watched my fellow researchers' presentations and continued making notes of guidelines.</td></tr><br />
<tr><td> Gave my final formal research presentation on the final day of the REU.</td></tr><br />
</table></div>Pmcg521https://reu.cs.mu.edu/index.php/User:Pmcg521User:Pmcg5212017-08-07T07:44:51Z<p>Pmcg521: /* Patrick J. McGee */</p>
<hr />
<div><center><br />
==Patrick J. McGee==<br />
<table style= "border: 40px solid #212B60; border=1; background: #FAFAA0;-webkit-border-radius:6px" cellpadding=2px><br />
<tr><br />
<td>[[File:Patrick_pro_pic_png.png]]</td><br />
<br />
<td><br />
<br />
<table style= "border: 1px solid black; font-family:tahoma; background: #fffced;-webkit-border-radius:5px" cellpadding=15px><br />
<tr><br />
<th style="font-family:verdana; border-bottom: 1px solid #000000">''' Personal Information'''</th><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> Incoming Junior | Computer Science Major at Marquette</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> Working with [[User:Brylow|Dr. Dennis Brylow]] on the concept of Embedded Systems ([http://reu.mscs.mu.edu/index.php/Upgrading_Embedded_Xinu_for_the_Multi-Core_Raspberry_Pi_3 Upgrading Embedded Xinu for the Multi-Core Raspberry Pi 3])</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> [http://www.mscs.mu.edu/~upsilon/ Upsilon Pi Epsilon] member</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> [http://acm.mscs.mu.edu/wiki/Main_Page ACM] At-Large Member</td><br />
</tr><br />
<br />
<tr><br />
<td> President of [https://marquette.collegiatelink.net/organization/bestbuddies Best Buddies Marquette Chapter]</td><br />
</tr><br />
<br />
</table><br />
</table><br />
<br />
==Logs==<br />
All specific progress concerning code can be viewed on our GitHub (commits across multiple branches): https://github.com/tomlazar/xinu/tree/feature/multicore<br />
<table style="border: 70px solid #212B60; border-collapse: collapse; font-family:tahoma" bgcolor="#fffced" border=1 cellpadding=2px><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 1: May 30-June 2'''</th></tr><br />
<tr><td> Began attempts to boot the full version of Embedded Xinu kernel with Raspberry Pi 3</td></tr><br />
<tr><td> Researched a Linaro Cross-Compiler to use for its Cortex A-53 ARM processor with ARMv8 architecture</td></tr><br />
<tr><td> Drew diagrams of the boot sequence and compilation for better understanding of the Pi 3's mechanisms</td></tr><br />
<tr><td> Traced through the dynamics of written Assembly code in the full research version of Xinu</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 2: June 5-9'''</th></tr><br />
<tr><td> Tested the LED program in updated Assembly code. Began testing the Serial Port Transceiver driver for the Pi 3</td></tr><br />
<tr><td> Read about Raspberry Pi bare metal programming via online sources</td></tr><br />
<tr><td> Read about how the Raspberry Pi 3 controls the frequency of its UART pins</td></tr><br />
<tr><td> Read ARM processor documentation about configuring UART clock frequency</td></tr><br />
<tr><td> Used the oscilloscope in attempt to obtain the clock frequency of the UART pin</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 3: June 12-16'''</th></tr><br />
<tr><td> Read an online textbook about the ARM processor of the Pi 3. </td></tr><br />
<tr><td> Successfully controlled the PL011 UART with a 48MHz frequency. Began porting full version of Xinu.</td></tr><br />
<tr><td> Read ARM64 documentation on registers to use with process interrupt handling.</td></tr><br />
<tr><td> Began working on the context switch for the 64-bit architecture.</td></tr><br />
<tr><td> Finishing work on the files necessary for context switching and rescheduling.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 4: June 19-23'''</th></tr><br />
<tr><td> Continue working on the boot functions of our implementation. Finished the Research Conduct course.</td></tr><br />
<tr><td> Read about register manipulation in the ARM guide. Continue working on process creation.</td></tr><br />
<tr><td> Begin researching physical memory space in the Pi 3.</td></tr><br />
<tr><td> Read guides to porting from ARM32 to ARM64. Digging deep for a solution to a memory allocation problem.</td></tr><br />
<tr><td> Read about ATAGS and what steps need to be taken to ensure the proper accessible RAM amount.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 5: June 26-30'''</th></tr><br />
<tr><td> Narrowed down the memory issue to an Aarch64-specific register-load requirement. Working on the fix.</td></tr><br />
<tr><td> Fixed memory issue - now allocating nearly all available memory.</td></tr><br />
<tr><td> Presentation by Dr. Kim Factor on tips to create a good research poster.</td></tr><br />
<tr><td> Began formulating research poster. Working on process queue structure.</td></tr><br />
<tr><td> Continue outlining research paper for submission to EWiLi Embedded Systems conference.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 6: July 3-7'''</th></tr><br />
<tr><td> Major change of working state: switch from 64-bit to 32-bit for compatibility and teachability reasons.</td></tr><br />
<tr><td> Migrating all code from non-working 64-bit to working 32-bit.</td></tr><br />
<tr><td> Processes create and context switch among one core. Push to resolve multiple cores.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 7: July 10-14'''</th></tr><br />
<tr><td> Expanding startup code to include change in privilege level.</td></tr><br />
<tr><td> Finished outlining poster. Tested ethernet driver and multiple core threading throughout the week.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 8: July 17-21'''</th></tr><br />
<tr><td> Studied simple Linux-style multi-core scheduling algorithms using mutual exclusion.</td></tr><br />
<tr><td> Created a method of scheduling across multiple cores with Xinu.</td></tr><br />
<tr><td> Tested multicore synchronization with atomic instructions.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 9: July 24-28'''</th></tr><br />
<tr><td> Studied technical documentation on how Raspberry Pi CPU mailboxes have worked in the past.</td></tr><br />
<tr><td> Test core mailboxes and work out kinks corresponding to core setup.</td></tr><br />
<tr><td> Finished final version of research poster: Utilizing Multi-core threading on Embedded Xinu.</td></tr><br />
<tr><td> Finished research paper and submitted it to EWiLi conference.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 10: July 3-7'''</th></tr><br />
<tr><td> Expanded material of final presentation.</td></tr><br />
<tr><td> Presented my research poster alongside colleagues. Viewed and discussed posters outside my discipline.</td></tr><br />
<tr><td> Watched my fellow researchers' presentations and continued making notes of guidelines.</td></tr><br />
<tr><td> Gave my final formal research presentation on the final day of the REU.</td></tr><br />
</table></div>Pmcg521https://reu.cs.mu.edu/index.php/User:Pmcg521User:Pmcg5212017-08-07T07:44:27Z<p>Pmcg521: </p>
<hr />
<div><center><br />
==Patrick J. McGee==<br />
<table style= "border: 40px solid #212B60; background: #FAFAA0;-webkit-border-radius:6px" cellpadding=2px><br />
<tr><br />
<td>[[File:Patrick_pro_pic_png.png]]</td><br />
<br />
<td><br />
<br />
<table style= "border: 1px solid black; font-family:tahoma; background: #fffced;-webkit-border-radius:5px" cellpadding=15px><br />
<tr><br />
<th style="font-family:verdana; border-bottom: 1px solid #000000">''' Personal Information'''</th><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> Incoming Junior | Computer Science Major at Marquette</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> Working with [[User:Brylow|Dr. Dennis Brylow]] on the concept of Embedded Systems ([http://reu.mscs.mu.edu/index.php/Upgrading_Embedded_Xinu_for_the_Multi-Core_Raspberry_Pi_3 Upgrading Embedded Xinu for the Multi-Core Raspberry Pi 3])</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> [http://www.mscs.mu.edu/~upsilon/ Upsilon Pi Epsilon] member</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> [http://acm.mscs.mu.edu/wiki/Main_Page ACM] At-Large Member</td><br />
</tr><br />
<br />
<tr><br />
<td> President of [https://marquette.collegiatelink.net/organization/bestbuddies Best Buddies Marquette Chapter]</td><br />
</tr><br />
<br />
</table><br />
</table><br />
<br />
==Logs==<br />
All specific progress concerning code can be viewed on our GitHub (commits across multiple branches): https://github.com/tomlazar/xinu/tree/feature/multicore<br />
<table style="border: 70px solid #212B60; border-collapse: collapse; font-family:tahoma" bgcolor="#fffced" border=1 cellpadding=2px><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 1: May 30-June 2'''</th></tr><br />
<tr><td> Began attempts to boot the full version of Embedded Xinu kernel with Raspberry Pi 3</td></tr><br />
<tr><td> Researched a Linaro Cross-Compiler to use for its Cortex A-53 ARM processor with ARMv8 architecture</td></tr><br />
<tr><td> Drew diagrams of the boot sequence and compilation for better understanding of the Pi 3's mechanisms</td></tr><br />
<tr><td> Traced through the dynamics of written Assembly code in the full research version of Xinu</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 2: June 5-9'''</th></tr><br />
<tr><td> Tested the LED program in updated Assembly code. Began testing the Serial Port Transceiver driver for the Pi 3</td></tr><br />
<tr><td> Read about Raspberry Pi bare metal programming via online sources</td></tr><br />
<tr><td> Read about how the Raspberry Pi 3 controls the frequency of its UART pins</td></tr><br />
<tr><td> Read ARM processor documentation about configuring UART clock frequency</td></tr><br />
<tr><td> Used the oscilloscope in attempt to obtain the clock frequency of the UART pin</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 3: June 12-16'''</th></tr><br />
<tr><td> Read an online textbook about the ARM processor of the Pi 3. </td></tr><br />
<tr><td> Successfully controlled the PL011 UART with a 48MHz frequency. Began porting full version of Xinu.</td></tr><br />
<tr><td> Read ARM64 documentation on registers to use with process interrupt handling.</td></tr><br />
<tr><td> Began working on the context switch for the 64-bit architecture.</td></tr><br />
<tr><td> Finishing work on the files necessary for context switching and rescheduling.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 4: June 19-23'''</th></tr><br />
<tr><td> Continue working on the boot functions of our implementation. Finished the Research Conduct course.</td></tr><br />
<tr><td> Read about register manipulation in the ARM guide. Continue working on process creation.</td></tr><br />
<tr><td> Begin researching physical memory space in the Pi 3.</td></tr><br />
<tr><td> Read guides to porting from ARM32 to ARM64. Digging deep for a solution to a memory allocation problem.</td></tr><br />
<tr><td> Read about ATAGS and what steps need to be taken to ensure the proper accessible RAM amount.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 5: June 26-30'''</th></tr><br />
<tr><td> Narrowed down the memory issue to an Aarch64-specific register-load requirement. Working on the fix.</td></tr><br />
<tr><td> Fixed memory issue - now allocating nearly all available memory.</td></tr><br />
<tr><td> Presentation by Dr. Kim Factor on tips to create a good research poster.</td></tr><br />
<tr><td> Began formulating research poster. Working on process queue structure.</td></tr><br />
<tr><td> Continue outlining research paper for submission to EWiLi Embedded Systems conference.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 6: July 3-7'''</th></tr><br />
<tr><td> Major change of working state: switch from 64-bit to 32-bit for compatibility and teachability reasons.</td></tr><br />
<tr><td> Migrating all code from non-working 64-bit to working 32-bit.</td></tr><br />
<tr><td> Processes create and context switch among one core. Push to resolve multiple cores.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 7: July 10-14'''</th></tr><br />
<tr><td> Expanding startup code to include change in privilege level.</td></tr><br />
<tr><td> Finished outlining poster. Tested ethernet driver and multiple core threading throughout the week.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 8: July 17-21'''</th></tr><br />
<tr><td> Studied simple Linux-style multi-core scheduling algorithms using mutual exclusion.</td></tr><br />
<tr><td> Created a method of scheduling across multiple cores with Xinu.</td></tr><br />
<tr><td> Tested multicore synchronization with atomic instructions.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 9: July 24-28'''</th></tr><br />
<tr><td> Studied technical documentation on how Raspberry Pi CPU mailboxes have worked in the past.</td></tr><br />
<tr><td> Test core mailboxes and work out kinks corresponding to core setup.</td></tr><br />
<tr><td> Finished final version of research poster: Utilizing Multi-core threading on Embedded Xinu.</td></tr><br />
<tr><td> Finished research paper and submitted it to EWiLi conference.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 10: July 3-7'''</th></tr><br />
<tr><td> Expanded material of final presentation.</td></tr><br />
<tr><td> Presented my research poster alongside colleagues. Viewed and discussed posters outside my discipline.</td></tr><br />
<tr><td> Watched my fellow researchers' presentations and continued making notes of guidelines.</td></tr><br />
<tr><td> Gave my final formal research presentation on the final day of the REU.</td></tr><br />
</table></div>Pmcg521https://reu.cs.mu.edu/index.php/User:Pmcg521User:Pmcg5212017-08-07T07:43:49Z<p>Pmcg521: </p>
<hr />
<div><center><br />
==Patrick J. McGee==<br />
<table style= "border: 40px solid #212B60; background: #FAFAA0;-webkit-border-radius:6px" cellpadding=2px><br />
<tr><br />
<td>[[File:Patrick_pro_pic_png.png]]</td><br />
<br />
<td><br />
<br />
<table style= "border: 1px solid black; font-family:tahoma; background: #fffced;-webkit-border-radius:5px" cellpadding=15px><br />
<tr><br />
<th style="font-family:verdana; border-bottom: 1px solid #000000">''' Personal Information'''</th><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> Incoming Junior | Computer Science Major at Marquette</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> Working with [[User:Brylow|Dr. Dennis Brylow]] on the concept of Embedded Systems ([http://reu.mscs.mu.edu/index.php/Upgrading_Embedded_Xinu_for_the_Multi-Core_Raspberry_Pi_3 Upgrading Embedded Xinu for the Multi-Core Raspberry Pi 3])</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> [http://www.mscs.mu.edu/~upsilon/ Upsilon Pi Epsilon] member</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> [http://acm.mscs.mu.edu/wiki/Main_Page ACM] At-Large Member</td><br />
</tr><br />
<br />
<tr><br />
<td> President of [https://marquette.collegiatelink.net/organization/bestbuddies Best Buddies Marquette Chapter]</td><br />
</tr><br />
<br />
</table><br />
</table><br />
<br />
==Logs==<br />
All specific progress concerning code can be viewed on our GitHub (commits across multiple branches): https://github.com/tomlazar/xinu/tree/feature/multicore<br />
<table style="border: 70px solid #212B60; border-collapse: collapse; font-family:tahoma" bgcolor="#FAFAA0" border=1 cellpadding=2px><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 1: May 30-June 2'''</th></tr><br />
<tr><td> Began attempts to boot the full version of Embedded Xinu kernel with Raspberry Pi 3</td></tr><br />
<tr><td> Researched a Linaro Cross-Compiler to use for its Cortex A-53 ARM processor with ARMv8 architecture</td></tr><br />
<tr><td> Drew diagrams of the boot sequence and compilation for better understanding of the Pi 3's mechanisms</td></tr><br />
<tr><td> Traced through the dynamics of written Assembly code in the full research version of Xinu</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 2: June 5-9'''</th></tr><br />
<tr><td> Tested the LED program in updated Assembly code. Began testing the Serial Port Transceiver driver for the Pi 3</td></tr><br />
<tr><td> Read about Raspberry Pi bare metal programming via online sources</td></tr><br />
<tr><td> Read about how the Raspberry Pi 3 controls the frequency of its UART pins</td></tr><br />
<tr><td> Read ARM processor documentation about configuring UART clock frequency</td></tr><br />
<tr><td> Used the oscilloscope in attempt to obtain the clock frequency of the UART pin</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 3: June 12-16'''</th></tr><br />
<tr><td> Read an online textbook about the ARM processor of the Pi 3. </td></tr><br />
<tr><td> Successfully controlled the PL011 UART with a 48MHz frequency. Began porting full version of Xinu.</td></tr><br />
<tr><td> Read ARM64 documentation on registers to use with process interrupt handling.</td></tr><br />
<tr><td> Began working on the context switch for the 64-bit architecture.</td></tr><br />
<tr><td> Finishing work on the files necessary for context switching and rescheduling.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 4: June 19-23'''</th></tr><br />
<tr><td> Continue working on the boot functions of our implementation. Finished the Research Conduct course.</td></tr><br />
<tr><td> Read about register manipulation in the ARM guide. Continue working on process creation.</td></tr><br />
<tr><td> Begin researching physical memory space in the Pi 3.</td></tr><br />
<tr><td> Read guides to porting from ARM32 to ARM64. Digging deep for a solution to a memory allocation problem.</td></tr><br />
<tr><td> Read about ATAGS and what steps need to be taken to ensure the proper accessible RAM amount.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 5: June 26-30'''</th></tr><br />
<tr><td> Narrowed down the memory issue to an Aarch64-specific register-load requirement. Working on the fix.</td></tr><br />
<tr><td> Fixed memory issue - now allocating nearly all available memory.</td></tr><br />
<tr><td> Presentation by Dr. Kim Factor on tips to create a good research poster.</td></tr><br />
<tr><td> Began formulating research poster. Working on process queue structure.</td></tr><br />
<tr><td> Continue outlining research paper for submission to EWiLi Embedded Systems conference.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 6: July 3-7'''</th></tr><br />
<tr><td> Major change of working state: switch from 64-bit to 32-bit for compatibility and teachability reasons.</td></tr><br />
<tr><td> Migrating all code from non-working 64-bit to working 32-bit.</td></tr><br />
<tr><td> Processes create and context switch among one core. Push to resolve multiple cores.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 7: July 10-14'''</th></tr><br />
<tr><td> Expanding startup code to include change in privilege level.</td></tr><br />
<tr><td> Finished outlining poster. Tested ethernet driver and multiple core threading throughout the week.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 8: July 17-21'''</th></tr><br />
<tr><td> Studied simple Linux-style multi-core scheduling algorithms using mutual exclusion.</td></tr><br />
<tr><td> Created a method of scheduling across multiple cores with Xinu.</td></tr><br />
<tr><td> Tested multicore synchronization with atomic instructions.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 9: July 24-28'''</th></tr><br />
<tr><td> Studied technical documentation on how Raspberry Pi CPU mailboxes have worked in the past.</td></tr><br />
<tr><td> Test core mailboxes and work out kinks corresponding to core setup.</td></tr><br />
<tr><td> Finished final version of research poster: Utilizing Multi-core threading on Embedded Xinu.</td></tr><br />
<tr><td> Finished research paper and submitted it to EWiLi conference.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 10: July 3-7'''</th></tr><br />
<tr><td> Expanded material of final presentation.</td></tr><br />
<tr><td> Presented my research poster alongside colleagues. Viewed and discussed posters outside my discipline.</td></tr><br />
<tr><td> Watched my fellow researchers' presentations and continued making notes of guidelines.</td></tr><br />
<tr><td> Gave my final formal research presentation on the final day of the REU.</td></tr><br />
</table></div>Pmcg521https://reu.cs.mu.edu/index.php/User:Pmcg521User:Pmcg5212017-08-07T07:43:21Z<p>Pmcg521: /* Patrick J. McGee */</p>
<hr />
<div><center><br />
==Patrick J. McGee==<br />
<table style= "border: 40px solid #FAFAA0; background: #FAFAA0;-webkit-border-radius:6px" cellpadding=2px><br />
<tr><br />
<td>[[File:Patrick_pro_pic_png.png]]</td><br />
<br />
<td><br />
<br />
<table style= "border: 1px solid black; font-family:tahoma; background: #fffced;-webkit-border-radius:5px" cellpadding=15px><br />
<tr><br />
<th style="font-family:verdana; border-bottom: 1px solid #000000">''' Personal Information'''</th><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> Incoming Junior | Computer Science Major at Marquette</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> Working with [[User:Brylow|Dr. Dennis Brylow]] on the concept of Embedded Systems ([http://reu.mscs.mu.edu/index.php/Upgrading_Embedded_Xinu_for_the_Multi-Core_Raspberry_Pi_3 Upgrading Embedded Xinu for the Multi-Core Raspberry Pi 3])</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> [http://www.mscs.mu.edu/~upsilon/ Upsilon Pi Epsilon] member</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> [http://acm.mscs.mu.edu/wiki/Main_Page ACM] At-Large Member</td><br />
</tr><br />
<br />
<tr><br />
<td> President of [https://marquette.collegiatelink.net/organization/bestbuddies Best Buddies Marquette Chapter]</td><br />
</tr><br />
<br />
</table><br />
</table><br />
<br />
==Logs==<br />
All specific progress concerning code can be viewed on our GitHub (commits across multiple branches): https://github.com/tomlazar/xinu/tree/feature/multicore<br />
<table style="border: 70px solid #FAFAA0; border-collapse: collapse; font-family:tahoma" bgcolor="#fffced" border=1 cellpadding=2px><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 1: May 30-June 2'''</th></tr><br />
<tr><td> Began attempts to boot the full version of Embedded Xinu kernel with Raspberry Pi 3</td></tr><br />
<tr><td> Researched a Linaro Cross-Compiler to use for its Cortex A-53 ARM processor with ARMv8 architecture</td></tr><br />
<tr><td> Drew diagrams of the boot sequence and compilation for better understanding of the Pi 3's mechanisms</td></tr><br />
<tr><td> Traced through the dynamics of written Assembly code in the full research version of Xinu</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 2: June 5-9'''</th></tr><br />
<tr><td> Tested the LED program in updated Assembly code. Began testing the Serial Port Transceiver driver for the Pi 3</td></tr><br />
<tr><td> Read about Raspberry Pi bare metal programming via online sources</td></tr><br />
<tr><td> Read about how the Raspberry Pi 3 controls the frequency of its UART pins</td></tr><br />
<tr><td> Read ARM processor documentation about configuring UART clock frequency</td></tr><br />
<tr><td> Used the oscilloscope in attempt to obtain the clock frequency of the UART pin</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 3: June 12-16'''</th></tr><br />
<tr><td> Read an online textbook about the ARM processor of the Pi 3. </td></tr><br />
<tr><td> Successfully controlled the PL011 UART with a 48MHz frequency. Began porting full version of Xinu.</td></tr><br />
<tr><td> Read ARM64 documentation on registers to use with process interrupt handling.</td></tr><br />
<tr><td> Began working on the context switch for the 64-bit architecture.</td></tr><br />
<tr><td> Finishing work on the files necessary for context switching and rescheduling.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 4: June 19-23'''</th></tr><br />
<tr><td> Continue working on the boot functions of our implementation. Finished the Research Conduct course.</td></tr><br />
<tr><td> Read about register manipulation in the ARM guide. Continue working on process creation.</td></tr><br />
<tr><td> Begin researching physical memory space in the Pi 3.</td></tr><br />
<tr><td> Read guides to porting from ARM32 to ARM64. Digging deep for a solution to a memory allocation problem.</td></tr><br />
<tr><td> Read about ATAGS and what steps need to be taken to ensure the proper accessible RAM amount.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 5: June 26-30'''</th></tr><br />
<tr><td> Narrowed down the memory issue to an Aarch64-specific register-load requirement. Working on the fix.</td></tr><br />
<tr><td> Fixed memory issue - now allocating nearly all available memory.</td></tr><br />
<tr><td> Presentation by Dr. Kim Factor on tips to create a good research poster.</td></tr><br />
<tr><td> Began formulating research poster. Working on process queue structure.</td></tr><br />
<tr><td> Continue outlining research paper for submission to EWiLi Embedded Systems conference.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 6: July 3-7'''</th></tr><br />
<tr><td> Major change of working state: switch from 64-bit to 32-bit for compatibility and teachability reasons.</td></tr><br />
<tr><td> Migrating all code from non-working 64-bit to working 32-bit.</td></tr><br />
<tr><td> Processes create and context switch among one core. Push to resolve multiple cores.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 7: July 10-14'''</th></tr><br />
<tr><td> Expanding startup code to include change in privilege level.</td></tr><br />
<tr><td> Finished outlining poster. Tested ethernet driver and multiple core threading throughout the week.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 8: July 17-21'''</th></tr><br />
<tr><td> Studied simple Linux-style multi-core scheduling algorithms using mutual exclusion.</td></tr><br />
<tr><td> Created a method of scheduling across multiple cores with Xinu.</td></tr><br />
<tr><td> Tested multicore synchronization with atomic instructions.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 9: July 24-28'''</th></tr><br />
<tr><td> Studied technical documentation on how Raspberry Pi CPU mailboxes have worked in the past.</td></tr><br />
<tr><td> Test core mailboxes and work out kinks corresponding to core setup.</td></tr><br />
<tr><td> Finished final version of research poster: Utilizing Multi-core threading on Embedded Xinu.</td></tr><br />
<tr><td> Finished research paper and submitted it to EWiLi conference.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 10: July 3-7'''</th></tr><br />
<tr><td> Expanded material of final presentation.</td></tr><br />
<tr><td> Presented my research poster alongside colleagues. Viewed and discussed posters outside my discipline.</td></tr><br />
<tr><td> Watched my fellow researchers' presentations and continued making notes of guidelines.</td></tr><br />
<tr><td> Gave my final formal research presentation on the final day of the REU.</td></tr><br />
</table></div>Pmcg521https://reu.cs.mu.edu/index.php/User:Pmcg521User:Pmcg5212017-08-07T07:42:56Z<p>Pmcg521: </p>
<hr />
<div><center><br />
==Patrick J. McGee==<br />
<table style= "border: 40px solid #FAFAA0; background: #ED702D;-webkit-border-radius:6px" cellpadding=2px><br />
<tr><br />
<td>[[File:Patrick_pro_pic_png.png]]</td><br />
<br />
<td><br />
<br />
<table style= "border: 1px solid black; font-family:tahoma; background: #fffced;-webkit-border-radius:5px" cellpadding=15px><br />
<tr><br />
<th style="font-family:verdana; border-bottom: 1px solid #000000">''' Personal Information'''</th><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> Incoming Junior | Computer Science Major at Marquette</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> Working with [[User:Brylow|Dr. Dennis Brylow]] on the concept of Embedded Systems ([http://reu.mscs.mu.edu/index.php/Upgrading_Embedded_Xinu_for_the_Multi-Core_Raspberry_Pi_3 Upgrading Embedded Xinu for the Multi-Core Raspberry Pi 3])</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> [http://www.mscs.mu.edu/~upsilon/ Upsilon Pi Epsilon] member</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> [http://acm.mscs.mu.edu/wiki/Main_Page ACM] At-Large Member</td><br />
</tr><br />
<br />
<tr><br />
<td> President of [https://marquette.collegiatelink.net/organization/bestbuddies Best Buddies Marquette Chapter]</td><br />
</tr><br />
<br />
</table><br />
</table><br />
<br />
==Logs==<br />
All specific progress concerning code can be viewed on our GitHub (commits across multiple branches): https://github.com/tomlazar/xinu/tree/feature/multicore<br />
<table style="border: 70px solid #FAFAA0; border-collapse: collapse; font-family:tahoma" bgcolor="#fffced" border=1 cellpadding=2px><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 1: May 30-June 2'''</th></tr><br />
<tr><td> Began attempts to boot the full version of Embedded Xinu kernel with Raspberry Pi 3</td></tr><br />
<tr><td> Researched a Linaro Cross-Compiler to use for its Cortex A-53 ARM processor with ARMv8 architecture</td></tr><br />
<tr><td> Drew diagrams of the boot sequence and compilation for better understanding of the Pi 3's mechanisms</td></tr><br />
<tr><td> Traced through the dynamics of written Assembly code in the full research version of Xinu</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 2: June 5-9'''</th></tr><br />
<tr><td> Tested the LED program in updated Assembly code. Began testing the Serial Port Transceiver driver for the Pi 3</td></tr><br />
<tr><td> Read about Raspberry Pi bare metal programming via online sources</td></tr><br />
<tr><td> Read about how the Raspberry Pi 3 controls the frequency of its UART pins</td></tr><br />
<tr><td> Read ARM processor documentation about configuring UART clock frequency</td></tr><br />
<tr><td> Used the oscilloscope in attempt to obtain the clock frequency of the UART pin</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 3: June 12-16'''</th></tr><br />
<tr><td> Read an online textbook about the ARM processor of the Pi 3. </td></tr><br />
<tr><td> Successfully controlled the PL011 UART with a 48MHz frequency. Began porting full version of Xinu.</td></tr><br />
<tr><td> Read ARM64 documentation on registers to use with process interrupt handling.</td></tr><br />
<tr><td> Began working on the context switch for the 64-bit architecture.</td></tr><br />
<tr><td> Finishing work on the files necessary for context switching and rescheduling.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 4: June 19-23'''</th></tr><br />
<tr><td> Continue working on the boot functions of our implementation. Finished the Research Conduct course.</td></tr><br />
<tr><td> Read about register manipulation in the ARM guide. Continue working on process creation.</td></tr><br />
<tr><td> Begin researching physical memory space in the Pi 3.</td></tr><br />
<tr><td> Read guides to porting from ARM32 to ARM64. Digging deep for a solution to a memory allocation problem.</td></tr><br />
<tr><td> Read about ATAGS and what steps need to be taken to ensure the proper accessible RAM amount.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 5: June 26-30'''</th></tr><br />
<tr><td> Narrowed down the memory issue to an Aarch64-specific register-load requirement. Working on the fix.</td></tr><br />
<tr><td> Fixed memory issue - now allocating nearly all available memory.</td></tr><br />
<tr><td> Presentation by Dr. Kim Factor on tips to create a good research poster.</td></tr><br />
<tr><td> Began formulating research poster. Working on process queue structure.</td></tr><br />
<tr><td> Continue outlining research paper for submission to EWiLi Embedded Systems conference.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 6: July 3-7'''</th></tr><br />
<tr><td> Major change of working state: switch from 64-bit to 32-bit for compatibility and teachability reasons.</td></tr><br />
<tr><td> Migrating all code from non-working 64-bit to working 32-bit.</td></tr><br />
<tr><td> Processes create and context switch among one core. Push to resolve multiple cores.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 7: July 10-14'''</th></tr><br />
<tr><td> Expanding startup code to include change in privilege level.</td></tr><br />
<tr><td> Finished outlining poster. Tested ethernet driver and multiple core threading throughout the week.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 8: July 17-21'''</th></tr><br />
<tr><td> Studied simple Linux-style multi-core scheduling algorithms using mutual exclusion.</td></tr><br />
<tr><td> Created a method of scheduling across multiple cores with Xinu.</td></tr><br />
<tr><td> Tested multicore synchronization with atomic instructions.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 9: July 24-28'''</th></tr><br />
<tr><td> Studied technical documentation on how Raspberry Pi CPU mailboxes have worked in the past.</td></tr><br />
<tr><td> Test core mailboxes and work out kinks corresponding to core setup.</td></tr><br />
<tr><td> Finished final version of research poster: Utilizing Multi-core threading on Embedded Xinu.</td></tr><br />
<tr><td> Finished research paper and submitted it to EWiLi conference.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 10: July 3-7'''</th></tr><br />
<tr><td> Expanded material of final presentation.</td></tr><br />
<tr><td> Presented my research poster alongside colleagues. Viewed and discussed posters outside my discipline.</td></tr><br />
<tr><td> Watched my fellow researchers' presentations and continued making notes of guidelines.</td></tr><br />
<tr><td> Gave my final formal research presentation on the final day of the REU.</td></tr><br />
</table></div>Pmcg521https://reu.cs.mu.edu/index.php/User:Pmcg521User:Pmcg5212017-08-07T07:42:02Z<p>Pmcg521: </p>
<hr />
<div><center><br />
==Patrick J. McGee==<br />
<table style= "border: 40px solid #0C1078; background: #ED702D;-webkit-border-radius:6px" cellpadding=2px><br />
<tr><br />
<td>[[File:Patrick_pro_pic_png.png]]</td><br />
<br />
<td><br />
<br />
<table style= "border: 1px solid black; font-family:tahoma; background: #fffced;-webkit-border-radius:5px" cellpadding=15px><br />
<tr><br />
<th style="font-family:verdana; border-bottom: 1px solid #000000">''' Personal Information'''</th><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> Incoming Junior | Computer Science Major at Marquette</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> Working with [[User:Brylow|Dr. Dennis Brylow]] on the concept of Embedded Systems ([http://reu.mscs.mu.edu/index.php/Upgrading_Embedded_Xinu_for_the_Multi-Core_Raspberry_Pi_3 Upgrading Embedded Xinu for the Multi-Core Raspberry Pi 3])</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> [http://www.mscs.mu.edu/~upsilon/ Upsilon Pi Epsilon] member</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> [http://acm.mscs.mu.edu/wiki/Main_Page ACM] At-Large Member</td><br />
</tr><br />
<br />
<tr><br />
<td> President of [https://marquette.collegiatelink.net/organization/bestbuddies Best Buddies Marquette Chapter]</td><br />
</tr><br />
<br />
</table><br />
</table><br />
<br />
==Logs==<br />
All specific progress concerning code can be viewed on our GitHub (commits across multiple branches): https://github.com/tomlazar/xinu/tree/feature/multicore<br />
<table style="border: 70px solid #0C1078; border-collapse: collapse; font-family:tahoma" bgcolor="#fffced" border=1 cellpadding=2px><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 1: May 30-June 2'''</th></tr><br />
<tr><td> Began attempts to boot the full version of Embedded Xinu kernel with Raspberry Pi 3</td></tr><br />
<tr><td> Researched a Linaro Cross-Compiler to use for its Cortex A-53 ARM processor with ARMv8 architecture</td></tr><br />
<tr><td> Drew diagrams of the boot sequence and compilation for better understanding of the Pi 3's mechanisms</td></tr><br />
<tr><td> Traced through the dynamics of written Assembly code in the full research version of Xinu</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 2: June 5-9'''</th></tr><br />
<tr><td> Tested the LED program in updated Assembly code. Began testing the Serial Port Transceiver driver for the Pi 3</td></tr><br />
<tr><td> Read about Raspberry Pi bare metal programming via online sources</td></tr><br />
<tr><td> Read about how the Raspberry Pi 3 controls the frequency of its UART pins</td></tr><br />
<tr><td> Read ARM processor documentation about configuring UART clock frequency</td></tr><br />
<tr><td> Used the oscilloscope in attempt to obtain the clock frequency of the UART pin</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 3: June 12-16'''</th></tr><br />
<tr><td> Read an online textbook about the ARM processor of the Pi 3. </td></tr><br />
<tr><td> Successfully controlled the PL011 UART with a 48MHz frequency. Began porting full version of Xinu.</td></tr><br />
<tr><td> Read ARM64 documentation on registers to use with process interrupt handling.</td></tr><br />
<tr><td> Began working on the context switch for the 64-bit architecture.</td></tr><br />
<tr><td> Finishing work on the files necessary for context switching and rescheduling.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 4: June 19-23'''</th></tr><br />
<tr><td> Continue working on the boot functions of our implementation. Finished the Research Conduct course.</td></tr><br />
<tr><td> Read about register manipulation in the ARM guide. Continue working on process creation.</td></tr><br />
<tr><td> Begin researching physical memory space in the Pi 3.</td></tr><br />
<tr><td> Read guides to porting from ARM32 to ARM64. Digging deep for a solution to a memory allocation problem.</td></tr><br />
<tr><td> Read about ATAGS and what steps need to be taken to ensure the proper accessible RAM amount.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 5: June 26-30'''</th></tr><br />
<tr><td> Narrowed down the memory issue to an Aarch64-specific register-load requirement. Working on the fix.</td></tr><br />
<tr><td> Fixed memory issue - now allocating nearly all available memory.</td></tr><br />
<tr><td> Presentation by Dr. Kim Factor on tips to create a good research poster.</td></tr><br />
<tr><td> Began formulating research poster. Working on process queue structure.</td></tr><br />
<tr><td> Continue outlining research paper for submission to EWiLi Embedded Systems conference.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 6: July 3-7'''</th></tr><br />
<tr><td> Major change of working state: switch from 64-bit to 32-bit for compatibility and teachability reasons.</td></tr><br />
<tr><td> Migrating all code from non-working 64-bit to working 32-bit.</td></tr><br />
<tr><td> Processes create and context switch among one core. Push to resolve multiple cores.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 7: July 10-14'''</th></tr><br />
<tr><td> Expanding startup code to include change in privilege level.</td></tr><br />
<tr><td> Finished outlining poster. Tested ethernet driver and multiple core threading throughout the week.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 8: July 17-21'''</th></tr><br />
<tr><td> Studied simple Linux-style multi-core scheduling algorithms using mutual exclusion.</td></tr><br />
<tr><td> Created a method of scheduling across multiple cores with Xinu.</td></tr><br />
<tr><td> Tested multicore synchronization with atomic instructions.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 9: July 24-28'''</th></tr><br />
<tr><td> Studied technical documentation on how Raspberry Pi CPU mailboxes have worked in the past.</td></tr><br />
<tr><td> Test core mailboxes and work out kinks corresponding to core setup.</td></tr><br />
<tr><td> Finished final version of research poster: Utilizing Multi-core threading on Embedded Xinu.</td></tr><br />
<tr><td> Finished research paper and submitted it to EWiLi conference.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 10: July 3-7'''</th></tr><br />
<tr><td> Expanded material of final presentation.</td></tr><br />
<tr><td> Presented my research poster alongside colleagues. Viewed and discussed posters outside my discipline.</td></tr><br />
<tr><td> Watched my fellow researchers' presentations and continued making notes of guidelines.</td></tr><br />
<tr><td> Gave my final formal research presentation on the final day of the REU.</td></tr><br />
</table></div>Pmcg521https://reu.cs.mu.edu/index.php/User:Pmcg521User:Pmcg5212017-08-07T07:40:43Z<p>Pmcg521: </p>
<hr />
<div><center><br />
==Patrick J. McGee==<br />
<table style= "border: 40px solid #2344778; background: #ED702D;-webkit-border-radius:6px" cellpadding=2px><br />
<tr><br />
<td>[[File:Patrick_pro_pic_png.png]]</td><br />
<br />
<td><br />
<br />
<table style= "border: 1px solid black; font-family:tahoma; background: #fffced;-webkit-border-radius:5px" cellpadding=15px><br />
<tr><br />
<th style="font-family:verdana; border-bottom: 1px solid #000000">''' Personal Information'''</th><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> Incoming Junior | Computer Science Major at Marquette</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> Working with [[User:Brylow|Dr. Dennis Brylow]] on the concept of Embedded Systems ([http://reu.mscs.mu.edu/index.php/Upgrading_Embedded_Xinu_for_the_Multi-Core_Raspberry_Pi_3 Upgrading Embedded Xinu for the Multi-Core Raspberry Pi 3])</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> [http://www.mscs.mu.edu/~upsilon/ Upsilon Pi Epsilon] member</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> [http://acm.mscs.mu.edu/wiki/Main_Page ACM] At-Large Member</td><br />
</tr><br />
<br />
<tr><br />
<td> President of [https://marquette.collegiatelink.net/organization/bestbuddies Best Buddies Marquette Chapter]</td><br />
</tr><br />
<br />
</table><br />
</table><br />
<br />
==Logs==<br />
All specific progress concerning code can be viewed on our GitHub (multiple branches used): https://github.com/tomlazar/xinu/tree/feature/multicore<br />
<table style="border: 70px solid #2344778; border-collapse: collapse; font-family:tahoma" bgcolor="#fffced" border=1 cellpadding=2px><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 1: May 30-June 2'''</th></tr><br />
<tr><td> Began attempts to boot the full version of Embedded Xinu kernel with Raspberry Pi 3</td></tr><br />
<tr><td> Researched a Linaro Cross-Compiler to use for its Cortex A-53 ARM processor with ARMv8 architecture</td></tr><br />
<tr><td> Drew diagrams of the boot sequence and compilation for better understanding of the Pi 3's mechanisms</td></tr><br />
<tr><td> Traced through the dynamics of written Assembly code in the full research version of Xinu</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 2: June 5-9'''</th></tr><br />
<tr><td> Tested the LED program in updated Assembly code. Began testing the Serial Port Transceiver driver for the Pi 3</td></tr><br />
<tr><td> Read about Raspberry Pi bare metal programming via online sources</td></tr><br />
<tr><td> Read about how the Raspberry Pi 3 controls the frequency of its UART pins</td></tr><br />
<tr><td> Read ARM processor documentation about configuring UART clock frequency</td></tr><br />
<tr><td> Used the oscilloscope in attempt to obtain the clock frequency of the UART pin</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 3: June 12-16'''</th></tr><br />
<tr><td> Read an online textbook about the ARM processor of the Pi 3. </td></tr><br />
<tr><td> Successfully controlled the PL011 UART with a 48MHz frequency. Began porting full version of Xinu.</td></tr><br />
<tr><td> Read ARM64 documentation on registers to use with process interrupt handling.</td></tr><br />
<tr><td> Began working on the context switch for the 64-bit architecture.</td></tr><br />
<tr><td> Finishing work on the files necessary for context switching and rescheduling.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 4: June 19-23'''</th></tr><br />
<tr><td> Continue working on the boot functions of our implementation. Finished the Research Conduct course.</td></tr><br />
<tr><td> Read about register manipulation in the ARM guide. Continue working on process creation.</td></tr><br />
<tr><td> Begin researching physical memory space in the Pi 3.</td></tr><br />
<tr><td> Read guides to porting from ARM32 to ARM64. Digging deep for a solution to a memory allocation problem.</td></tr><br />
<tr><td> Read about ATAGS and what steps need to be taken to ensure the proper accessible RAM amount.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 5: June 26-30'''</th></tr><br />
<tr><td> Narrowed down the memory issue to an Aarch64-specific register-load requirement. Working on the fix.</td></tr><br />
<tr><td> Fixed memory issue - now allocating nearly all available memory.</td></tr><br />
<tr><td> Presentation by Dr. Kim Factor on tips to create a good research poster.</td></tr><br />
<tr><td> Began formulating research poster. Working on process queue structure.</td></tr><br />
<tr><td> Continue outlining research paper for submission to EWiLi Embedded Systems conference.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 6: July 3-7'''</th></tr><br />
<tr><td> Major change of working state: switch from 64-bit to 32-bit for compatibility and teachability reasons.</td></tr><br />
<tr><td> Migrating all code from non-working 64-bit to working 32-bit.</td></tr><br />
<tr><td> Processes create and context switch among one core. Push to resolve multiple cores.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 7: July 10-14'''</th></tr><br />
<tr><td> Expanding startup code to include change in privilege level.</td></tr><br />
<tr><td> Finished outlining poster. Tested ethernet driver and multiple core threading throughout the week.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 8: July 17-21'''</th></tr><br />
<tr><td> Studied simple Linux-style multi-core scheduling algorithms using mutual exclusion.</td></tr><br />
<tr><td> Created a method of scheduling across multiple cores with Xinu.</td></tr><br />
<tr><td> Tested multicore synchronization with atomic instructions.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 9: July 24-28'''</th></tr><br />
<tr><td> Studied technical documentation on how Raspberry Pi CPU mailboxes have worked in the past.</td></tr><br />
<tr><td> Test core mailboxes and work out kinks corresponding to core setup.</td></tr><br />
<tr><td> Finished final version of research poster: Utilizing Multi-core threading on Embedded Xinu.</td></tr><br />
<tr><td> Finished research paper and submitted it to EWiLi conference.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 10: July 3-7'''</th></tr><br />
<tr><td> Expanded material of final presentation.</td></tr><br />
<tr><td> Presented my research poster alongside colleagues. Viewed and discussed posters outside my discipline.</td></tr><br />
<tr><td> Watched my fellow researchers' presentations and continued making notes of guidelines.</td></tr><br />
<tr><td> Gave my final formal research presentation on the final day of the REU.</td></tr><br />
</table></div>Pmcg521https://reu.cs.mu.edu/index.php/User:Pmcg521User:Pmcg5212017-08-07T07:39:41Z<p>Pmcg521: /* Logs */</p>
<hr />
<div><center><br />
==Patrick J. McGee==<br />
<table style= "border: 40px solid #3bc6b8; background: #ED702D;-webkit-border-radius:6px" cellpadding=2px><br />
<tr><br />
<td>[[File:Patrick_pro_pic_png.png]]</td><br />
<br />
<td><br />
<br />
<table style= "border: 1px solid black; font-family:tahoma; background: #fffced;-webkit-border-radius:5px" cellpadding=15px><br />
<tr><br />
<th style="font-family:verdana; border-bottom: 1px solid #000000">''' Personal Information'''</th><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> Incoming Junior | Computer Science Major at Marquette</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> Working with [[User:Brylow|Dr. Dennis Brylow]] on the concept of Embedded Systems ([http://reu.mscs.mu.edu/index.php/Upgrading_Embedded_Xinu_for_the_Multi-Core_Raspberry_Pi_3 Upgrading Embedded Xinu for the Multi-Core Raspberry Pi 3])</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> [http://www.mscs.mu.edu/~upsilon/ Upsilon Pi Epsilon] member</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> [http://acm.mscs.mu.edu/wiki/Main_Page ACM] At-Large Member</td><br />
</tr><br />
<br />
<tr><br />
<td> President of [https://marquette.collegiatelink.net/organization/bestbuddies Best Buddies Marquette Chapter]</td><br />
</tr><br />
<br />
</table><br />
</table><br />
<br />
==Logs==<br />
All specific progress concerning code can be viewed on our GitHub (multiple branches used): https://github.com/tomlazar/xinu/tree/feature/multicore<br />
<table style="border: 70px solid #3bc6b8; border-collapse: collapse; font-family:tahoma" bgcolor="#fffced" border=1 cellpadding=2px><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 1: May 30-June 2'''</th></tr><br />
<tr><td> Began attempts to boot the full version of Embedded Xinu kernel with Raspberry Pi 3</td></tr><br />
<tr><td> Researched a Linaro Cross-Compiler to use for its Cortex A-53 ARM processor with ARMv8 architecture</td></tr><br />
<tr><td> Drew diagrams of the boot sequence and compilation for better understanding of the Pi 3's mechanisms</td></tr><br />
<tr><td> Traced through the dynamics of written Assembly code in the full research version of Xinu</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 2: June 5-9'''</th></tr><br />
<tr><td> Tested the LED program in updated Assembly code. Began testing the Serial Port Transceiver driver for the Pi 3</td></tr><br />
<tr><td> Read about Raspberry Pi bare metal programming via online sources</td></tr><br />
<tr><td> Read about how the Raspberry Pi 3 controls the frequency of its UART pins</td></tr><br />
<tr><td> Read ARM processor documentation about configuring UART clock frequency</td></tr><br />
<tr><td> Used the oscilloscope in attempt to obtain the clock frequency of the UART pin</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 3: June 12-16'''</th></tr><br />
<tr><td> Read an online textbook about the ARM processor of the Pi 3. </td></tr><br />
<tr><td> Successfully controlled the PL011 UART with a 48MHz frequency. Began porting full version of Xinu.</td></tr><br />
<tr><td> Read ARM64 documentation on registers to use with process interrupt handling.</td></tr><br />
<tr><td> Began working on the context switch for the 64-bit architecture.</td></tr><br />
<tr><td> Finishing work on the files necessary for context switching and rescheduling.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 4: June 19-23'''</th></tr><br />
<tr><td> Continue working on the boot functions of our implementation. Finished the Research Conduct course.</td></tr><br />
<tr><td> Read about register manipulation in the ARM guide. Continue working on process creation.</td></tr><br />
<tr><td> Begin researching physical memory space in the Pi 3.</td></tr><br />
<tr><td> Read guides to porting from ARM32 to ARM64. Digging deep for a solution to a memory allocation problem.</td></tr><br />
<tr><td> Read about ATAGS and what steps need to be taken to ensure the proper accessible RAM amount.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 5: June 26-30'''</th></tr><br />
<tr><td> Narrowed down the memory issue to an Aarch64-specific register-load requirement. Working on the fix.</td></tr><br />
<tr><td> Fixed memory issue - now allocating nearly all available memory.</td></tr><br />
<tr><td> Presentation by Dr. Kim Factor on tips to create a good research poster.</td></tr><br />
<tr><td> Began formulating research poster. Working on process queue structure.</td></tr><br />
<tr><td> Continue outlining research paper for submission to EWiLi Embedded Systems conference.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 6: July 3-7'''</th></tr><br />
<tr><td> Major change of working state: switch from 64-bit to 32-bit for compatibility and teachability reasons.</td></tr><br />
<tr><td> Migrating all code from non-working 64-bit to working 32-bit.</td></tr><br />
<tr><td> Processes create and context switch among one core. Push to resolve multiple cores.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 7: July 10-14'''</th></tr><br />
<tr><td> Expanding startup code to include change in privilege level.</td></tr><br />
<tr><td> Finished outlining poster. Tested ethernet driver and multiple core threading throughout the week.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 8: July 17-21'''</th></tr><br />
<tr><td> Studied simple Linux-style multi-core scheduling algorithms using mutual exclusion.</td></tr><br />
<tr><td> Created a method of scheduling across multiple cores with Xinu.</td></tr><br />
<tr><td> Tested multicore synchronization with atomic instructions.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 9: July 24-28'''</th></tr><br />
<tr><td> Studied technical documentation on how Raspberry Pi CPU mailboxes have worked in the past.</td></tr><br />
<tr><td> Test core mailboxes and work out kinks corresponding to core setup.</td></tr><br />
<tr><td> Finished final version of research poster: Utilizing Multi-core threading on Embedded Xinu.</td></tr><br />
<tr><td> Finished research paper and submitted it to EWiLi conference.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 10: July 3-7'''</th></tr><br />
<tr><td> Expanded material of final presentation.</td></tr><br />
<tr><td> Presented my research poster alongside colleagues. Viewed and discussed posters outside my discipline.</td></tr><br />
<tr><td> Watched my fellow researchers' presentations and continued making notes of guidelines.</td></tr><br />
<tr><td> Gave my final formal research presentation on the final day of the REU.</td></tr><br />
</table></div>Pmcg521https://reu.cs.mu.edu/index.php/User:Pmcg521User:Pmcg5212017-08-07T07:39:27Z<p>Pmcg521: </p>
<hr />
<div><center><br />
==Patrick J. McGee==<br />
<table style= "border: 40px solid #3bc6b8; background: #ED702D;-webkit-border-radius:6px" cellpadding=2px><br />
<tr><br />
<td>[[File:Patrick_pro_pic_png.png]]</td><br />
<br />
<td><br />
<br />
<table style= "border: 1px solid black; font-family:tahoma; background: #fffced;-webkit-border-radius:5px" cellpadding=15px><br />
<tr><br />
<th style="font-family:verdana; border-bottom: 1px solid #000000">''' Personal Information'''</th><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> Incoming Junior | Computer Science Major at Marquette</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> Working with [[User:Brylow|Dr. Dennis Brylow]] on the concept of Embedded Systems ([http://reu.mscs.mu.edu/index.php/Upgrading_Embedded_Xinu_for_the_Multi-Core_Raspberry_Pi_3 Upgrading Embedded Xinu for the Multi-Core Raspberry Pi 3])</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> [http://www.mscs.mu.edu/~upsilon/ Upsilon Pi Epsilon] member</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> [http://acm.mscs.mu.edu/wiki/Main_Page ACM] At-Large Member</td><br />
</tr><br />
<br />
<tr><br />
<td> President of [https://marquette.collegiatelink.net/organization/bestbuddies Best Buddies Marquette Chapter]</td><br />
</tr><br />
<br />
</table><br />
</table><br />
<br />
==Logs==<br />
All specific progress concerning code can be viewed on our GitHub (multiple branches used): https://github.com/tomlazar/xinu/tree/feature/multicore<br />
<table style="border: 40px solid #3bc6b8; border-collapse: collapse; font-family:tahoma" bgcolor="#fffced" border=1 cellpadding=2px><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 1: May 30-June 2'''</th></tr><br />
<tr><td> Began attempts to boot the full version of Embedded Xinu kernel with Raspberry Pi 3</td></tr><br />
<tr><td> Researched a Linaro Cross-Compiler to use for its Cortex A-53 ARM processor with ARMv8 architecture</td></tr><br />
<tr><td> Drew diagrams of the boot sequence and compilation for better understanding of the Pi 3's mechanisms</td></tr><br />
<tr><td> Traced through the dynamics of written Assembly code in the full research version of Xinu</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 2: June 5-9'''</th></tr><br />
<tr><td> Tested the LED program in updated Assembly code. Began testing the Serial Port Transceiver driver for the Pi 3</td></tr><br />
<tr><td> Read about Raspberry Pi bare metal programming via online sources</td></tr><br />
<tr><td> Read about how the Raspberry Pi 3 controls the frequency of its UART pins</td></tr><br />
<tr><td> Read ARM processor documentation about configuring UART clock frequency</td></tr><br />
<tr><td> Used the oscilloscope in attempt to obtain the clock frequency of the UART pin</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 3: June 12-16'''</th></tr><br />
<tr><td> Read an online textbook about the ARM processor of the Pi 3. </td></tr><br />
<tr><td> Successfully controlled the PL011 UART with a 48MHz frequency. Began porting full version of Xinu.</td></tr><br />
<tr><td> Read ARM64 documentation on registers to use with process interrupt handling.</td></tr><br />
<tr><td> Began working on the context switch for the 64-bit architecture.</td></tr><br />
<tr><td> Finishing work on the files necessary for context switching and rescheduling.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 4: June 19-23'''</th></tr><br />
<tr><td> Continue working on the boot functions of our implementation. Finished the Research Conduct course.</td></tr><br />
<tr><td> Read about register manipulation in the ARM guide. Continue working on process creation.</td></tr><br />
<tr><td> Begin researching physical memory space in the Pi 3.</td></tr><br />
<tr><td> Read guides to porting from ARM32 to ARM64. Digging deep for a solution to a memory allocation problem.</td></tr><br />
<tr><td> Read about ATAGS and what steps need to be taken to ensure the proper accessible RAM amount.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 5: June 26-30'''</th></tr><br />
<tr><td> Narrowed down the memory issue to an Aarch64-specific register-load requirement. Working on the fix.</td></tr><br />
<tr><td> Fixed memory issue - now allocating nearly all available memory.</td></tr><br />
<tr><td> Presentation by Dr. Kim Factor on tips to create a good research poster.</td></tr><br />
<tr><td> Began formulating research poster. Working on process queue structure.</td></tr><br />
<tr><td> Continue outlining research paper for submission to EWiLi Embedded Systems conference.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 6: July 3-7'''</th></tr><br />
<tr><td> Major change of working state: switch from 64-bit to 32-bit for compatibility and teachability reasons.</td></tr><br />
<tr><td> Migrating all code from non-working 64-bit to working 32-bit.</td></tr><br />
<tr><td> Processes create and context switch among one core. Push to resolve multiple cores.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 7: July 10-14'''</th></tr><br />
<tr><td> Expanding startup code to include change in privilege level.</td></tr><br />
<tr><td> Finished outlining poster. Tested ethernet driver and multiple core threading throughout the week.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 8: July 17-21'''</th></tr><br />
<tr><td> Studied simple Linux-style multi-core scheduling algorithms using mutual exclusion.</td></tr><br />
<tr><td> Created a method of scheduling across multiple cores with Xinu.</td></tr><br />
<tr><td> Tested multicore synchronization with atomic instructions.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 9: July 24-28'''</th></tr><br />
<tr><td> Studied technical documentation on how Raspberry Pi CPU mailboxes have worked in the past.</td></tr><br />
<tr><td> Test core mailboxes and work out kinks corresponding to core setup.</td></tr><br />
<tr><td> Finished final version of research poster: Utilizing Multi-core threading on Embedded Xinu.</td></tr><br />
<tr><td> Finished research paper and submitted it to EWiLi conference.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 10: July 3-7'''</th></tr><br />
<tr><td> Expanded material of final presentation.</td></tr><br />
<tr><td> Presented my research poster alongside colleagues. Viewed and discussed posters outside my discipline.</td></tr><br />
<tr><td> Watched my fellow researchers' presentations and continued making notes of guidelines.</td></tr><br />
<tr><td> Gave my final formal research presentation on the final day of the REU.</td></tr><br />
</table></div>Pmcg521https://reu.cs.mu.edu/index.php/User:Pmcg521User:Pmcg5212017-08-07T07:38:26Z<p>Pmcg521: </p>
<hr />
<div><center><br />
==Patrick J. McGee==<br />
<table style= "border: 40px solid #3bc6b8; background: #ED702D;-webkit-border-radius:6px" cellpadding=2px><br />
<tr><br />
<td>[[File:Patrick_pro_pic_png.png]]</td><br />
<br />
<td><br />
<br />
<table style= "border: 1px solid black; font-family:tahoma; background: #fffced;-webkit-border-radius:5px" cellpadding=15px><br />
<tr><br />
<th style="font-family:verdana; border-bottom: 1px solid #000000">''' Personal Information'''</th><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> Incoming Junior | Computer Science Major at Marquette</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> Working with [[User:Brylow|Dr. Dennis Brylow]] on the concept of Embedded Systems ([http://reu.mscs.mu.edu/index.php/Upgrading_Embedded_Xinu_for_the_Multi-Core_Raspberry_Pi_3 Upgrading Embedded Xinu for the Multi-Core Raspberry Pi 3])</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> [http://www.mscs.mu.edu/~upsilon/ Upsilon Pi Epsilon] member</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> [http://acm.mscs.mu.edu/wiki/Main_Page ACM] At-Large Member</td><br />
</tr><br />
<br />
<tr><br />
<td> President of [https://marquette.collegiatelink.net/organization/bestbuddies Best Buddies Marquette Chapter]</td><br />
</tr><br />
<br />
</table><br />
</table><br />
<br />
==Logs==<br />
All specific progress concerning code can be viewed on our GitHub (multiple branches used): https://github.com/tomlazar/xinu/tree/feature/multicore<br />
<table style="border-collapse: collapse; font-family:tahoma" bgcolor="#fffced" border=1 border:40px solid; cellpadding=2px><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 1: May 30-June 2'''</th></tr><br />
<tr><td> Began attempts to boot the full version of Embedded Xinu kernel with Raspberry Pi 3</td></tr><br />
<tr><td> Researched a Linaro Cross-Compiler to use for its Cortex A-53 ARM processor with ARMv8 architecture</td></tr><br />
<tr><td> Drew diagrams of the boot sequence and compilation for better understanding of the Pi 3's mechanisms</td></tr><br />
<tr><td> Traced through the dynamics of written Assembly code in the full research version of Xinu</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 2: June 5-9'''</th></tr><br />
<tr><td> Tested the LED program in updated Assembly code. Began testing the Serial Port Transceiver driver for the Pi 3</td></tr><br />
<tr><td> Read about Raspberry Pi bare metal programming via online sources</td></tr><br />
<tr><td> Read about how the Raspberry Pi 3 controls the frequency of its UART pins</td></tr><br />
<tr><td> Read ARM processor documentation about configuring UART clock frequency</td></tr><br />
<tr><td> Used the oscilloscope in attempt to obtain the clock frequency of the UART pin</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 3: June 12-16'''</th></tr><br />
<tr><td> Read an online textbook about the ARM processor of the Pi 3. </td></tr><br />
<tr><td> Successfully controlled the PL011 UART with a 48MHz frequency. Began porting full version of Xinu.</td></tr><br />
<tr><td> Read ARM64 documentation on registers to use with process interrupt handling.</td></tr><br />
<tr><td> Began working on the context switch for the 64-bit architecture.</td></tr><br />
<tr><td> Finishing work on the files necessary for context switching and rescheduling.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 4: June 19-23'''</th></tr><br />
<tr><td> Continue working on the boot functions of our implementation. Finished the Research Conduct course.</td></tr><br />
<tr><td> Read about register manipulation in the ARM guide. Continue working on process creation.</td></tr><br />
<tr><td> Begin researching physical memory space in the Pi 3.</td></tr><br />
<tr><td> Read guides to porting from ARM32 to ARM64. Digging deep for a solution to a memory allocation problem.</td></tr><br />
<tr><td> Read about ATAGS and what steps need to be taken to ensure the proper accessible RAM amount.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 5: June 26-30'''</th></tr><br />
<tr><td> Narrowed down the memory issue to an Aarch64-specific register-load requirement. Working on the fix.</td></tr><br />
<tr><td> Fixed memory issue - now allocating nearly all available memory.</td></tr><br />
<tr><td> Presentation by Dr. Kim Factor on tips to create a good research poster.</td></tr><br />
<tr><td> Began formulating research poster. Working on process queue structure.</td></tr><br />
<tr><td> Continue outlining research paper for submission to EWiLi Embedded Systems conference.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 6: July 3-7'''</th></tr><br />
<tr><td> Major change of working state: switch from 64-bit to 32-bit for compatibility and teachability reasons.</td></tr><br />
<tr><td> Migrating all code from non-working 64-bit to working 32-bit.</td></tr><br />
<tr><td> Processes create and context switch among one core. Push to resolve multiple cores.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 7: July 10-14'''</th></tr><br />
<tr><td> Expanding startup code to include change in privilege level.</td></tr><br />
<tr><td> Finished outlining poster. Tested ethernet driver and multiple core threading throughout the week.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 8: July 17-21'''</th></tr><br />
<tr><td> Studied simple Linux-style multi-core scheduling algorithms using mutual exclusion.</td></tr><br />
<tr><td> Created a method of scheduling across multiple cores with Xinu.</td></tr><br />
<tr><td> Tested multicore synchronization with atomic instructions.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 9: July 24-28'''</th></tr><br />
<tr><td> Studied technical documentation on how Raspberry Pi CPU mailboxes have worked in the past.</td></tr><br />
<tr><td> Test core mailboxes and work out kinks corresponding to core setup.</td></tr><br />
<tr><td> Finished final version of research poster: Utilizing Multi-core threading on Embedded Xinu.</td></tr><br />
<tr><td> Finished research paper and submitted it to EWiLi conference.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 10: July 3-7'''</th></tr><br />
<tr><td> Expanded material of final presentation.</td></tr><br />
<tr><td> Presented my research poster alongside colleagues. Viewed and discussed posters outside my discipline.</td></tr><br />
<tr><td> Watched my fellow researchers' presentations and continued making notes of guidelines.</td></tr><br />
<tr><td> Gave my final formal research presentation on the final day of the REU.</td></tr><br />
</table></div>Pmcg521https://reu.cs.mu.edu/index.php/User:Pmcg521User:Pmcg5212017-08-07T07:38:12Z<p>Pmcg521: </p>
<hr />
<div><center><br />
==Patrick J. McGee==<br />
<table style= "border: 40px solid #3bc6b8; background: #ED702D;-webkit-border-radius:6px" cellpadding=2px><br />
<tr><br />
<td>[[File:Patrick_pro_pic_png.png]]</td><br />
<br />
<td><br />
<br />
<table style= "border: 1px solid black; font-family:tahoma; background: #fffced;-webkit-border-radius:5px" cellpadding=15px><br />
<tr><br />
<th style="font-family:verdana; border-bottom: 1px solid #000000">''' Personal Information'''</th><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> Incoming Junior | Computer Science Major at Marquette</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> Working with [[User:Brylow|Dr. Dennis Brylow]] on the concept of Embedded Systems ([http://reu.mscs.mu.edu/index.php/Upgrading_Embedded_Xinu_for_the_Multi-Core_Raspberry_Pi_3 Upgrading Embedded Xinu for the Multi-Core Raspberry Pi 3])</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> [http://www.mscs.mu.edu/~upsilon/ Upsilon Pi Epsilon] member</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> [http://acm.mscs.mu.edu/wiki/Main_Page ACM] At-Large Member</td><br />
</tr><br />
<br />
<tr><br />
<td> President of [https://marquette.collegiatelink.net/organization/bestbuddies Best Buddies Marquette Chapter]</td><br />
</tr><br />
<br />
</table><br />
</table><br />
<br />
==Logs==<br />
All specific progress concerning code can be viewed on our GitHub (multiple branches used): https://github.com/tomlazar/xinu/tree/feature/multicore<br />
<table style="border-collapse: collapse; font-family:tahoma" bgcolor="#fffced" border=1 border:40px solid cellpadding=2px><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 1: May 30-June 2'''</th></tr><br />
<tr><td> Began attempts to boot the full version of Embedded Xinu kernel with Raspberry Pi 3</td></tr><br />
<tr><td> Researched a Linaro Cross-Compiler to use for its Cortex A-53 ARM processor with ARMv8 architecture</td></tr><br />
<tr><td> Drew diagrams of the boot sequence and compilation for better understanding of the Pi 3's mechanisms</td></tr><br />
<tr><td> Traced through the dynamics of written Assembly code in the full research version of Xinu</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 2: June 5-9'''</th></tr><br />
<tr><td> Tested the LED program in updated Assembly code. Began testing the Serial Port Transceiver driver for the Pi 3</td></tr><br />
<tr><td> Read about Raspberry Pi bare metal programming via online sources</td></tr><br />
<tr><td> Read about how the Raspberry Pi 3 controls the frequency of its UART pins</td></tr><br />
<tr><td> Read ARM processor documentation about configuring UART clock frequency</td></tr><br />
<tr><td> Used the oscilloscope in attempt to obtain the clock frequency of the UART pin</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 3: June 12-16'''</th></tr><br />
<tr><td> Read an online textbook about the ARM processor of the Pi 3. </td></tr><br />
<tr><td> Successfully controlled the PL011 UART with a 48MHz frequency. Began porting full version of Xinu.</td></tr><br />
<tr><td> Read ARM64 documentation on registers to use with process interrupt handling.</td></tr><br />
<tr><td> Began working on the context switch for the 64-bit architecture.</td></tr><br />
<tr><td> Finishing work on the files necessary for context switching and rescheduling.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 4: June 19-23'''</th></tr><br />
<tr><td> Continue working on the boot functions of our implementation. Finished the Research Conduct course.</td></tr><br />
<tr><td> Read about register manipulation in the ARM guide. Continue working on process creation.</td></tr><br />
<tr><td> Begin researching physical memory space in the Pi 3.</td></tr><br />
<tr><td> Read guides to porting from ARM32 to ARM64. Digging deep for a solution to a memory allocation problem.</td></tr><br />
<tr><td> Read about ATAGS and what steps need to be taken to ensure the proper accessible RAM amount.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 5: June 26-30'''</th></tr><br />
<tr><td> Narrowed down the memory issue to an Aarch64-specific register-load requirement. Working on the fix.</td></tr><br />
<tr><td> Fixed memory issue - now allocating nearly all available memory.</td></tr><br />
<tr><td> Presentation by Dr. Kim Factor on tips to create a good research poster.</td></tr><br />
<tr><td> Began formulating research poster. Working on process queue structure.</td></tr><br />
<tr><td> Continue outlining research paper for submission to EWiLi Embedded Systems conference.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 6: July 3-7'''</th></tr><br />
<tr><td> Major change of working state: switch from 64-bit to 32-bit for compatibility and teachability reasons.</td></tr><br />
<tr><td> Migrating all code from non-working 64-bit to working 32-bit.</td></tr><br />
<tr><td> Processes create and context switch among one core. Push to resolve multiple cores.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 7: July 10-14'''</th></tr><br />
<tr><td> Expanding startup code to include change in privilege level.</td></tr><br />
<tr><td> Finished outlining poster. Tested ethernet driver and multiple core threading throughout the week.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 8: July 17-21'''</th></tr><br />
<tr><td> Studied simple Linux-style multi-core scheduling algorithms using mutual exclusion.</td></tr><br />
<tr><td> Created a method of scheduling across multiple cores with Xinu.</td></tr><br />
<tr><td> Tested multicore synchronization with atomic instructions.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 9: July 24-28'''</th></tr><br />
<tr><td> Studied technical documentation on how Raspberry Pi CPU mailboxes have worked in the past.</td></tr><br />
<tr><td> Test core mailboxes and work out kinks corresponding to core setup.</td></tr><br />
<tr><td> Finished final version of research poster: Utilizing Multi-core threading on Embedded Xinu.</td></tr><br />
<tr><td> Finished research paper and submitted it to EWiLi conference.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 10: July 3-7'''</th></tr><br />
<tr><td> Expanded material of final presentation.</td></tr><br />
<tr><td> Presented my research poster alongside colleagues. Viewed and discussed posters outside my discipline.</td></tr><br />
<tr><td> Watched my fellow researchers' presentations and continued making notes of guidelines.</td></tr><br />
<tr><td> Gave my final formal research presentation on the final day of the REU.</td></tr><br />
</table></div>Pmcg521https://reu.cs.mu.edu/index.php/User:Pmcg521User:Pmcg5212017-08-07T07:37:17Z<p>Pmcg521: /* Logs */</p>
<hr />
<div><center><br />
==Patrick J. McGee==<br />
<table style= "border: 40px solid #3bc6b8; background: #ED702D;-webkit-border-radius:6px" cellpadding=2px><br />
<tr><br />
<td>[[File:Patrick_pro_pic_png.png]]</td><br />
<br />
<td><br />
<br />
<table style= "border: 1px solid black; font-family:tahoma; background: #fffced;-webkit-border-radius:5px" cellpadding=15px><br />
<tr><br />
<th style="font-family:verdana; border-bottom: 1px solid #000000">''' Personal Information'''</th><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> Incoming Junior | Computer Science Major at Marquette</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> Working with [[User:Brylow|Dr. Dennis Brylow]] on the concept of Embedded Systems ([http://reu.mscs.mu.edu/index.php/Upgrading_Embedded_Xinu_for_the_Multi-Core_Raspberry_Pi_3 Upgrading Embedded Xinu for the Multi-Core Raspberry Pi 3])</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> [http://www.mscs.mu.edu/~upsilon/ Upsilon Pi Epsilon] member</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> [http://acm.mscs.mu.edu/wiki/Main_Page ACM] At-Large Member</td><br />
</tr><br />
<br />
<tr><br />
<td> President of [https://marquette.collegiatelink.net/organization/bestbuddies Best Buddies Marquette Chapter]</td><br />
</tr><br />
<br />
</table><br />
</table><br />
<br />
==Logs==<br />
All specific progress concerning code can be viewed on our GitHub (multiple branches used): https://github.com/tomlazar/xinu/tree/feature/multicore<br />
<table style="border-collapse: collapse; font-family:tahoma" bgcolor="#fffced" border=1 cellpadding=2px><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 1: May 30-June 2'''</th></tr><br />
<tr><td> Began attempts to boot the full version of Embedded Xinu kernel with Raspberry Pi 3</td></tr><br />
<tr><td> Researched a Linaro Cross-Compiler to use for its Cortex A-53 ARM processor with ARMv8 architecture</td></tr><br />
<tr><td> Drew diagrams of the boot sequence and compilation for better understanding of the Pi 3's mechanisms</td></tr><br />
<tr><td> Traced through the dynamics of written Assembly code in the full research version of Xinu</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 2: June 5-9'''</th></tr><br />
<tr><td> Tested the LED program in updated Assembly code. Began testing the Serial Port Transceiver driver for the Pi 3</td></tr><br />
<tr><td> Read about Raspberry Pi bare metal programming via online sources</td></tr><br />
<tr><td> Read about how the Raspberry Pi 3 controls the frequency of its UART pins</td></tr><br />
<tr><td> Read ARM processor documentation about configuring UART clock frequency</td></tr><br />
<tr><td> Used the oscilloscope in attempt to obtain the clock frequency of the UART pin</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 3: June 12-16'''</th></tr><br />
<tr><td> Read an online textbook about the ARM processor of the Pi 3. </td></tr><br />
<tr><td> Successfully controlled the PL011 UART with a 48MHz frequency. Began porting full version of Xinu.</td></tr><br />
<tr><td> Read ARM64 documentation on registers to use with process interrupt handling.</td></tr><br />
<tr><td> Began working on the context switch for the 64-bit architecture.</td></tr><br />
<tr><td> Finishing work on the files necessary for context switching and rescheduling.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 4: June 19-23'''</th></tr><br />
<tr><td> Continue working on the boot functions of our implementation. Finished the Research Conduct course.</td></tr><br />
<tr><td> Read about register manipulation in the ARM guide. Continue working on process creation.</td></tr><br />
<tr><td> Begin researching physical memory space in the Pi 3.</td></tr><br />
<tr><td> Read guides to porting from ARM32 to ARM64. Digging deep for a solution to a memory allocation problem.</td></tr><br />
<tr><td> Read about ATAGS and what steps need to be taken to ensure the proper accessible RAM amount.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 5: June 26-30'''</th></tr><br />
<tr><td> Narrowed down the memory issue to an Aarch64-specific register-load requirement. Working on the fix.</td></tr><br />
<tr><td> Fixed memory issue - now allocating nearly all available memory.</td></tr><br />
<tr><td> Presentation by Dr. Kim Factor on tips to create a good research poster.</td></tr><br />
<tr><td> Began formulating research poster. Working on process queue structure.</td></tr><br />
<tr><td> Continue outlining research paper for submission to EWiLi Embedded Systems conference.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 6: July 3-7'''</th></tr><br />
<tr><td> Major change of working state: switch from 64-bit to 32-bit for compatibility and teachability reasons.</td></tr><br />
<tr><td> Migrating all code from non-working 64-bit to working 32-bit.</td></tr><br />
<tr><td> Processes create and context switch among one core. Push to resolve multiple cores.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 7: July 10-14'''</th></tr><br />
<tr><td> Expanding startup code to include change in privilege level.</td></tr><br />
<tr><td> Finished outlining poster. Tested ethernet driver and multiple core threading throughout the week.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 8: July 17-21'''</th></tr><br />
<tr><td> Studied simple Linux-style multi-core scheduling algorithms using mutual exclusion.</td></tr><br />
<tr><td> Created a method of scheduling across multiple cores with Xinu.</td></tr><br />
<tr><td> Tested multicore synchronization with atomic instructions.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 9: July 24-28'''</th></tr><br />
<tr><td> Studied technical documentation on how Raspberry Pi CPU mailboxes have worked in the past.</td></tr><br />
<tr><td> Test core mailboxes and work out kinks corresponding to core setup.</td></tr><br />
<tr><td> Finished final version of research poster: Utilizing Multi-core threading on Embedded Xinu.</td></tr><br />
<tr><td> Finished research paper and submitted it to EWiLi conference.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 10: July 3-7'''</th></tr><br />
<tr><td> Expanded material of final presentation.</td></tr><br />
<tr><td> Presented my research poster alongside colleagues. Viewed and discussed posters outside my discipline.</td></tr><br />
<tr><td> Watched my fellow researchers' presentations and continued making notes of guidelines.</td></tr><br />
<tr><td> Gave my final formal research presentation on the final day of the REU.</td></tr><br />
</table></div>Pmcg521https://reu.cs.mu.edu/index.php/User:Pmcg521User:Pmcg5212017-08-07T07:37:03Z<p>Pmcg521: /* Logs */</p>
<hr />
<div><center><br />
==Patrick J. McGee==<br />
<table style= "border: 40px solid #3bc6b8; background: #ED702D;-webkit-border-radius:6px" cellpadding=2px><br />
<tr><br />
<td>[[File:Patrick_pro_pic_png.png]]</td><br />
<br />
<td><br />
<br />
<table style= "border: 1px solid black; font-family:tahoma; background: #fffced;-webkit-border-radius:5px" cellpadding=15px><br />
<tr><br />
<th style="font-family:verdana; border-bottom: 1px solid #000000">''' Personal Information'''</th><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> Incoming Junior | Computer Science Major at Marquette</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> Working with [[User:Brylow|Dr. Dennis Brylow]] on the concept of Embedded Systems ([http://reu.mscs.mu.edu/index.php/Upgrading_Embedded_Xinu_for_the_Multi-Core_Raspberry_Pi_3 Upgrading Embedded Xinu for the Multi-Core Raspberry Pi 3])</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> [http://www.mscs.mu.edu/~upsilon/ Upsilon Pi Epsilon] member</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> [http://acm.mscs.mu.edu/wiki/Main_Page ACM] At-Large Member</td><br />
</tr><br />
<br />
<tr><br />
<td> President of [https://marquette.collegiatelink.net/organization/bestbuddies Best Buddies Marquette Chapter]</td><br />
</tr><br />
<br />
</table><br />
</table><br />
<br />
==Logs==<br />
All specific progress concerning code can be viewed on our GitHub (multiple branches used): https://github.com/tomlazar/xinu/tree/feature/multicore<br />
<table style="border: 40px border-collapse: collapse; font-family:tahoma" bgcolor="#fffced" border=1 cellpadding=2px><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 1: May 30-June 2'''</th></tr><br />
<tr><td> Began attempts to boot the full version of Embedded Xinu kernel with Raspberry Pi 3</td></tr><br />
<tr><td> Researched a Linaro Cross-Compiler to use for its Cortex A-53 ARM processor with ARMv8 architecture</td></tr><br />
<tr><td> Drew diagrams of the boot sequence and compilation for better understanding of the Pi 3's mechanisms</td></tr><br />
<tr><td> Traced through the dynamics of written Assembly code in the full research version of Xinu</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 2: June 5-9'''</th></tr><br />
<tr><td> Tested the LED program in updated Assembly code. Began testing the Serial Port Transceiver driver for the Pi 3</td></tr><br />
<tr><td> Read about Raspberry Pi bare metal programming via online sources</td></tr><br />
<tr><td> Read about how the Raspberry Pi 3 controls the frequency of its UART pins</td></tr><br />
<tr><td> Read ARM processor documentation about configuring UART clock frequency</td></tr><br />
<tr><td> Used the oscilloscope in attempt to obtain the clock frequency of the UART pin</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 3: June 12-16'''</th></tr><br />
<tr><td> Read an online textbook about the ARM processor of the Pi 3. </td></tr><br />
<tr><td> Successfully controlled the PL011 UART with a 48MHz frequency. Began porting full version of Xinu.</td></tr><br />
<tr><td> Read ARM64 documentation on registers to use with process interrupt handling.</td></tr><br />
<tr><td> Began working on the context switch for the 64-bit architecture.</td></tr><br />
<tr><td> Finishing work on the files necessary for context switching and rescheduling.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 4: June 19-23'''</th></tr><br />
<tr><td> Continue working on the boot functions of our implementation. Finished the Research Conduct course.</td></tr><br />
<tr><td> Read about register manipulation in the ARM guide. Continue working on process creation.</td></tr><br />
<tr><td> Begin researching physical memory space in the Pi 3.</td></tr><br />
<tr><td> Read guides to porting from ARM32 to ARM64. Digging deep for a solution to a memory allocation problem.</td></tr><br />
<tr><td> Read about ATAGS and what steps need to be taken to ensure the proper accessible RAM amount.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 5: June 26-30'''</th></tr><br />
<tr><td> Narrowed down the memory issue to an Aarch64-specific register-load requirement. Working on the fix.</td></tr><br />
<tr><td> Fixed memory issue - now allocating nearly all available memory.</td></tr><br />
<tr><td> Presentation by Dr. Kim Factor on tips to create a good research poster.</td></tr><br />
<tr><td> Began formulating research poster. Working on process queue structure.</td></tr><br />
<tr><td> Continue outlining research paper for submission to EWiLi Embedded Systems conference.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 6: July 3-7'''</th></tr><br />
<tr><td> Major change of working state: switch from 64-bit to 32-bit for compatibility and teachability reasons.</td></tr><br />
<tr><td> Migrating all code from non-working 64-bit to working 32-bit.</td></tr><br />
<tr><td> Processes create and context switch among one core. Push to resolve multiple cores.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 7: July 10-14'''</th></tr><br />
<tr><td> Expanding startup code to include change in privilege level.</td></tr><br />
<tr><td> Finished outlining poster. Tested ethernet driver and multiple core threading throughout the week.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 8: July 17-21'''</th></tr><br />
<tr><td> Studied simple Linux-style multi-core scheduling algorithms using mutual exclusion.</td></tr><br />
<tr><td> Created a method of scheduling across multiple cores with Xinu.</td></tr><br />
<tr><td> Tested multicore synchronization with atomic instructions.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 9: July 24-28'''</th></tr><br />
<tr><td> Studied technical documentation on how Raspberry Pi CPU mailboxes have worked in the past.</td></tr><br />
<tr><td> Test core mailboxes and work out kinks corresponding to core setup.</td></tr><br />
<tr><td> Finished final version of research poster: Utilizing Multi-core threading on Embedded Xinu.</td></tr><br />
<tr><td> Finished research paper and submitted it to EWiLi conference.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 10: July 3-7'''</th></tr><br />
<tr><td> Expanded material of final presentation.</td></tr><br />
<tr><td> Presented my research poster alongside colleagues. Viewed and discussed posters outside my discipline.</td></tr><br />
<tr><td> Watched my fellow researchers' presentations and continued making notes of guidelines.</td></tr><br />
<tr><td> Gave my final formal research presentation on the final day of the REU.</td></tr><br />
</table></div>Pmcg521https://reu.cs.mu.edu/index.php/User:Pmcg521User:Pmcg5212017-08-07T07:36:43Z<p>Pmcg521: </p>
<hr />
<div><center><br />
==Patrick J. McGee==<br />
<table style= "border: 40px solid #3bc6b8; background: #ED702D;-webkit-border-radius:6px" cellpadding=2px><br />
<tr><br />
<td>[[File:Patrick_pro_pic_png.png]]</td><br />
<br />
<td><br />
<br />
<table style= "border: 1px solid black; font-family:tahoma; background: #fffced;-webkit-border-radius:5px" cellpadding=15px><br />
<tr><br />
<th style="font-family:verdana; border-bottom: 1px solid #000000">''' Personal Information'''</th><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> Incoming Junior | Computer Science Major at Marquette</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> Working with [[User:Brylow|Dr. Dennis Brylow]] on the concept of Embedded Systems ([http://reu.mscs.mu.edu/index.php/Upgrading_Embedded_Xinu_for_the_Multi-Core_Raspberry_Pi_3 Upgrading Embedded Xinu for the Multi-Core Raspberry Pi 3])</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> [http://www.mscs.mu.edu/~upsilon/ Upsilon Pi Epsilon] member</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> [http://acm.mscs.mu.edu/wiki/Main_Page ACM] At-Large Member</td><br />
</tr><br />
<br />
<tr><br />
<td> President of [https://marquette.collegiatelink.net/organization/bestbuddies Best Buddies Marquette Chapter]</td><br />
</tr><br />
<br />
</table><br />
</table><br />
<br />
==Logs==<br />
All specific progress concerning code can be viewed on our GitHub (multiple branches used): https://github.com/tomlazar/xinu/tree/feature/multicore<br />
<table style="border: 40px; border-collapse: collapse; font-family:tahoma" bgcolor="#fffced" border=1 cellpadding=2px><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 1: May 30-June 2'''</th></tr><br />
<tr><td> Began attempts to boot the full version of Embedded Xinu kernel with Raspberry Pi 3</td></tr><br />
<tr><td> Researched a Linaro Cross-Compiler to use for its Cortex A-53 ARM processor with ARMv8 architecture</td></tr><br />
<tr><td> Drew diagrams of the boot sequence and compilation for better understanding of the Pi 3's mechanisms</td></tr><br />
<tr><td> Traced through the dynamics of written Assembly code in the full research version of Xinu</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 2: June 5-9'''</th></tr><br />
<tr><td> Tested the LED program in updated Assembly code. Began testing the Serial Port Transceiver driver for the Pi 3</td></tr><br />
<tr><td> Read about Raspberry Pi bare metal programming via online sources</td></tr><br />
<tr><td> Read about how the Raspberry Pi 3 controls the frequency of its UART pins</td></tr><br />
<tr><td> Read ARM processor documentation about configuring UART clock frequency</td></tr><br />
<tr><td> Used the oscilloscope in attempt to obtain the clock frequency of the UART pin</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 3: June 12-16'''</th></tr><br />
<tr><td> Read an online textbook about the ARM processor of the Pi 3. </td></tr><br />
<tr><td> Successfully controlled the PL011 UART with a 48MHz frequency. Began porting full version of Xinu.</td></tr><br />
<tr><td> Read ARM64 documentation on registers to use with process interrupt handling.</td></tr><br />
<tr><td> Began working on the context switch for the 64-bit architecture.</td></tr><br />
<tr><td> Finishing work on the files necessary for context switching and rescheduling.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 4: June 19-23'''</th></tr><br />
<tr><td> Continue working on the boot functions of our implementation. Finished the Research Conduct course.</td></tr><br />
<tr><td> Read about register manipulation in the ARM guide. Continue working on process creation.</td></tr><br />
<tr><td> Begin researching physical memory space in the Pi 3.</td></tr><br />
<tr><td> Read guides to porting from ARM32 to ARM64. Digging deep for a solution to a memory allocation problem.</td></tr><br />
<tr><td> Read about ATAGS and what steps need to be taken to ensure the proper accessible RAM amount.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 5: June 26-30'''</th></tr><br />
<tr><td> Narrowed down the memory issue to an Aarch64-specific register-load requirement. Working on the fix.</td></tr><br />
<tr><td> Fixed memory issue - now allocating nearly all available memory.</td></tr><br />
<tr><td> Presentation by Dr. Kim Factor on tips to create a good research poster.</td></tr><br />
<tr><td> Began formulating research poster. Working on process queue structure.</td></tr><br />
<tr><td> Continue outlining research paper for submission to EWiLi Embedded Systems conference.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 6: July 3-7'''</th></tr><br />
<tr><td> Major change of working state: switch from 64-bit to 32-bit for compatibility and teachability reasons.</td></tr><br />
<tr><td> Migrating all code from non-working 64-bit to working 32-bit.</td></tr><br />
<tr><td> Processes create and context switch among one core. Push to resolve multiple cores.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 7: July 10-14'''</th></tr><br />
<tr><td> Expanding startup code to include change in privilege level.</td></tr><br />
<tr><td> Finished outlining poster. Tested ethernet driver and multiple core threading throughout the week.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 8: July 17-21'''</th></tr><br />
<tr><td> Studied simple Linux-style multi-core scheduling algorithms using mutual exclusion.</td></tr><br />
<tr><td> Created a method of scheduling across multiple cores with Xinu.</td></tr><br />
<tr><td> Tested multicore synchronization with atomic instructions.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 9: July 24-28'''</th></tr><br />
<tr><td> Studied technical documentation on how Raspberry Pi CPU mailboxes have worked in the past.</td></tr><br />
<tr><td> Test core mailboxes and work out kinks corresponding to core setup.</td></tr><br />
<tr><td> Finished final version of research poster: Utilizing Multi-core threading on Embedded Xinu.</td></tr><br />
<tr><td> Finished research paper and submitted it to EWiLi conference.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 10: July 3-7'''</th></tr><br />
<tr><td> Expanded material of final presentation.</td></tr><br />
<tr><td> Presented my research poster alongside colleagues. Viewed and discussed posters outside my discipline.</td></tr><br />
<tr><td> Watched my fellow researchers' presentations and continued making notes of guidelines.</td></tr><br />
<tr><td> Gave my final formal research presentation on the final day of the REU.</td></tr><br />
</table></div>Pmcg521https://reu.cs.mu.edu/index.php/User:Pmcg521User:Pmcg5212017-08-07T07:35:55Z<p>Pmcg521: </p>
<hr />
<div><center><br />
==Patrick J. McGee==<br />
<table style= "border: 40px solid #3bc6b8; background: #ED702D;-webkit-border-radius:6px" cellpadding=2px><br />
<tr><br />
<td>[[File:Patrick_pro_pic_png.png]]</td><br />
<br />
<td><br />
<br />
<table style= "border: 1px solid black; font-family:tahoma; background: #fffced;-webkit-border-radius:5px" cellpadding=15px><br />
<tr><br />
<th style="font-family:verdana; border-bottom: 1px solid #000000">''' Personal Information'''</th><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> Incoming Junior | Computer Science Major at Marquette</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> Working with [[User:Brylow|Dr. Dennis Brylow]] on the concept of Embedded Systems ([http://reu.mscs.mu.edu/index.php/Upgrading_Embedded_Xinu_for_the_Multi-Core_Raspberry_Pi_3 Upgrading Embedded Xinu for the Multi-Core Raspberry Pi 3])</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> [http://www.mscs.mu.edu/~upsilon/ Upsilon Pi Epsilon] member</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> [http://acm.mscs.mu.edu/wiki/Main_Page ACM] At-Large Member</td><br />
</tr><br />
<br />
<tr><br />
<td> President of [https://marquette.collegiatelink.net/organization/bestbuddies Best Buddies Marquette Chapter]</td><br />
</tr><br />
<br />
</table><br />
</table><br />
<br />
==Logs==<br />
All specific progress concerning code can be viewed on our GitHub (multiple branches used): https://github.com/tomlazar/xinu/tree/feature/multicore<br />
<table style="border-collapse: collapse; font-family:tahoma" bgcolor="#fffced" border=1 cellpadding=2px><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 1: May 30-June 2'''</th></tr><br />
<tr><td> Began attempts to boot the full version of Embedded Xinu kernel with Raspberry Pi 3</td></tr><br />
<tr><td> Researched a Linaro Cross-Compiler to use for its Cortex A-53 ARM processor with ARMv8 architecture</td></tr><br />
<tr><td> Drew diagrams of the boot sequence and compilation for better understanding of the Pi 3's mechanisms</td></tr><br />
<tr><td> Traced through the dynamics of written Assembly code in the full research version of Xinu</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 2: June 5-9'''</th></tr><br />
<tr><td> Tested the LED program in updated Assembly code. Began testing the Serial Port Transceiver driver for the Pi 3</td></tr><br />
<tr><td> Read about Raspberry Pi bare metal programming via online sources</td></tr><br />
<tr><td> Read about how the Raspberry Pi 3 controls the frequency of its UART pins</td></tr><br />
<tr><td> Read ARM processor documentation about configuring UART clock frequency</td></tr><br />
<tr><td> Used the oscilloscope in attempt to obtain the clock frequency of the UART pin</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 3: June 12-16'''</th></tr><br />
<tr><td> Read an online textbook about the ARM processor of the Pi 3. </td></tr><br />
<tr><td> Successfully controlled the PL011 UART with a 48MHz frequency. Began porting full version of Xinu.</td></tr><br />
<tr><td> Read ARM64 documentation on registers to use with process interrupt handling.</td></tr><br />
<tr><td> Began working on the context switch for the 64-bit architecture.</td></tr><br />
<tr><td> Finishing work on the files necessary for context switching and rescheduling.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 4: June 19-23'''</th></tr><br />
<tr><td> Continue working on the boot functions of our implementation. Finished the Research Conduct course.</td></tr><br />
<tr><td> Read about register manipulation in the ARM guide. Continue working on process creation.</td></tr><br />
<tr><td> Begin researching physical memory space in the Pi 3.</td></tr><br />
<tr><td> Read guides to porting from ARM32 to ARM64. Digging deep for a solution to a memory allocation problem.</td></tr><br />
<tr><td> Read about ATAGS and what steps need to be taken to ensure the proper accessible RAM amount.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 5: June 26-30'''</th></tr><br />
<tr><td> Narrowed down the memory issue to an Aarch64-specific register-load requirement. Working on the fix.</td></tr><br />
<tr><td> Fixed memory issue - now allocating nearly all available memory.</td></tr><br />
<tr><td> Presentation by Dr. Kim Factor on tips to create a good research poster.</td></tr><br />
<tr><td> Began formulating research poster. Working on process queue structure.</td></tr><br />
<tr><td> Continue outlining research paper for submission to EWiLi Embedded Systems conference.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 6: July 3-7'''</th></tr><br />
<tr><td> Major change of working state: switch from 64-bit to 32-bit for compatibility and teachability reasons.</td></tr><br />
<tr><td> Migrating all code from non-working 64-bit to working 32-bit.</td></tr><br />
<tr><td> Processes create and context switch among one core. Push to resolve multiple cores.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 7: July 10-14'''</th></tr><br />
<tr><td> Expanding startup code to include change in privilege level.</td></tr><br />
<tr><td> Finished outlining poster. Tested ethernet driver and multiple core threading throughout the week.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 8: July 17-21'''</th></tr><br />
<tr><td> Studied simple Linux-style multi-core scheduling algorithms using mutual exclusion.</td></tr><br />
<tr><td> Created a method of scheduling across multiple cores with Xinu.</td></tr><br />
<tr><td> Tested multicore synchronization with atomic instructions.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 9: July 24-28'''</th></tr><br />
<tr><td> Studied technical documentation on how Raspberry Pi CPU mailboxes have worked in the past.</td></tr><br />
<tr><td> Test core mailboxes and work out kinks corresponding to core setup.</td></tr><br />
<tr><td> Finished final version of research poster: Utilizing Multi-core threading on Embedded Xinu.</td></tr><br />
<tr><td> Finished research paper and submitted it to EWiLi conference.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 10: July 3-7'''</th></tr><br />
<tr><td> Expanded material of final presentation.</td></tr><br />
<tr><td> Presented my research poster alongside colleagues. Viewed and discussed posters outside my discipline.</td></tr><br />
<tr><td> Watched my fellow researchers' presentations and continued making notes of guidelines.</td></tr><br />
<tr><td> Gave my final formal research presentation on the final day of the REU.</td></tr><br />
</table></div>Pmcg521https://reu.cs.mu.edu/index.php/User:Pmcg521User:Pmcg5212017-08-07T07:35:43Z<p>Pmcg521: /* Patrick J. McGee */</p>
<hr />
<div><center><br />
==Patrick J. McGee==<br />
<table style= "border: 30px solid #3bc6b8; background: #ED702D;-webkit-border-radius:6px" cellpadding=2px><br />
<tr><br />
<td>[[File:Patrick_pro_pic_png.png]]</td><br />
<br />
<td><br />
<br />
<table style= "border: 1px solid black; font-family:tahoma; background: #fffced;-webkit-border-radius:5px" cellpadding=15px><br />
<tr><br />
<th style="font-family:verdana; border-bottom: 1px solid #000000">''' Personal Information'''</th><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> Incoming Junior | Computer Science Major at Marquette</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> Working with [[User:Brylow|Dr. Dennis Brylow]] on the concept of Embedded Systems ([http://reu.mscs.mu.edu/index.php/Upgrading_Embedded_Xinu_for_the_Multi-Core_Raspberry_Pi_3 Upgrading Embedded Xinu for the Multi-Core Raspberry Pi 3])</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> [http://www.mscs.mu.edu/~upsilon/ Upsilon Pi Epsilon] member</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> [http://acm.mscs.mu.edu/wiki/Main_Page ACM] At-Large Member</td><br />
</tr><br />
<br />
<tr><br />
<td> President of [https://marquette.collegiatelink.net/organization/bestbuddies Best Buddies Marquette Chapter]</td><br />
</tr><br />
<br />
</table><br />
</table><br />
<br />
==Logs==<br />
All specific progress concerning code can be viewed on our GitHub (multiple branches used): https://github.com/tomlazar/xinu/tree/feature/multicore<br />
<table style="border-collapse: collapse; font-family:tahoma" bgcolor="#fffced" border=1 cellpadding=2px><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 1: May 30-June 2'''</th></tr><br />
<tr><td> Began attempts to boot the full version of Embedded Xinu kernel with Raspberry Pi 3</td></tr><br />
<tr><td> Researched a Linaro Cross-Compiler to use for its Cortex A-53 ARM processor with ARMv8 architecture</td></tr><br />
<tr><td> Drew diagrams of the boot sequence and compilation for better understanding of the Pi 3's mechanisms</td></tr><br />
<tr><td> Traced through the dynamics of written Assembly code in the full research version of Xinu</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 2: June 5-9'''</th></tr><br />
<tr><td> Tested the LED program in updated Assembly code. Began testing the Serial Port Transceiver driver for the Pi 3</td></tr><br />
<tr><td> Read about Raspberry Pi bare metal programming via online sources</td></tr><br />
<tr><td> Read about how the Raspberry Pi 3 controls the frequency of its UART pins</td></tr><br />
<tr><td> Read ARM processor documentation about configuring UART clock frequency</td></tr><br />
<tr><td> Used the oscilloscope in attempt to obtain the clock frequency of the UART pin</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 3: June 12-16'''</th></tr><br />
<tr><td> Read an online textbook about the ARM processor of the Pi 3. </td></tr><br />
<tr><td> Successfully controlled the PL011 UART with a 48MHz frequency. Began porting full version of Xinu.</td></tr><br />
<tr><td> Read ARM64 documentation on registers to use with process interrupt handling.</td></tr><br />
<tr><td> Began working on the context switch for the 64-bit architecture.</td></tr><br />
<tr><td> Finishing work on the files necessary for context switching and rescheduling.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 4: June 19-23'''</th></tr><br />
<tr><td> Continue working on the boot functions of our implementation. Finished the Research Conduct course.</td></tr><br />
<tr><td> Read about register manipulation in the ARM guide. Continue working on process creation.</td></tr><br />
<tr><td> Begin researching physical memory space in the Pi 3.</td></tr><br />
<tr><td> Read guides to porting from ARM32 to ARM64. Digging deep for a solution to a memory allocation problem.</td></tr><br />
<tr><td> Read about ATAGS and what steps need to be taken to ensure the proper accessible RAM amount.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 5: June 26-30'''</th></tr><br />
<tr><td> Narrowed down the memory issue to an Aarch64-specific register-load requirement. Working on the fix.</td></tr><br />
<tr><td> Fixed memory issue - now allocating nearly all available memory.</td></tr><br />
<tr><td> Presentation by Dr. Kim Factor on tips to create a good research poster.</td></tr><br />
<tr><td> Began formulating research poster. Working on process queue structure.</td></tr><br />
<tr><td> Continue outlining research paper for submission to EWiLi Embedded Systems conference.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 6: July 3-7'''</th></tr><br />
<tr><td> Major change of working state: switch from 64-bit to 32-bit for compatibility and teachability reasons.</td></tr><br />
<tr><td> Migrating all code from non-working 64-bit to working 32-bit.</td></tr><br />
<tr><td> Processes create and context switch among one core. Push to resolve multiple cores.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 7: July 10-14'''</th></tr><br />
<tr><td> Expanding startup code to include change in privilege level.</td></tr><br />
<tr><td> Finished outlining poster. Tested ethernet driver and multiple core threading throughout the week.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 8: July 17-21'''</th></tr><br />
<tr><td> Studied simple Linux-style multi-core scheduling algorithms using mutual exclusion.</td></tr><br />
<tr><td> Created a method of scheduling across multiple cores with Xinu.</td></tr><br />
<tr><td> Tested multicore synchronization with atomic instructions.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 9: July 24-28'''</th></tr><br />
<tr><td> Studied technical documentation on how Raspberry Pi CPU mailboxes have worked in the past.</td></tr><br />
<tr><td> Test core mailboxes and work out kinks corresponding to core setup.</td></tr><br />
<tr><td> Finished final version of research poster: Utilizing Multi-core threading on Embedded Xinu.</td></tr><br />
<tr><td> Finished research paper and submitted it to EWiLi conference.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 10: July 3-7'''</th></tr><br />
<tr><td> Expanded material of final presentation.</td></tr><br />
<tr><td> Presented my research poster alongside colleagues. Viewed and discussed posters outside my discipline.</td></tr><br />
<tr><td> Watched my fellow researchers' presentations and continued making notes of guidelines.</td></tr><br />
<tr><td> Gave my final formal research presentation on the final day of the REU.</td></tr><br />
</table></div>Pmcg521https://reu.cs.mu.edu/index.php/User:Pmcg521User:Pmcg5212017-08-06T03:29:34Z<p>Pmcg521: </p>
<hr />
<div><center><br />
==Patrick J. McGee==<br />
<table style= "border: 3px solid #3bc6b8; background: #ED702D;-webkit-border-radius:6px" cellpadding=2px><br />
<tr><br />
<td>[[File:Patrick_pro_pic_png.png]]</td><br />
<br />
<td><br />
<br />
<table style= "border: 1px solid black; font-family:tahoma; background: #fffced;-webkit-border-radius:5px" cellpadding=15px><br />
<tr><br />
<th style="font-family:verdana; border-bottom: 1px solid #000000">''' Personal Information'''</th><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> Incoming Junior | Computer Science Major at Marquette</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> Working with [[User:Brylow|Dr. Dennis Brylow]] on the concept of Embedded Systems ([http://reu.mscs.mu.edu/index.php/Upgrading_Embedded_Xinu_for_the_Multi-Core_Raspberry_Pi_3 Upgrading Embedded Xinu for the Multi-Core Raspberry Pi 3])</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> [http://www.mscs.mu.edu/~upsilon/ Upsilon Pi Epsilon] member</td><br />
</tr><br />
<br />
<tr><br />
<td style="border-bottom: 1px solid #ddd"> [http://acm.mscs.mu.edu/wiki/Main_Page ACM] At-Large Member</td><br />
</tr><br />
<br />
<tr><br />
<td> President of [https://marquette.collegiatelink.net/organization/bestbuddies Best Buddies Marquette Chapter]</td><br />
</tr><br />
<br />
</table><br />
</table><br />
<br />
==Logs==<br />
All specific progress concerning code can be viewed on our GitHub (multiple branches used): https://github.com/tomlazar/xinu/tree/feature/multicore<br />
<table style="border-collapse: collapse; font-family:tahoma" bgcolor="#fffced" border=1 cellpadding=2px><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 1: May 30-June 2'''</th></tr><br />
<tr><td> Began attempts to boot the full version of Embedded Xinu kernel with Raspberry Pi 3</td></tr><br />
<tr><td> Researched a Linaro Cross-Compiler to use for its Cortex A-53 ARM processor with ARMv8 architecture</td></tr><br />
<tr><td> Drew diagrams of the boot sequence and compilation for better understanding of the Pi 3's mechanisms</td></tr><br />
<tr><td> Traced through the dynamics of written Assembly code in the full research version of Xinu</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 2: June 5-9'''</th></tr><br />
<tr><td> Tested the LED program in updated Assembly code. Began testing the Serial Port Transceiver driver for the Pi 3</td></tr><br />
<tr><td> Read about Raspberry Pi bare metal programming via online sources</td></tr><br />
<tr><td> Read about how the Raspberry Pi 3 controls the frequency of its UART pins</td></tr><br />
<tr><td> Read ARM processor documentation about configuring UART clock frequency</td></tr><br />
<tr><td> Used the oscilloscope in attempt to obtain the clock frequency of the UART pin</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 3: June 12-16'''</th></tr><br />
<tr><td> Read an online textbook about the ARM processor of the Pi 3. </td></tr><br />
<tr><td> Successfully controlled the PL011 UART with a 48MHz frequency. Began porting full version of Xinu.</td></tr><br />
<tr><td> Read ARM64 documentation on registers to use with process interrupt handling.</td></tr><br />
<tr><td> Began working on the context switch for the 64-bit architecture.</td></tr><br />
<tr><td> Finishing work on the files necessary for context switching and rescheduling.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 4: June 19-23'''</th></tr><br />
<tr><td> Continue working on the boot functions of our implementation. Finished the Research Conduct course.</td></tr><br />
<tr><td> Read about register manipulation in the ARM guide. Continue working on process creation.</td></tr><br />
<tr><td> Begin researching physical memory space in the Pi 3.</td></tr><br />
<tr><td> Read guides to porting from ARM32 to ARM64. Digging deep for a solution to a memory allocation problem.</td></tr><br />
<tr><td> Read about ATAGS and what steps need to be taken to ensure the proper accessible RAM amount.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 5: June 26-30'''</th></tr><br />
<tr><td> Narrowed down the memory issue to an Aarch64-specific register-load requirement. Working on the fix.</td></tr><br />
<tr><td> Fixed memory issue - now allocating nearly all available memory.</td></tr><br />
<tr><td> Presentation by Dr. Kim Factor on tips to create a good research poster.</td></tr><br />
<tr><td> Began formulating research poster. Working on process queue structure.</td></tr><br />
<tr><td> Continue outlining research paper for submission to EWiLi Embedded Systems conference.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 6: July 3-7'''</th></tr><br />
<tr><td> Major change of working state: switch from 64-bit to 32-bit for compatibility and teachability reasons.</td></tr><br />
<tr><td> Migrating all code from non-working 64-bit to working 32-bit.</td></tr><br />
<tr><td> Processes create and context switch among one core. Push to resolve multiple cores.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 7: July 10-14'''</th></tr><br />
<tr><td> Expanding startup code to include change in privilege level.</td></tr><br />
<tr><td> Finished outlining poster. Tested ethernet driver and multiple core threading throughout the week.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 8: July 17-21'''</th></tr><br />
<tr><td> Studied simple Linux-style multi-core scheduling algorithms using mutual exclusion.</td></tr><br />
<tr><td> Created a method of scheduling across multiple cores with Xinu.</td></tr><br />
<tr><td> Tested multicore synchronization with atomic instructions.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 9: July 24-28'''</th></tr><br />
<tr><td> Studied technical documentation on how Raspberry Pi CPU mailboxes have worked in the past.</td></tr><br />
<tr><td> Test core mailboxes and work out kinks corresponding to core setup.</td></tr><br />
<tr><td> Finished final version of research poster: Utilizing Multi-core threading on Embedded Xinu.</td></tr><br />
<tr><td> Finished research paper and submitted it to EWiLi conference.</td></tr><br />
<tr><th style="font-family:verdana; border-bottom: 2px solid #000000; border-top: 2px solid #000000">'''Week 10: July 3-7'''</th></tr><br />
<tr><td> Expanded material of final presentation.</td></tr><br />
<tr><td> Presented my research poster alongside colleagues. Viewed and discussed posters outside my discipline.</td></tr><br />
<tr><td> Watched my fellow researchers' presentations and continued making notes of guidelines.</td></tr><br />
<tr><td> Gave my final formal research presentation on the final day of the REU.</td></tr><br />
</table></div>Pmcg521