Difference between revisions of "User:Mbajzek"
From REU@MU
(→Week 09 (07/28/14 - )) |
m (1 revision) |
(No difference)
|
Latest revision as of 06:25, 12 June 2015
Contents
- 1 Personal Information
- 2 Summer 2014 - ECS Robotics Module Redesign
- 2.1 Week 00 (05/27/14 - 05/30/14)
- 2.2 Week 01 (06/02/14 - 06/06/14)
- 2.3 Week 02 (06/09/14 - 06/13/14)
- 2.4 Week 03 (06/16/14 - 06/20/14)
- 2.5 Week 04 (06/23/14 - 06/27/14)
- 2.6 Week 05 (06/30/14 - 07/04/14)
- 2.7 Week 06 (07/07/14 - 07/11/14)
- 2.8 Week 07 (07/14/14 - 07/18/14)
- 2.9 Week 08 (07/21/14 - 07/25/14)
- 2.10 Week 09 (07/28/14 - 08/01/14)
- 3 Summer 2011 - Concurrent Embedded Power Control
- 3.1 Week 00 (05/23/11 - 05/27/11)
- 3.2 Week 01 (05/30/11 - 6/03/11)
- 3.3 Week 02 (06/06/11 - 06/10/11)
- 3.4 Week 03 (06/13/11 - 06/17/11)
- 3.5 Week 04 (06/20/11 - 06/24/11)
- 3.6 Week 05 (06/27/11 - 07/01/11)
- 3.7 Week 06 (07/05/11 - 07/08/11)
- 3.8 Week 07 (07/11/11 - 07/15/11)
- 3.9 Week 08 (07/18/11 - 07/21/11)
- 3.10 Week 09 (07/25/11 - 07/29/11)
- 3.11 Week 10 (08/01/11 - 08/05/11)
Personal Information
My name is Matthew Bajzek and I am currently a senior at Marquette University pursuing degrees in Computer Engineering and Computer Science. I work with Dr. Dennis Brylow, primarily within his research for Xinu.
Summer 2014 - ECS Robotics Module Redesign
Week 00 (05/27/14 - 05/30/14)
Tuesday
- Underwent REU Orientation
- Began planning potential modules
Wednesday
- Made schedule and divided work
- Investigated Scratch and determined its potential as a platform
- Began searching for previous work to utilize when designing course structure
Thursday
- Installed Scratch and began comparing modding potential of versions 1.4 and 2.0
- Began looking into current state of XinuPi
Friday
- Did background research and began investigating a potential alternative to Xinu
- Looked into existing peripheral options, as compared to existing curriculum modules
Week 01 (06/02/14 - 06/06/14)
Monday
- Continued background research, installing OS to Raspberry Pis and investigating its features
- Considered peripheral options and began to draft tentative budget for summer prototypes
Tuesday
- Successfully installed and worked in PiScratch, though with some relatively serious display issues
Wednesday
- Began modifying Scratch 1.4 code (local installation) to get comfortable adding/modifying blocks
Thursday
- Successfully added custom blocks (behavior, appearance, name) to existing block categories, augmented UI
Friday
- Successfully added custom block category, including changes to blocks within category
Week 02 (06/09/14 - 06/13/14)
Monday
- Began reading through PiScratch Python script, considering options for modding PiScratch distribution
Tuesday
- Drafted presentation document for current course learning objectives
Wednesday
- Finalized presentation
- Continued Scratch 1.4 modding (bundling broadcasts)
Thursday
- First REU lunch/talk
- Presentation to Dr. Brylow
Week 03 (06/16/14 - 06/20/14)
Monday
- Considered switch from Scratch/Raspberry Pi to Ardublocks/Arduino
Tuesday
- Organized lab, determined current peripheral availability
- Ordered Arduino Leonardo boards for development
Wednesday
- Investigated relative merits of two platforms for curriculum
Thursday
- Ethical research training
- Configured development version of Maven, Ardublocks, Openblocks
Friday
- Began block development in Modded Ardublocks
Week 04 (06/23/14 - 06/27/14)
Monday
- Participated in Google hangout with Bob Juranitch to discuss project goals and possible module actities
- Narrowed down peripheral list
- Attended REU baseball game
Tuesday
- Attended Dr. Corliss' LaTeX presentation
- Continued Ardublock modifications
Wednesday
- Continued Ardublock modifications
- Read through ECS educational objective documentation
Thursday
- Curriculum discussions
- Ardublock modding
Friday
- Ardublock modding
Week 05 (06/30/14 - 07/04/14)
Out of lab for vacation (hours made up via overtime during other weeks).
Week 06 (07/07/14 - 07/11/14)
Monday
- Brought back up to speed on coding effort
- Began creating poster template
Tuesday
- First steps to "Play Note" block implemented, pending testing
- Started looking for breadboard alternatives for simpler teacher use
Wednesday
- Tested "Play Note", began work on removing pin input, adding full range of notes
Thursday
- Attended research poster presentation
- Added example code
Friday
- Looked into simplifying Theremin, adding to Play Note to add flexibility
Week 07 (07/14/14 - 07/18/14)
Monday
- Struggled with adding a new block (bizarre bug)
Tuesday
- Fixed Monday's bug, discussed project goals/curriculum details as group
Wednesday
- Expanded project blocks for music projects
Thursday
- Attended graduate school discussion
- Made project poster with group
- Finalized some curriculum plans
Week 08 (07/21/14 - 07/25/14)
Monday
- Cleaned up XML (removed blocks)
- Had design discussion
Tuesday
- Began shield design
- Looked into parts
- Looked into pin blocks
Wednesday
- Decided upon shield design
Thursday
- Developed final set of blocks for initial release
- Cleaned up and streamlined code design
Friday
- Poster presentations in Cudahy Hall
Week 09 (07/28/14 - 08/01/14)
Monday
- Added robust error handling to blocks
Tuesday
- Developed prototype shield and prepared demonstrations for presentation
Wednesday
- Finalized error handling
- Presented project to ECS representative and several teachers
Thursday
- Final REU presentations
- Completed final paper
Summer 2011 - Concurrent Embedded Power Control
Week 00 (05/23/11 - 05/27/11)
- Familiarized self with lab hardware and software, including the Linux operating system
- Began investigating source code and looking for possible sources of error
- Developed bash script to test specific cases within source code via looping of xinu-power calls with set delays
- Tested bash script with varied parameters on secondary board, discovering the minimum delay between calls for power cycling (0.015 seconds)
- Began converting bash script to adapted C program to implement future queue systems before implementation into full program set
- Began preliminary searches for queue mechanisms in C language
Week 01 (05/30/11 - 6/03/11)
Tuesday
- Met with mentors and coordinators to discuss program expectations
- Toured the campus with non-Marquette students
- Handled financial paperwork with Human Resources
- Attended lab orientation
- Took the program pre-survey
Wednesday
- Investigated rebooter's execute_command function and xinu-powerd.c in general
- Wrote rough skeleton of possible queue system for backed up commands to prepare for future work
- Searched for power alternatives to potentially replace Baytech RPC22
- Participated in first meeting to coordinate group activities
Thursday
- Continued investigating source code organization
- Attempted to refine queue function in order to insert incoming commands into a 2-dimensional array and then run them sequentially
- Successfully integrated queue function: though inelegant, it allows delay-less calls to the rebooter to execute in sequence as if a sufficient delay was user-provided, cutting out all instances of dropped rebooter calls in limited testing
Friday
- Condensed queue function and documented it with comments
- Added comment documentation throughout major sections of xinu-powerd.c
- Integrated system logging for the special case when a backend is told to turn on or off when already in the requested state
- Wrote a program to randomly request a specified number of events (turning a random backend either on or off) in order to test robustness of queue function
- Ran and recorded cycles of random testing with varying event quantities
Week 02 (06/06/11 - 06/10/11)
Monday
- Began optimization of existing queue function and movement towards more sophisticated version
- Reduced number of active arrays from three to one
- Added head/tail variables to eliminate need to constantly reset queue
- Added system log error message for queue buffer overflow
- Began searching code to try to implement boolean statements regarding status of backends in terminal output function
- Began searching code to try to implement mechanism in queue to wait for success message before continuing
- Wrote testing program to evaluate basic queue functionality and ran tests
Tuesday
- Continued work to make queue dynamic
- Ran additional tests to determine effects of changed parameters in xinu-powerd.c
Wednesday
- Edited rpc.c to verify successful writing to g_dev before returning a value
- Edited xinu-powerd.c queue function to wait for the previous command to affect its backend's state before proceeding
- Changes have created a queue mechanism that functions for cycles with 0.006 seconds delay or above
- Participated in second meeting to coordinate group activities
Thursday
- Disabled xinu-powerd.c's daemon attributes to allow print statements
- Used print statements to start debugging timing-based problems with looping of backend calls
- Streamlined queue function further
Friday
- Continued work on dynamic queue
- Inserted debug statements into code to determine origins of error
- Ran testing to debug both main programs with different parameters
- (Based on what testing there was time for) fixed glitch caused by endless attempts to read unwritten commands
- (Based on what testing there was time for) Fixed glitch caused by writing commands incompletely and attempting to run them
- Documented rpc.c's rpc_template method with comments
- Tested code in and out of daemon mode successfully
Week 03 (06/13/11 - 06/17/11)
Monday
- Ran testing with extreme numbers of commands in order to force queue failure
- Attempted to find a pattern in the failures
Tuesday
- Created rough diagrams of xinu-powerd.c, its queue and execute_command functions, and rpc.c
- Continued debugging queue failures
- Implemented bug fixes
- Fixed (based on limited testing) the persistent errors that occurred when rpc.c's rpc_template method would attempt to rewrite to g_dev before g_dev had finished outputting its error message
- Wrote a second do-while loop that separates rpc_template's reading of the first character in its buffer from the reading of the other characters, creating more flexible error handling
- Streamlined rpc.c to be more easily readable and have more logical variable names
Wednesday
- Continued testing using random cycles from 199 events to 1999 events, both in and out of daemon mode
- Program snags occasionally upon entering daemon mode
- When this error does not occur, the program is able to run a delayless cycle with a number of events 20 times larger than the number of slots in the queue without freezing or failing, and (at a minimum) the final state of each backend is accurately set
Thursday
- Determined source of error - a mistake in variable initialization
- Attended "Responsible Conduct of Research" seminar
- Addressed hypothetical situation when an invalid message passes into rpc.c in spite of previous error handling
- Changed rpc.c's delay checker to be clock-based rather than incremental
- Began fighting the series of bugs associated with the clock implementation
Friday
- Created an electronic copy of the state diagram for the power daemon
- Finalized implementation of the clock
- Addressed other minor bugs
Week 04 (06/20/11 - 06/24/11)
Monday
- Worked on electronic diagrams
- Daemon state diagram
- xinu-rebootd.c
- queue()
- execute_command()
- rpc.c
Tuesday
- Cleaned out code, removing sections that no longer serve a purpose
- Effects section of queue
- CMDBUFLEN overflow error
- Ran testing to verify changes to code
- Various successful 1-16-event cycle tests
- Three successful randomized 1999-event cycle tests
- Five successful tests with 5-10 repeating 32-event-cycles each
- Continued streamlining diagrams
Wednesday
- Downloaded and installed LaTeX on home machine
- Read and reviewed "Enhancing Embedded Processors with Specific Instruction Set Extensions for Network Application" in LaTeX template
- Assessed benefits of infinite-loop-breaking checks in case complete rebooter failure occurs during a response message
- Finalized state machine diagram for rebooter and daemon interactions
- Began formalizing system for documenting test cases based on parameters meant to induce desired failures in order to prove reliability of flow control
Thursday
- Transitioned from Fedora 14 to 15
- Discussed "Enhancing Embedded Processors with Specific Instruction Set Extensions for Network Application" with lab
- Created table for recording failure tests of the rebooter code's error handling
- Added several printf statements to code to assist future debugging of cryptic errors
Friday
- Worked to diagnose connection problems present since switch to Fedora 15
- Added printf statements to accompany syslog information for easier debugging out of daemon mode
Week 05 (06/27/11 - 07/01/11)
Monday
- Discovered work-around for barred IP error message (full solution still needs to be found)
- Tested error cases in state machine
- Worked on mid-program presentation
Tuesday
- Finished mid-program presentation slides
- Began streamlining code and adding comments in preparation for 7/05 code review
- Participated in Ethernet driver code review with lab group
Wednesday
- Finalized mid-program presentation and cleared it with Dr. Brylow
- Continued preparing code for code review
- Organized REU trip to Kopp's
Thursday
- Attended and spoke during REU mid-program presentations
- Read and reviewed "Real-Time Support of Flash Memory File System for Embedded Applications"
Friday
- Read through and cleaned up code
Week 06 (07/05/11 - 07/08/11)
Tuesday
- Attended "Making a Good Research Poster" meeting
- Ran code review for power daemon programs
- #define changes/additions
- Comment changes/additions
- Explicit queue removal
- Outlets.state request function
- Header file definitions
- Removal of strlen()
- Addressed code review concerns
- #define changes/additions
- Comment changes/additions
- Explicit queue removal
- Removal of strlen()
Wednesday
- Began search for research sources
- Read and reviewed "Analysis of the Use of Declarative Languages for Enhanced Embedded System Software Development"
- Began testing with router pool
Thursday
- Attended REU lunch and lecture regarding computational science outside of academia
- Continued testing with router pool
Friday
- Discussed "Analysis of the Use of Declarative Languages for Enhanced Embedded System Software Development"
- Continued testing with router pool
- Xest testing appears to be consistently successful for single runs
- All routers individually respond with power, farbot console fails
Week 07 (07/11/11 - 07/15/11)
Monday
- Continued testing with router pool
Tuesday
- Continued testing with router pool
- Developed potential fix for xinu-power r## errors
Wednesday
- Investigated a problem Dennis found with frelling's power-cycling capability and the consistency of backends powering down with daemon restarts
- Added error-catching loop to xinu-powerd.c's init_device() function
- Cut out xinu-power r##'s check for backend status
Thursday
- Continued testing with router pool
- Uncovered syslog off-by-three error with terminal response
Friday
- Solved syslog issue
- Success and error messages were overlapping and confusing the system
- Increased acceptance of lengthy execution times allows successful executions
Week 08 (07/18/11 - 07/21/11)
Monday
- Continued running tests to verify the code's effectiveness and test its limits
- Success in batchgrade program for up to ~15 active terminals
- Xest success in all tests run (~20)
- (Occasional) overnight error still a mystery
- e2100l problems might be a factor
Tuesday
- Began project poster
- Configured personal laptop software for paper
- Brainstormed xinu-power lst options
- All backends? Just those that are on?
- Names? Numbers? Both?
- Multiple options? (xinu-power l##)
Wednesday
- Began writing code for xinu-power lst
- Changed valid command parameters to allow new requests
- Tested out response from outlets.state
Thursday
- Worked on project poster
- Investigated Cert/Xest errors
- Power does not appear to be the source of the problems
- Semi-unrelated: standard throughput appears to be 8-9 on/off commands per second
Week 09 (07/25/11 - 07/29/11)
- Vacation
- Finished project poster
Week 10 (08/01/11 - 08/05/11)
Monday
- Reviewed poster to prepare for presentation
- Began work on formal presentation
- Performed more formal testing of throughput (old and new daemons) for project report and presentation
- Worked on integration of "xinu-power lst" and "xinu-power l##" calls
Tuesday
- Finished presentation slides
- Integrated quantitative data from testing
- Presented in REU poster session
- Worked on project paper
- Changed "xinu-power r##" calls to be smarter and not waste so much time
Wednesday
- Presented in REU formal presentations
- Worked on project paper
Thursday
- Attended REU formal presentations
- Worked on project paper
Friday
- Completed end-of-program surveys
- Finished and submitted final project paper