https://xinu.cs.mu.edu/api.php?action=feedcontributions&user=Brylow&feedformat=atomEmbedded Xinu - User contributions [en]2024-03-29T05:12:33ZUser contributionsMediaWiki 1.34.2https://xinu.cs.mu.edu/index.php?title=List_of_supported_platforms&diff=4329List of supported platforms2023-11-30T21:30:52Z<p>Brylow: /* Supported Platforms */</p>
<hr />
<div>== Summary ==<br />
This page lists the platforms currently supported by the Embedded Xinu operating system (or at least in development).<br />
<br />
== Supported Platforms ==<br />
{|border="1" cellpadding="5" cellspacing="0"<br />
|-<br />
!width="18%"|Platform<br />
!width="15%"|Status<br />
!Comments<br />
|-<br />
|RISC-V Nezha<br />
|Experimental<br />
|This is the first port of Embedded Xinu to a RISC-V platform; development began in summer 2022.<br />
|-<br />
|[[Raspberry Pi model 3B+]] [http://www.raspberrypi.org]<br />
|Experimental<br />
|This is the first multi-core port of Embedded Xinu, and has been in use on Marquette campus since 2017.<br />
|-<br />
|[[Raspberry Pi model 1A and 1B]] [http://www.raspberrypi.org]<br />
|Supported<br />
|This was the primary development platform for Embedded Xinu 2014-2018.<br />
|-<br />
|[[WRT54GL|Linksys WRT54GL]] [http://www.linksys.com/servlet/Satellite?c=L_Product_C2&childpagename=US%2FLayout&cid=1133202177241&pagename=Linksys%2FCommon%2FVisitorWrapper]<br />
|Supported - Legacy<br />
|This is was the primary development platform for Embedded Xinu 2007-2013.<br />
|-<br />
|[[WRT54G|Linksys WRT54G]] v8 [http://www.linksys.com/servlet/Satellite?c=L_Product_C2&childpagename=US%2FLayout&cid=1149562300349&pagename=Linksys%2FCommon%2FVisitorWrapper] <br />
|Supported - Legacy<br />
|Tested and running at the Embedded Xinu Lab.<br />
|-<br />
|[[WRT54G|Linksys WRT54G]] v4 [http://www.linksys.com/servlet/Satellite?c=L_Product_C2&childpagename=US%2FLayout&cid=1149562300349&pagename=Linksys%2FCommon%2FVisitorWrapper]<br />
|Probably Supported<br />
|The v4 is apparently the version on which WRT54GL is based, and so although the Embedded Xinu Lab has not explicitly tested it, it probably works.<br />
|-<br />
|[[WRT160NL|Linksys WRT160NL]] [http://www.linksys.com/servlet/Satellite?c=L_Product_C2&childpagename=US%2FLayout&cid=1149562300349&pagename=Linksys%2FCommon%2FVisitorWrapper]<br />
|Supported - Legacy<br />
|Newer model of router. Full O/S teaching core functioning, including wired network interface.<br />
|-<br />
|[[mipsel-qemu]] [http://www.qemu.org/]<br />
|Supported<br />
|Full O/S teaching core functioning, network support incomplete.<br />
|}</div>Brylowhttps://xinu.cs.mu.edu/index.php?title=MediaWiki:Sidebar&diff=4178MediaWiki:Sidebar2020-08-18T03:01:27Z<p>Brylow: </p>
<hr />
<div>* navigation<br />
** Main Page | Main Page<br />
** Special:Recentchanges | Recent Changes<br />
** Downloads | Downloads<br />
** https://xinu.cs.mu.edu/docs/| Documentation<br />
** https://xinu.cs.mu.edu/trac/ | Trac<br />
** https://github.com/xinu-os/ | GitHub<br />
* links<br />
** https://www.cs.mu.edu/~brylow/xinu/ | Xinu @ Marquette<br />
** https://www.cs.mu.edu/ | MU CS Department<br />
** http://www.mu.edu/ | Marquette University</div>Brylowhttps://xinu.cs.mu.edu/index.php?title=Quotes&diff=4177Quotes2018-10-16T19:40:13Z<p>Brylow: /* Spring 2015 */</p>
<hr />
<div>==Spring 2016==<br />
* DH: "They're using dark magic to teach computer science."<br />
* DB: "I'm all for frivolity. Within certain tightly constrained limits."<br />
* JA: [While giving a presentation at SIGCSE 2016] "We like girls." *chuckle*<br />
* CO: [to JA] "You look terrible."<br />
* DB: [After many hours of interrupt debugging] "I am an interrupt and I will not shut off, what am I doing?" / FX: "I will never be interrupted because I'm too important."<br />
* HB: [to FX] "Stop making people feel bad for you when they don't know any better."<br />
* DB: "Every day, I wake up in the morning, look in the mirror, and say three times, 'I will never be a pretty girl'."<br />
* LM: "What's wrong with pillow room?"<br />
<br />
==Fall 2015==<br />
* CO: "Yeah, I think I'm supposed to tutor her, but if she asks for help, I'm not going to help her."<br />
* DB: [After overhearing a conversation about Adam's thoughts] "You should not listen to him as a general rule."<br />
* AN: "That guy looks like the love child of Brylow and Gimli... in a kind of good way."<br />
* DB: "I feel like I'm contributing to your academic delinquency."<br />
<br />
==Summer 2015==<br />
* DH: "Salty Casey"<br />
* DB: [In an email concerning the research project] "we *really* need to have revision control on this source"<br />
* DH: "We don't use git. Everyone just sends me the stuff and I update it."<br />
<br />
== Spring 2015 ==<br />
* DB: "Berkeley? Stanford? You don't want to go there. They're just going to fall into the sea anyway."<br />
* DB: "You don't need a high school student to test your stuff. Just find a liberal arts major."<br />
* LM: "There are students sprouting up in the lab. I need some weedkiller." <br />
* DB: "Half of my job is being a comedian. You should know that by now!"<br />
* DB: "There is chalk on the chalkboard. This pleases me."<br />
* DB: "Now, now. Be nice to each other. Nobody needs to be called a Windows fanboy. Or fangirl. Those are fighting words." <br />
* DB: "This will create a new snubbet..."<br />
* AM: "I have been this level of intelligence my entire life."<br />
* DB: "You need to move them higher up into the tree so that you can cut off their heads." <br />
* MB: "Luke... why are you typing with chopsticks?"<br />
* LM: <After his partner has just left the lab, at 12:30 AM the day the project is due> "So, I have no idea where we are in this project. Or what to do right now."<br />
* DB: "Oooh, I can smell the thinking!"<br />
* DB: "And you know you've done it right when you have an inverted pentagram."<br />
* DB: "You've most certainly been reported to the NSA." / FX: "I thought you had my back!" / MB: "He does. But he has America's back first."<br />
* LM: "By the Beard of Brylow!" / DB: "That's 'by the beard of sky Brylow', thank you!"<br />
* LM: "You have your terminal in white? What are you, a heathen?<br />
<br />
== Fall 2014 ==<br />
* LM: "Do you need to join your people now?"<br />
* Prof: "Farzeen, what's an operating system?" / FX: "...a piece of software." / MB: "Two embedded courses, an OS course, Xinu researcher, and that's your answer?" <br />
* DB: "There's no such things as dumb questions... just dumb students." <br />
* DB: "It's like the zombie homework that does not die... [looks off into the distance] hmm, maybe thats a good idea for the future."<br />
* CO: [As Dr. Brylow walks into the room on the exact minute class should start] "Oooooh, right on time." / LM: "Dr. Brylow is never late." / OH: "He arrives precisely when he means to." <br />
* TM: "Chrome's not installed on these machines." / MB: "I know, its like working with stone knives and bear skins." / AM: "Hey, those are Dennis' words."<br />
* AM: "Everything is easy if you just sit down and think about it first."<br />
* DB: "Out would come... I don't know what would come out. Magical demons, it was a dark age."<br />
* TM: "Sometimes its easier to not think about things and just do them." / AM: "Yeah well you spend your first ten-twelve years of your life in school being taught to do that; primary school, high school, and in college you're not taught not to, you just have to learn by yourself or become just another one of the nameless grunts in the world.<br />
<br />
== Spring 2014 ==<br />
* George Corliss: "...Of course, if you do that, your operating system is going to run slower than cold molasses running uphill backwards in the middle of winter."<br />
* DB: "We are digital citizens in an analog universe." <br />
* FX: "Robots will never enjoy music." <br />
* JL: Commit message for combo pong & etch-a-sketch game across multiple embedded systems: "Pong party faileth. No acks yo."<br />
* TM: "Bit-banging is similar to fingering." <br />
* JL: "Get ACK me, bro." <br />
* RV: "What's a rulebook?" / JJ: "It's like an API for football.<br />
* DB: On chalkboard during Embedded/RTS: "DSP = Data Signals + Math --> coolness"<br />
* FX: "He's the human embodiment of a YouTube comment." <br />
* DB: "Fourier transforms. I know all of you either have never learned about this in your other classes or just don't want to remember it. Either way, that's fine for the purpose of this course." <br />
* DB: "That's not a backpack, that's Farzeen!"<br />
* DB: "The 'soul is in the software', as they say." / FX: "So THAT'S where {omitted}'s soul is!"<br />
* DB: "One of you is going to run a motor into a wall, or a computer, or your labmate, and then say, 'Oops! Off-by-one error!'"<br />
* MI: "What aspects of Hogwarts can we implement in Java?"<br />
* JL: "Guys, I just spelled HDMI with a 'B'."<br />
* DB: "What am I, a walking syllabus?"<br />
* FX: "It's as if he has a crush on the guy. Except not really. It's kind of a...god crush." / JL: "That sounds like the whole lab and Dennis."<br />
<br />
== Fall 2013 ==<br />
* DB: "Cannibalism is generally frowned upon. It's normally considered an aberration." <br />
<br />
== Summer 2013 ==<br />
* DB: "I am not defined by a function."<br />
<br />
== Spring 2013 ==<br />
* DB: (When asked about how jump drives will be viewed in the future) "When I was a small child in the second decade of the third millennium, my Father carried around a cow-shaped totem in his pocket. When he wanted to access data, rather than simply call out a file descriptor into the pervasive ether of the webmind, he would rip the head off of the tiny cow, and insert its body into a special receptacle mounted on a nearby piece of pre-quantum technology, called a 'workstation'. By symbolically sacrificing the cow totem to his workstation deity, he could then access the primitive data using a mechanism called a 'universal serial bus', which was in no way universal, and actually only spoke to other similar totems in the immediate vicinity. The data was then conveyed to a specialized rectangle with an array of small, independently activated light sources, and he could assimilate the data only by staring intently at this contraption and muttering secret incantations under his breath. It was like stone knives and bear skins, man..."<br />
<br />
== Fall 2012 ==<br />
* DB: "You don't know about the halting problem???? Seriously? It's the most important topic of computer science over the last century. Which is the only century of computer science. So it pretty much tops the list."<br />
* DB: "CHALK!"<br />
* DB: "This is λ. It looks like the Japanese character for enter."/ JC: "Yeah, or the Greek letter λ."/ Everyone: "laughter"<br />
* DB: "Hi Alex, we're on the stairs!"<br />
* JC: "I wrote a joke my exam!" / DB: "Yes, so did I!" / JC: "There's a minus 5 here!" / DB: "Yes, that's the joke! I thought it was funny!"<br />
* DB: "Is that example too 19th century for you?"<br />
* AB: "Someone needs to immortalize copy-pasta forever." <br />
* TM: "I like cake. And I like consing." <br />
* AB: "Am I on there? Good. I never want to be quoted on there."<br />
* AM: "I've decided that now is a good time to see if I like Regina Spektor."<br />
* JP: "Q: What's the best way to generate a random string? A: Ask a first-year CS student to quit out of VIM."<br />
* TM: "Adding true to 4 gives you...not 4."<br />
* DB: "You're not in labor? Good. Then I'll call you back, because we're busy discussing type theory!"<br />
* FX: "The Object class is to Java what Adam is to the Bible."<br />
<br />
== Summer 2012 ==<br />
* MZ: "XIPX really is just XINU." / AM: "Yeah I know." / MZ: "It's a sham... I hope I get away with it."<br />
* DB: "If it weren't for Fatboy Slim, I wouldn't have a doctorate."<br />
<br />
== Spring 2012 ==<br />
* AM: "I almost overslept for my 5:30 class."<br />
* AM: "Victor agrees." / VB: "I concur. I don't agree."<br />
* MZ: "Deadline Sunday. I'm not sure I like the look of the [LaTeX] listings package..."<br />
* AM: "If you're not spending at least $10 with each visit to the Brew you're not doing it right."<br />
* KP: [in reference to the lab temperature] "Maybe they haven't figured out feedback controls here yet. I had to bust out my winter coat this morning." / MZ: "Maybe they're sampling below the Nyquist frequency of the weather."<br />
* KP: "We don't water down our Engineering with any of that Pure Math stuff."<br />
* MZ: "I am really bad at finishing anything ever, ever, ever." / KP: "Sucks to be Kate."<br />
* MB: "I don't want anything that Ke$ha produced stuck inside me."<br />
* VB: "I use iPods for toilet paper."<br />
* NJ: "I hope the real world isn't like OS."<br />
* AM: "He's such a nerd. He wants me to spend my Saturday night playing Magic. God doesn't he know I'm going to be doing homework instead."<br />
* VB: "Make a slide about me. It can be part of the lab diversity section."<br />
* KP: "She even aced my recursion test." / DB "You had me at she. No, who am I kidding, you had me at recursion."<br />
* DB: "Seriously? Zip that up, man! ...and that does NOT go on the quotes page!"<br />
* AM: "You ever watch Frasier?" / MZ: "Yeah." / AM: "Show's awesome."<br />
<br />
== Fall 2011 ==<br />
* PS: "I don't know how I would feel if people thought I was a robot."<br />
* AM: "You know how you know your program is working?" / KP: "No, how?" / AM: "The ENTIRE matrix is filled with NaN."<br />
* [bar erupts in commotion at Brewers' final score] MZ: [singing Avril Lavigne karaoke] Chill out, what you yellin' for..."<br />
* AM: "Watch out! Kyle drank a Red Bull and now he's in OCD cleaning mode."<br />
* AM [sneezes]: "Where is your napkin stash?" / KP: "Why don't you just use your handkerchief?" / AM: "It's a bandanna. And I don't like to sneeze into my accessories, Kyle."<br />
* AM: "Whoa new whiteboard! Goal-oriented Wednesday--we're going to get so much done today. We're going to hang it, and write stuff on it... and that's it!"<br />
* AM: "Present Adam *really* hates Past Adam right now... but not as much as Present Adam doesn't care about Future Adam."<br />
* MZ: "Should I feel dumb for writing a function that takes ten parameters? Is there some rule against that?"<br />
* AM: "We were solving PDEs; it was cool." / KP: "I hate you."<br />
* AM: "I started buying girls socks. Changed my life. ... And now I buy them so people CAN see the cool patterns on the side."<br />
* AM: "That was the lame reason I gave you when I thought this argument was going to take ten seconds. I lied."<br />
* MZ: "My desk is littered with these sheets of paper with stack dumps scribbled all over." / KP: "My desk is littered with sheets of paper with packet sequence numbers scribbled all over. ... Mallen's desk is littered with coffee cups from the Brew!"<br />
* DB: "His kids are at the age where they're coordinated but not old enough to control themselves." / MZ: "So kind of like Mallen?"<br />
* MZ: "I'm not really sure how young she is." / DB: "You shouldn't say that out loud."<br />
* MZ: "It all started with some questions I never answered..." / KP: "Hey you've got the first line of your autobiography written!"<br />
* AM: [to KP] "I got really excited thinking that girl was doing a double-take checking me out, but then I realized she was just looking at the robot you're carrying."<br />
<br />
== Summer 2011 ==<br />
* AM: "We'll see how much I get done today. I'm easing myself into summer research mode, OK? I showed up. That's a start."<br />
* KP: "We need to get a third one on our little braniac team that's good at focusing on things. Then we could get some really cool stuff done."<br />
* KS: [referring to car battery in lab] "So... you trying to run Xinu on this thing?"<br />
* AM: "You know what's weird? Some people were born after 1990." / MZ: "Annie's little brothers were born after 1990." / AM: "My girlfriend was born after 1990."<br />
* AM: "1992."<br />
* PS: "You mean you don't like watching me watching you sleep."<br />
* DB: "Dump her."<br />
* DB: "What if the rebooter starts on fire?" / MB: "I guess that would cause it to fail"<br />
* KP: "In Soviet Russia, GNOME 3 Shell workflows YOU!"<br />
* AM: "Wait, what? You said something about lunch and I got excited because I can afford it today."<br />
<br />
== Spring 2011 ==<br />
* AM: "I don't have a week; I have like five plus two days."<br />
* OS Kid: "Wow, my whole program is a 'while' loop." / KP: "Welcome to embedded systems."<br />
* KP: [referring to oscope signal] "Well, the basic concept is there." / AM: "Yeah, maybe if you want to make a human to demon translator."<br />
* KP: "I'm not going to go as far to say it's killing two birds with one stone. It's more like you throw a handful of stones and take out a whole field of birds."<br />
* AM: "I'm really sick. I have the super flu or something." / SG: "Super Flu? ... Sounds like a movie Dr. Brylow would own."<br />
* MS: "married.c:1:20: error: social.h: No such file or directory"<br />
* MZ: "I actually wrote vim back in the 60's."<br />
* KP: "You're the worst computational sciences major ever. You hate computers and you hate numbers." / AM: "Right. Research is like a battle between me and this machine. I try to make it surrender information. Epic struggle between good and evil."<br />
* DB: "So you see the limitations of Google because you're looking for an answer to a very specific question in a domain that is not widely searched." / SG: "Yahoo then?"<br />
* DB: "Leave your gun and knife collection at home... even though we ''are'' going to Texas."<br />
* MZ: [pouring liquid coffee into trash] "There's got to be something absorbant in there."<br />
* AM: "So look at this...this is probably what's been going wrong for months. Whoaaah, but why???"<br />
* AM: "If you take all those words I just said and add or subtract a couple it's right."<br />
* AM: "It's the most fun I have ever had by myself."<br />
* SG: "I'm getting turned on even and I hate Pokemon!"<br />
* AW: "This place is infested with Adams."<br />
* KP: [playing Angry Birds] PHYYYYYSSSSSICSSS!<br />
<br />
== Fall 2010 ==<br />
<br />
* DB: "Adam is 'theoretically' good at what he does"<br />
* AM: "Do you realize that if a girl has a boyfriend you're competing with just one man, but when she's single you're competing with every man?"<br />
* AM: "I'm trying to quit caffeine. I think I had a heart attack this morning."<br />
* MS: [in regards to running Xinu on a roomba] "I believe the O/S students would say, 'Xinu doesn't need to suck any more than it already does.'"<br />
* KP: "If there's a ghetto solution to something, it's in this lab."<br />
* AM: "Iced tea is too iced tea-y, and lemonade is too lemonade-y"<br />
* [Dr. Brylow enters the lab] MK: "Dibs!" / SG: "Dibs!" / RB: "You can't dibs Dr. Brylow, he's a people."<br />
* KP: [In reference to the thermostat] "Stand back; I'm about to engineer this thing."<br />
* DB: "Type make, and it compiles... with errors, because it's _____'s code."<br />
* AM: "You can't just type like string something in C?" / KP: "No." / AM: "God, who the hell uses C anyway?" / KP: "Uh... everyone in this laboratory?"<br />
* KP: "Hmm. Should I call DPS and make them let me into my office?" / VB: "Start a fire! That will make them come over here."<br />
* AM: "How come CTRL+A doesn't select everything? [on Nekros] ... Oh wait, I'm using the keyboard on my laptop."<br />
* SG: "Why are you treating me like a hooker?" ... "Whooo all these singles, strip club tonight boys!"<br />
* AG: [referring to the new lockers] "They're probably the most secure thing on the Windows side of the lab."<br />
* [when KP's scp failed] Ashley: Mawdryn and Nyssa are out shopping. Nekros is there too.<br />
* DB: "This entire sentence reads like it was outsourced to India."<br />
* AM: "Steve makes my heart skip a beat." / VB: "I feel the same way."<br />
* AM: "Drinking by yourself is way more fun than drinking with other people. ... I don't get a lot of alone time."<br />
* AM: "Victor plays dancing video games all the time; that doesn't necessarily mean he knows how to dance."<br />
* KP: "No, he'll probably just wait around in his person... drawn... carriage..." / AM: "You mean a rickshaw?"<br />
* AM: "Ahhhhh, stupid quotes page! I haven't been working for like ten minutes."<br />
* RB: "I don't know if I really want to let girls play with my gun."<br />
* AM: "I love LaTeX; it's like a mystery. Every time you compile, you never know what you're going to get."<br />
* SG: [to the tune by Cutting Crew] "I ... just compiled in your arms tonight. Must have been somethin' you typed."<br />
* KP: "My numbers are a little off..." / AM: "Just blame it on numeric instability and move on."<br />
* MZ: "I can't believe we didn't notice that k*sin(x) before. Where do you get your springs Yaz? Does McMaster have like a weird section?"<br />
* KP: "I'm going to have to side with PartyAdam on this one." / AM: "And you know how much it pains him to say that so it must be true."<br />
* AM: [in reference to an argument that spurred about whether quotes should go at the top or the bottom of each section] "I'm going to have to agree with RA Kyle on this one." / KP: "And you know how much it pains him to say that so it must be true."<br />
* SG: "Tron in 3D would be better than a trip to Disney World."<br />
<br />
== Summer 2010 ==<br />
<br />
* AM: "It's more confusing when I get it!"<br />
* DB: [In reference to WRT160NL routers] "This isn't like the other children. It's something different."<br />
* Krenz: "There's light at the end of the tunnel and it's not a train."<br />
* AK: "I'm so confused by this new ls."<br />
* DB: "Do I need to sacrifice goat entrails to the new Fedora 13 for you to be happy with it?"<br />
* AG: "Does anyone here know Perl." / DB: "It is an abomination."<br />
* AK: [Commit message] "fixed first bug after the last bug"<br />
<!-- * AK: "killall batch grading... killall xterm... " / DB: "killall students..." --><br />
* DB: "Just add like three more zeros to it. Screw it. ... Okay maybe three zeros was a little much."<br />
* KP: "Why can't the phone work like this." / DB: "Because the phone is not a stepper motor." / KP: "Can I write a thesis on M&M dispensing?"<br />
* AM: "Can we just set it back to Fedora 1 and leave it there?"<br />
* KP: "How long could it take to write an essay for your diet coke of a thesis?"<br />
* SG: "I can't believe I ran into a f*cking pole."<br />
* SG: "I expected more blinking and less doing nothing."<br />
* KP: "Have you ever had Pita Bros?" / DB: "No, where's that?" / KP: "It's the hybrid electric cart that parks by campus selling food." / DB: "Oh, no don't eat there that's a good way to get botulism."<br />
* AK: "Who castrated the ARP command?"<br />
* DB: "If the Ethernet device is a fire hose and the serial device is a garden hose, where should the excess water go?" / KP: "The pool."<br />
* KT: "We need to break a router so we have a reason to use the debricker." / KP: "There's a whole pile of reasons right over there."<br />
* KP: [shakes head] / KT: "Have I failed in some way?"<br />
* KP: "Let's boot this b*tch!"<br />
<br />
== Spring 2010 ==<br />
<br />
* AM: "Babies are like larvae that evolve into people."<br />
* KT: "I use tilde all the time." / DB: "Maybe a little too much."<br />
* KT: [after using a configure script that accidentally made a directory named ~] "I was trying to remove the ~ directory. I tried ''rm -r ~'' and the system complained about files in use. I thought that was weird, so I used the ''-f'' force option [resulting in ''rm -rf ~'']. When I tried to use ''make'', it said file not found and that is when I realized I deleted my home directory."<br />
* AM: "What does that mean?" / MS: "You can't eat Catholics on Friday."<br />
* DB: "These little details are like sorting your M&Ms by color before you eat them." / ZL [who is color deficient]: "I always do that. It's good practice." / DB: "Bad example."<br />
<br />
== Fall 2009 ==<br />
<br />
* AK: "If you fail [the GRE] every time, that's a hint."<br />
* ZL: [Talking about the sound coming from the VoIP speakers] "That's a new one. I like it. You could almost dance to it." / AK: "Really quickly."<br />
* ZL: "Do you live here [in the lab]?" / DS: "If that isn't the pot calling the kettle black..." / ZL: "You make a good point."<br />
* AM: "When does grad school get fun?" / DB: "When you are done, and you look back on it fondly, and you have a high paying doctoral job."<br />
* AM: "It's Friday. Who am I kidding?"<br />
* MK: "I'm going to be using this [red pen] all semester. It will be a good investment."<br />
* FH: "Not that it's my thing, but there is no alcohol allowed, right?"<br />
* DB: [After setting a bag of candy on the table] "Marquette Dental School appreciates your business."<br />
* DB: "Thesis first!"<br />
* Steve Merrill: [While working with MATLAB] "FAIL!"<br />
* ZL: "...or we could throw it off the balcony." / DB: "NO!"<br />
* ZL: "I have a plan to test that. It requires three computers." / DB: "I like it already."<br />
<br />
== Summer 2009 ==<br />
<br />
* DB: "Why is this not working?" / MS: "Morbius is not promiscuous enough."<br />
* AM: "Isn't holy water hard to come by?"<br />
* DB: [Speaking about AM's meeting with CS] "We also don't recognize [Struble] as a valid commitment."<br />
* RB: "Don't just sit there and gloat at me."<br />
* RB: "Jokes don't really work right now. Sorry."<br />
* AM: "Ruining my body with one substance is enough."<br />
* AM: "I need someone to hold my hand when I go get a haircut."<br />
* AM: "Everyone sounds lame when they post on girls' walls."<br />
* AM: "I'm in Cudahy. I work here and live here."<br />
* DB: "Adam counts as -1." / AG: "Only one?"<br />
* ZL: "It sounds like crap but it corresponds."<br />
* DB: "I will be the supportive advisor this evening." / MS: [Sarcastically] "What a change."<br />
* AM: "In dangerous situations, that's when it's best to drink<br />
* AG: "Yeah. We played Wii bowling. And I learned how to play Magic." / DB: "Ohh noo. It's like supervoc being taking over by the mad man. Once SV7 is gone its all downhill."<br />
* DM: "Iran. Iraq. IRAW."<br />
* AG: "You can only flash something once." / ZL: "Clearly, because you get arrested after that."<br />
* AM: "I was rushing because I needed to be here by 3pm today."<br />
* MS: "He just put a hack on top of a hack on top of a hack." / AG: "You don't have a network stack, you have a network hack." / ZL: "You have a network pile."<br />
* AK: "Someone wrote on our table." / AN: "Kill them."<br />
* DB: [Talking about hair] "That's not a matter of personal preference; that's correct."<br />
* AM: "There would be so many good quotes if we allowed f-words."<br />
* MS: [Speaking to DB's friends] "You might want to bring your own videos."<br />
* RB: "Oh no. It works consistently. It gets my hopes up only to shatter them."<br />
* ZL: "It's good. But.." / AG: "But, It looks like I cheated. ... You got to cheat sometimes."<br />
* Doug Harris: "Why would I doubt you, you are a student whose life depends on following the rules, I am only Director of a program which is supposed to enforce the rules."<br />
* AK: "Yeah. I'm pretty much done. I'm wasted."<br />
* AG: "I fear ugliness."<br />
* AM: "Chicks dig werewolves."<br />
* AM: "Computers should never take this long to do something unless its awesome." / GV: "Did you press the turbo button?"<br />
* RB: [To AM] "You're going to make some freaky girl very happy someday."<br />
* AG: "It looked like you were conducting an orchestra." / MS: "Well, I was composing an email."<br />
* RB: "I feel like I am using beta every time I log into Windows."<br />
* ZL: "Get it done. Testing is not important."<br />
* DB: "What's wrong with you people?"<br />
* ZL: "The thing is, when I do say something offensive, it's very good."<br />
* AM: "The sooner I get kicked out of the lab, the sooner I can start drinking."<br />
* MS: [Commit message] "Updated the Xinu banner for version 2.0. We can release now."<br />
<br />
== Spring 2009 ==<br />
<br />
* AM: "Do you really want me in charge of something that affects another human being?"<br />
* TB: "Sleep sounds amazing right now." / AM: "Oh my god...does it ever!"<br />
* ZL: "I'm all about making fun of people while they're in the room."<br />
* DB: "The Internet is a vast wasteland of sewage."<br />
* DB: "I won't say it's fixed, but I have now intervened on your behalf."<br />
* Zachary's Girlfriend: "Darn. I am taking on Brylow traits."<br />
* DB: "You can think of them as ornaments hung on a syntax tree."<br />
* AK: "purged Tim from nvram"<br />
* AK: "If you want some sort of base for how sick I still feel just insert a burst of coughing after each sentence while reading this email."<br />
* DB: "The rat gets nothing!"<br />
* AG: "My brain operates at 10,000 Gemberflops per second."<br />
* AG: "I'm not saying it's my opinion. I'm just saying its Adolph's opinion."<br />
* DB: "He's celebrating the month of feasting."<br />
* DB: "There's a special travel dispensation for pretzels."<br />
* CS: "I'm not very quotable."<br />
* AM: "Oh, it's travelling up in my butt."<br />
* AK: "I shut off Slayer while we are gone." / MS: "I'm sure Mawdryn will turn itself off, too."<br />
* AM: "My room mate never plays with me."<br />
* MS: "I just made a mess on the seat."<br />
* TB: "I don't need a haircut - I am representing myself at this conference."<br />
* AM: [Referring to high performance gum] "It is just like high performance computing: it's really really good for a really really short period of time."<br />
* AK: [Speaking to Brylow] "We just got out of Cracker Barrel and you are already eating pretzels."<br />
* AM: "Oh my God - Dinosaur World. We are skipping SIGCSE."<br />
* TB: "Yeah, my life is a joke sometimes."<br />
* TB: "One of these days I'll get English right."<br />
* Presenter at SIGCSE 2009: "I mean, it's kind of fun to trash your operating system."<br />
* TB: "I like to let my hair air-dry. It poofs better."<br />
* ZL: "I would not want Tim on my team for a game of telephone."<br />
* DB: "They're not pretzel rods, they're fuel rods."<br />
* DB: "But that's non-linear board usage. I never do that."<br />
* AK: "There's a lot more TODOs where those came from."<br />
* DB: [Said to an almost empty lab] "Aren't I paying a bunch of students to work for me?"<br />
* AM: "Aww we all got laser pointers! This is gonna rule!"<br />
* TB: "I thought I fixed everything doing nothing. It happens so many times."<br />
* [A discussion on going to the bar in a lab of all guys] / AG: "We're probably not as good looking as Victoria." / AM: "Yeah, and she has a boyfriend...but none of you have boyfriends."<br />
* DB: "Just for funsies."<br />
* TB: [As AM points a laser pointer at TB] "I feel like I'm being sniped."<br />
* Ryan Feil: [Speaking in the lab of an operating systems assignment] "Shouldn't there be more people here scrambling to get this done."<br />
* MS: [As DB writes "IP Stack" on the board] "Ha ha. He pees stack. IP urine."<br />
* ZL: "Really all we have right now are questions."<br />
* MS: [On a sheet of paper hidden among AM's homework] "#6. Thm: Adam sucks! Ha ha. / Pf: trivial."<br />
* ZL: "I should just source control my...everything."<br />
* DB: "English is not sufficient for teaching compilers."<br />
* TB: "That's it. It's 100 percent done."<br />
* TB: "We were 100 percent done. We just need to get more speed-up."<br />
* AG: "So, Tim, when you are 30, will you say your life is 100 percent done?"<br />
* AG: "make tim: now compiling nonsense.c"<br />
* DB: "Oh, here we go: proof by rant. That's a new one."<br />
* AM: "Do you really want me representing this school." / DB: [Out of context] "No."<br />
* AG: "If I leave the lab, I feel like I'm leaving civilization behind."<br />
* AG: [Browsing through Mike's wedding gift registry] "Xinu only has 50 threads. The sheets Mike wants have 410, but they don't have memory protection."<br />
* AK: "Oh good Brylow left. Now I can leave."<br />
* AK: [First commit message] "modified some ifthenelse stuff to look a little more like class" / [Second commit message] "removed the code I added to ifthenelse, it made no sense and didn't compile"<br />
* DB: [To a prospective student touring the System's Lab] "Ignore the rat."<br />
* MS: [Discussing DB's tests] "Why would you study for his test? You are either screwed or not screwed...it's fairly binary."<br />
* MS: [Left a message for AG] "I hax0rd your boxor!"<br />
* AM: "Oh look. She dumped me on Facebook. Awesome!"<br />
* DB: "Don't stroke the yeast colony."<br />
* MS: [Speaking of his yeast colony] "It's free!" / DB: "Don't release it!"<br />
* MS: "If I just get really offensive and harsh with what I say then I won't get quoted any more."<br />
* DB: "Alright, I'm going home. See you in the morning." / ZL: "The morning. Really?" / DB: "Well no."<br />
* MS: [Anticipating DB's response to new advisees] "You want to be my advisee. Kiss the clock."<br />
* MS: "It is much more important to see me being reamed up the ass."<br />
* JN: [Discussing potential names of Dan Mahoney's future son] "Name him your last name backwards so he can be a palindrome."<br />
* AK: "Big setup no follow through." / AG: "I'm all about that." / MS: "That's what she said."<br />
* DB: "That's not an algorithm; that's a sweatshop."<br />
* Lyndsie: "High school cheer leading is even on ESPN." / MS: "That is really sweet!"<br />
* AM: "I always assume that everyone in the world is just listening to me to talk. I also assume that people just follow me around just to listen to me."<br />
* AM: "Every time Tim opens his mouth to say something about the poster, you just close your eyes and pray."<br />
* DB: "This will all work out right? Induction through hand-waving."<br />
* DB: "Except it's like fake adoption, where it turns out the child is actually yours."<br />
* "If you're concerned about that you're probably in the wrong major, because we're going to build skynet."<br />
* DB: "So we are selling you to indentured servitude now?" / AM: "I hope so, then I get free passage to the new world."<br />
* DB: "Why do you work here?"<br />
* AM: "I have three desks worth of space just taken up with garbage and shit."<br />
* AN: "You know, pretty soon that relationship will be 100% done."<br />
<br />
== Fall 2008 ==<br />
<br />
* MN: [Talking about the large rubber rat] "I don't get paid enough to have this thing look at me."<br />
* AK: "Now that grading's done, I deserve a pretzel."<br />
* AG: "I haven't even started, and I already feel defeated." / MS: "Welcome to graduate school."<br />
* ''RFC 793: Transmission Control Protocol'': "When the original SYN (pun intended) finally arrives at line 6, the synchronization proceeds normally."<br />
* AM: "If I think more than 30 seconds into my own future I start to panic."<br />
* AM: "Once again, I've solved the problem, but the computer has failed to see my genius."<br />
* DB: "It takes many years of sucky teaching to learn how to teach well. You have to start sucking somewhere."<br />
* TB: "When you get the packet it is all going to be out of order."<br />
* MS: "I was going to ask you what they stood for, but I knew the answer was: 'Get the hell out of my office Mike.'"<br />
* DB: "You have the plague now too?"<br />
* AK: "It was like Tim's brain on a piece of paper."<br />
* AK: "His abstract was words in a paint can and all he did was throw it on a poster."<br />
* TB: "Yeah, how did we get sidetracked." / AM: "I started talking."<br />
* DB: "Now US-41 through Terre Haute, that's the corridor of hell."<br />
* Zachary's Sister: [Upon visiting the Systems Lab] "It's like having six zacs."<br />
<br />
== Summer 2008 ==<br />
* linux-2.6.25.9/lib/iomap.c: Ugly macros are a way of life.<br />
* ../net/tcp/tcpTimer.c:101: error: ‘rum’ undeclared (first use in this function)<br />
* BH: "Vim has a learning curve." / MS: "No, it's a line."<br />
* MS: "[re: Firefox Plushie] Wow, that look more like a raccoon to me. And wouldn't that just make people position Linux Tux and Firefox Fux is various explicit positions? Or is that just me?" / DB: "Yes, Michael. It is just you. And I don't think the Firefox mascot's proper name is 'Fux.'"<br />
* JP: "I'm laughing because my nose itches."<br />
* JP: "I'm not going to start my own business. For a business to work, the owner has to care."<br />
* MS: "''Broken Beyond Syntax'', that's going to be the title of my autobiography."<br />
<br />
== Spring 2008 ==<br />
* AK: "[online review of sushi place in Portland with Aaron] Sit in the lounge. The red chairs are very comfortable. The food was really good too. Had some chicken dish, don't remember what it was called."<br />
* JP: "I'm not saying it's my opinion, I'm just saying it's an opinion."<br />
* JP: "Yeah, that's just fool complicated."<br />
* AG: "Even Tim's pictures have bugs in them."<br />
* AK: "Warnings mean you are smarter than the compiler!"<br />
* AG: "Do you use text messaging?" / JP: "What's that?"<br />
* AG: "I feel like doing something. What should I do?" / PH: "Go home."<br />
* DB: "Any questions? What else have I forgotten to tell you?" (email to lab) / Response: "The XINU lab notes that you forgot to tell us that you love us."<br />
* DB: "Traditionally, graduate students get a bed to themselves in this situation."<br />
* PH: "I'm really going to enjoy watching the commits to this branch."<br />
* ZL: "Voc and Supervoc joined at the UART"<br />
* George Corliss: "Verbose. Minus 5."<br />
* Steve Merrill: "Publish! Publish! Publish!" (walking down the hall past junior faculty offices)<br />
* JP: "I am just participating cause I'm standing here."<br />
* JP: "New commands are silly."<br />
* JP: "I've solved all kinds of problems in my life that no one's ever solved before."<br />
* AG: "You know scheme. I know scheme. We all scheme for ice cream."<br />
* DB: "I like StarTrek, but that would be less a hobby and more an investment."<br />
* MS: "Subtract two." / MN: "Why?" / MS: "...because I said so." / MN: "...alright..." / MS: "...and then when that doesn't work subtract four. But two should work." / MN: "Two didn't work." / MS: "Damnit! Subtract four." (Conversation continues in a similar fashion until Matt ends up subtracting eight.)<br />
* DB: "So they basically made a hammer and went after everything that could be a nail."<br />
* JP: "This is so unfair to us petty criminals."<br />
* DB: "We'll all be getting eye transplants soon."<br />
* DB: "''I'' am somehow derived from C." (on the ubiquity of the C programming language)<br />
* JP: "First you have to get the $3,000 license for the whizbang that does all the work."<br />
* DB: "I don't remember what the silly window is, but it must be important."<br />
* AK: "[UML is] just a bunch of boxes on paper."<br />
* DB: "Java has corrupted you all."<br />
* KJ: "There are some fonts that ''really'' spread out a paper." (discussing parameters for COSC 198 term paper)<br />
* DB: "You're telling me to put in less work. I'm not going to argue with you."<br />
* ''See MIPS Run, 2nd Ed.'': "When we finally make contact with aliens, their wheelbarrows will have round wheels and their computers will probably use fixed-size pages."<br />
* ''RFC 826: An Ethernet Address Resolution Protocol'': "The world is a jungle in general, and the networking game contributes many animals."<br />
<br />
== XINU Pith ==<br />
* XINU Cometh.<br />
* XINU Returneth.<br />
* XINU Calls.<br />
* XINU Returns.<br />
* XINU Creates.<br />
* XINU Reschedules.<br />
* XINU Saves and Restores.<br />
* XINU Preempts.<br />
* XINU Comes Not to JUDGE, But to EXECUTE...<br />
* XINU Knows Your Inmost Firmware.<br />
* XINU Brings New Life to Old Hardware.<br />
* XINU Waits.<br />
* XINU Allocates.<br />
* XINU Deallocates Away.<br />
* XINU Tastes Great.<br />
* XINU Has Less Filling.<br />
* XINU Runs FOREVER.<br />
* XINU Eschews Obfuscation.<br />
* XINU Does Not Do Windows.<br />
* XINU Brings ORDER out of CHAOS.<br />
* XINU Brings CHAOS from ORDER.<br />
* He Whoever Believes in XINU Shall Have Eternal Processing.<br />
* XINU Shall Run Again.<br />
* XINU Is Not UNIX.<br />
* XINU. It's What's For Dinner.<br />
* No XINU and No Mips Make Homer Something Something...<br />
* See XINU. See XINU Run. Run XINU Run.<br />
* XINU Allocateth, XINU Deallocateth Away.<br />
<br />
== Abbreviations ==<br />
{| <br />
|-<br />
|'''Abbreviation''' &nbsp;&nbsp;&nbsp;&nbsp; || '''Name'''<br />
|-<br />
| AB || Alex Becherer<br />
|-<br />
| AG || Aaron Gember<br />
|-<br />
| AK || Adam Koehler<br />
|-<br />
| AM || Adam Mallen<br />
|-<br />
| AN || Anon.<br />
|-<br />
| AW || Adam Welc<br />
|-<br />
| BH || Brandon Hahn<br />
|-<br />
| CO || Casey O'Hare<br />
|-<br />
| CS || Craig Struble<br />
|-<br />
| DB || Dennis (or Dr.) Brylow<br />
|-<br />
| DH || Omokolade "David" Hunpatin<br />
|-<br />
| DM || Dan Mahoney<br />
|-<br />
| DS || Devin Sigulinsky<br />
|-<br />
| FH || Fran Hurtado<br />
|-<br />
| FX || Farzeen Harunani<br />
|- <br />
| GV || Gabe Van Eyck<br />
|-<br />
| HB || Heather Bort<br />
|-<br />
| JA || Jason Arnold<br />
|-<br />
| JC || Jackson Cohen<br />
|-<br />
| JJ || JJ Puccetti<br />
|-<br />
| JL || Jason Laqua<br />
|-<br />
| JN || Joe Pintozzi<br />
|-<br />
| JP || Justin Picotte<br />
|-<br />
| KB || Kaleb Breault<br />
|-<br />
| KJ || Kyle Jackson<br />
|-<br />
| KP || Kyle Persohn<br />
|-<br />
| KS || Karl Stamm<br />
|-<br />
| KT || Kyle Thurow<br />
|-<br />
| LM || Luke Mivshek<br />
|-<br />
| MB || Matt Bajzek<br />
|-<br />
| MI || Mike Slattery<br />
|-<br />
| MK || Matthias Kohler<br />
|-<br />
| MN || Matt Netkow<br />
|-<br />
| MS || Michael Schultz<br />
|-<br />
| MZ || Michael Ziwisky<br />
|-<br />
| NJ || Nick Jelen<br />
|-<br />
| PH || Paul Hinze<br />
|-<br />
| PS || Paul Spillane<br />
|-<br />
| RV || Ryan Vogt<br />
|-<br />
| SG || Steven Gago<br />
|-<br />
| TB || Tim Blattner<br />
|-<br />
| TM || Tyler Much<br />
|-<br />
| VB || Victor Blas<br />
|-<br />
| ZL || Zachary Lund<br />
|-<br />
|}</div>Brylowhttps://xinu.cs.mu.edu/index.php?title=Quotes&diff=4123Quotes2014-04-14T20:55:24Z<p>Brylow: </p>
<hr />
<div>== Spring 2014 ==<br />
* GC: "...Of course, if you do that, your operating system is going to run slower than cold molasses running uphill backwards in the middle of winter."<br />
* DB: "We are digital citizens in an analog universe." <br />
* FX: "Robots will never enjoy music." <br />
* JL: Commit message for combo pong & etch-a-sketch game across multiple embedded systems: "Pong party faileth. No acks yo."<br />
* TM: "Bit-banging is similar to fingering." <br />
* JL: "Get ACK me, bro." <br />
* RV: "What's a rulebook?" / JJ: "It's like an API for football.<br />
* DB: On chalkboard during Embedded/RTS: "DSP = Data Signals + Math --> coolness"<br />
* DB: "Fourier transforms. I know all of you either have never learned about this in your other classes or just don't want to remember it. Either way, that's fine for the purpose of this course." <br />
* DB: "That's not a backpack, that's Farzeen!"<br />
* DB: "The 'soul is in the software', as they say." / FX: "So THAT'S where {omitted}'s soul is!"<br />
* DB: "One of you is going to run a motor into a wall, or a computer, or your labmate, and then say, 'Oops! Off-by-one error!'"<br />
* MI: "What aspects of Hogwarts can we implement in Java?"<br />
<br />
== Fall 2013 ==<br />
* DB: "Cannibalism is generally frowned upon. It's normally considered an aberration." <br />
<br />
== Summer 2013 ==<br />
* DB: "I am not defined by a function."<br />
<br />
== Spring 2013 ==<br />
* DB: (When asked about how jump drives will be viewed in the future) "When I was a small child in the second decade of the third millennium, my Father carried around a cow-shaped totem in his pocket. When he wanted to access data, rather than simply call out a file descriptor into the pervasive ether of the webmind, he would rip the head off of the tiny cow, and insert its body into a special receptacle mounted on a nearby piece of pre-quantum technology, called a 'workstation'. By symbolically sacrificing the cow totem to his workstation deity, he could then access the primitive data using a mechanism called a 'universal serial bus', which was in no way universal, and actually only spoke to other similar totems in the immediate vicinity. The data was then conveyed to a specialized rectangle with an array of small, independently activated light sources, and he could assimilate the data only by staring intently at this contraption and muttering secret incantations under his breath. It was like stone knives and bear skins, man..."<br />
<br />
== Fall 2012 ==<br />
* DB: "You don't know about the halting problem???? Seriously? It's the most important topic of computer science over the last century. Which is the only century of computer science. So it pretty much tops the list."<br />
* DB: "CHALK!"<br />
* DB: "This is λ. It looks like the Japanese character for enter."/ JC: "Yeah, or the Greek letter λ."/ Everyone: "laughter"<br />
* DB: "Hi Alex, we're on the stairs!"<br />
* JC: "I wrote a joke my exam!" / DB: "Yes, so did I!" / JC: "There's a minus 5 here!" / DB: "Yes, that's the joke! I thought it was funny!"<br />
* DB: "Is that example too 19th century for you?"<br />
* AB: "Someone needs to immortalize copy-pasta forever." <br />
* TM: "I like cake. And I like consing." <br />
* AB: "Am I on there? Good. I never want to be quoted on there."<br />
* AM: "I've decided that now is a good time to see if I like Regina Spektor."<br />
* JP: "Q: What's the best way to generate a random string? A: Ask a first-year CS student to quit out of VIM."<br />
* TM: "Adding true to 4 gives you...not 4."<br />
* DB: "You're not in labor? Good. Then I'll call you back, because we're busy discussing type theory!"<br />
* FX: "The Object class is to Java what Adam is to the Bible."<br />
<br />
== Summer 2012 ==<br />
* MZ: "XIPX really is just XINU." / AM: "Yeah I know." / MZ: "It's a sham... I hope I get away with it."<br />
* DB: "If it weren't for Fatboy Slim, I wouldn't have a doctorate."<br />
<br />
== Spring 2012 ==<br />
* AM: "I almost overslept for my 5:30 class."<br />
* AM: "Victor agrees." / VB: "I concur. I don't agree."<br />
* MZ: "Deadline Sunday. I'm not sure I like the look of the [LaTeX] listings package..."<br />
* AM: "If you're not spending at least $10 with each visit to the Brew you're not doing it right."<br />
* KP: [in reference to the lab temperature] "Maybe they haven't figured out feedback controls here yet. I had to bust out my winter coat this morning." / MZ: "Maybe they're sampling below the Nyquist frequency of the weather."<br />
* KP: "We don't water down our Engineering with any of that Pure Math stuff."<br />
* MZ: "I am really bad at finishing anything ever, ever, ever." / KP: "Sucks to be Kate."<br />
* MB: "I don't want anything that Ke$ha produced stuck inside me."<br />
* VB: "I use iPods for toilet paper."<br />
* NJ: "I hope the real world isn't like OS."<br />
* AM: "He's such a nerd. He wants me to spend my Saturday night playing Magic. God doesn't he know I'm going to be doing homework instead."<br />
* VB: "Make a slide about me. It can be part of the lab diversity section."<br />
* KP: "She even aced my recursion test." / DB "You had me at she. No, who am I kidding, you had me at recursion."<br />
* DB: "Seriously? Zip that up, man! ...and that does NOT go on the quotes page!"<br />
* AM: "You ever watch Frasier?" / MZ: "Yeah." / AM: "Show's awesome."<br />
<br />
== Fall 2011 ==<br />
* PS: "I don't know how I would feel if people thought I was a robot."<br />
* AM: "You know how you know your program is working?" / KP: "No, how?" / AM: "The ENTIRE matrix is filled with NaN."<br />
* [bar erupts in commotion at Brewers' final score] MZ: [singing Avril Lavigne karaoke] Chill out, what you yellin' for..."<br />
* AM: "Watch out! Kyle drank a Red Bull and now he's in OCD cleaning mode."<br />
* AM [sneezes]: "Where is your napkin stash?" / KP: "Why don't you just use your handkerchief?" / AM: "It's a bandanna. And I don't like to sneeze into my accessories, Kyle."<br />
* AM: "Whoa new whiteboard! Goal-oriented Wednesday--we're going to get so much done today. We're going to hang it, and write stuff on it... and that's it!"<br />
* AM: "Present Adam *really* hates Past Adam right now... but not as much as Present Adam doesn't care about Future Adam."<br />
* MZ: "Should I feel dumb for writing a function that takes ten parameters? Is there some rule against that?"<br />
* AM: "We were solving PDEs; it was cool." / KP: "I hate you."<br />
* AM: "I started buying girls socks. Changed my life. ... And now I buy them so people CAN see the cool patterns on the side."<br />
* AM: "That was the lame reason I gave you when I thought this argument was going to take ten seconds. I lied."<br />
* MZ: "My desk is littered with these sheets of paper with stack dumps scribbled all over." / KP: "My desk is littered with sheets of paper with packet sequence numbers scribbled all over. ... Mallen's desk is littered with coffee cups from the Brew!"<br />
* DB: "His kids are at the age where they're coordinated but not old enough to control themselves." / MZ: "So kind of like Mallen?"<br />
* MZ: "I'm not really sure how young she is." / DB: "You shouldn't say that out loud."<br />
* MZ: "It all started with some questions I never answered..." / KP: "Hey you've got the first line of your autobiography written!"<br />
* AM: [to KP] "I got really excited thinking that girl was doing a double-take checking me out, but then I realized she was just looking at the robot you're carrying."<br />
<br />
== Summer 2011 ==<br />
* AM: "We'll see how much I get done today. I'm easing myself into summer research mode, OK? I showed up. That's a start."<br />
* KP: "We need to get a third one on our little braniac team that's good at focusing on things. Then we could get some really cool stuff done."<br />
* KS: [referring to car battery in lab] "So... you trying to run Xinu on this thing?"<br />
* AM: "You know what's weird? Some people were born after 1990." / MZ: "Annie's little brothers were born after 1990." / AM: "My girlfriend was born after 1990."<br />
* AM: "1992."<br />
* PS: "You mean you don't like watching me watching you sleep."<br />
* DB: "Dump her."<br />
* DB: "What if the rebooter starts on fire?" / MB: "I guess that would cause it to fail"<br />
* KP: "In Soviet Russia, GNOME 3 Shell workflows YOU!"<br />
* AM: "Wait, what? You said something about lunch and I got excited because I can afford it today."<br />
<br />
== Spring 2011 ==<br />
* AM: "I don't have a week; I have like five plus two days."<br />
* OS Kid: "Wow, my whole program is a 'while' loop." / KP: "Welcome to embedded systems."<br />
* KP: [referring to oscope signal] "Well, the basic concept is there." / AM: "Yeah, maybe if you want to make a human to demon translator."<br />
* KP: "I'm not going to go as far to say it's killing two birds with one stone. It's more like you throw a handful of stones and take out a whole field of birds."<br />
* AM: "I'm really sick. I have the super flu or something." / SG: "Super Flu? ... Sounds like a movie Dr. Brylow would own."<br />
* MS: "married.c:1:20: error: social.h: No such file or directory"<br />
* MZ: "I actually wrote vim back in the 60's."<br />
* KP: "You're the worst computational sciences major ever. You hate computers and you hate numbers." / AM: "Right. Research is like a battle between me and this machine. I try to make it surrender information. Epic struggle between good and evil."<br />
* DB: "So you see the limitations of Google because you're looking for an answer to a very specific question in a domain that is not widely searched." / SG: "Yahoo then?"<br />
* DB: "Leave your gun and knife collection at home... even though we ''are'' going to Texas."<br />
* MZ: [pouring liquid coffee into trash] "There's got to be something absorbant in there."<br />
* AM: "So look at this...this is probably what's been going wrong for months. Whoaaah, but why???"<br />
* AM: "If you take all those words I just said and add or subtract a couple it's right."<br />
* AM: "It's the most fun I have ever had by myself."<br />
* SG: "I'm getting turned on even and I hate Pokemon!"<br />
* AW: "This place is infested with Adams."<br />
* KP: [playing Angry Birds] PHYYYYYSSSSSICSSS!<br />
<br />
== Fall 2010 ==<br />
<br />
* DB: "Adam is 'theoretically' good at what he does"<br />
* AM: "Do you realize that if a girl has a boyfriend you're competing with just one man, but when she's single you're competing with every man?"<br />
* AM: "I'm trying to quit caffeine. I think I had a heart attack this morning."<br />
* MS: [in regards to running Xinu on a roomba] "I believe the O/S students would say, 'Xinu doesn't need to suck any more than it already does.'"<br />
* KP: "If there's a ghetto solution to something, it's in this lab."<br />
* AM: "Iced tea is too iced tea-y, and lemonade is too lemonade-y"<br />
* [Dr. Brylow enters the lab] MK: "Dibs!" / SG: "Dibs!" / RB: "You can't dibs Dr. Brylow, he's a people."<br />
* KP: [In reference to the thermostat] "Stand back; I'm about to engineer this thing."<br />
* DB: "Type make, and it compiles... with errors, because it's _____'s code."<br />
* AM: "You can't just type like string something in C?" / KP: "No." / AM: "God, who the hell uses C anyway?" / KP: "Uh... everyone in this laboratory?"<br />
* KP: "Hmm. Should I call DPS and make them let me into my office?" / VB: "Start a fire! That will make them come over here."<br />
* AM: "How come CTRL+A doesn't select everything? [on Nekros] ... Oh wait, I'm using the keyboard on my laptop."<br />
* SG: "Why are you treating me like a hooker?" ... "Whooo all these singles, strip club tonight boys!"<br />
* AG: [referring to the new lockers] "They're probably the most secure thing on the Windows side of the lab."<br />
* [when KP's scp failed] Ashley: Mawdryn and Nyssa are out shopping. Nekros is there too.<br />
* DB: "This entire sentence reads like it was outsourced to India."<br />
* AM: "Steve makes my heart skip a beat." / VB: "I feel the same way."<br />
* AM: "Drinking by yourself is way more fun than drinking with other people. ... I don't get a lot of alone time."<br />
* AM: "Victor plays dancing video games all the time; that doesn't necessarily mean he knows how to dance."<br />
* KP: "No, he'll probably just wait around in his person... drawn... carriage..." / AM: "You mean a rickshaw?"<br />
* AM: "Ahhhhh, stupid quotes page! I haven't been working for like ten minutes."<br />
* RB: "I don't know if I really want to let girls play with my gun."<br />
* AM: "I love LaTeX; it's like a mystery. Every time you compile, you never know what you're going to get."<br />
* SG: [to the tune by Cutting Crew] "I ... just compiled in your arms tonight. Must have been somethin' you typed."<br />
* KP: "My numbers are a little off..." / AM: "Just blame it on numeric instability and move on."<br />
* MZ: "I can't believe we didn't notice that k*sin(x) before. Where do you get your springs Yaz? Does McMaster have like a weird section?"<br />
* KP: "I'm going to have to side with PartyAdam on this one." / AM: "And you know how much it pains him to say that so it must be true."<br />
* AM: [in reference to an argument that spurred about whether quotes should go at the top or the bottom of each section] "I'm going to have to agree with RA Kyle on this one." / KP: "And you know how much it pains him to say that so it must be true."<br />
* SG: "Tron in 3D would be better than a trip to Disney World."<br />
<br />
== Summer 2010 ==<br />
<br />
* AM: "It's more confusing when I get it!"<br />
* DB: [In reference to WRT160NL routers] "This isn't like the other children. It's something different."<br />
* Krenz: "There's light at the end of the tunnel and it's not a train."<br />
* AK: "I'm so confused by this new ls."<br />
* DB: "Do I need to sacrifice goat entrails to the new Fedora 13 for you to be happy with it?"<br />
* AG: "Does anyone here know Perl." / DB: "It is an abomination."<br />
* AK: [Commit message] "fixed first bug after the last bug"<br />
<!-- * AK: "killall batch grading... killall xterm... " / DB: "killall students..." --><br />
* DB: "Just add like three more zeros to it. Screw it. ... Okay maybe three zeros was a little much."<br />
* KP: "Why can't the phone work like this." / DB: "Because the phone is not a stepper motor." / KP: "Can I write a thesis on M&M dispensing?"<br />
* AM: "Can we just set it back to Fedora 1 and leave it there?"<br />
* KP: "How long could it take to write an essay for your diet coke of a thesis?"<br />
* SG: "I can't believe I ran into a f*cking pole."<br />
* SG: "I expected more blinking and less doing nothing."<br />
* KP: "Have you ever had Pita Bros?" / DB: "No, where's that?" / KP: "It's the hybrid electric cart that parks by campus selling food." / DB: "Oh, no don't eat there that's a good way to get botulism."<br />
* AK: "Who castrated the ARP command?"<br />
* DB: "If the Ethernet device is a fire hose and the serial device is a garden hose, where should the excess water go?" / KP: "The pool."<br />
* KT: "We need to break a router so we have a reason to use the debricker." / KP: "There's a whole pile of reasons right over there."<br />
* KP: [shakes head] / KT: "Have I failed in some way?"<br />
* KP: "Let's boot this b*tch!"<br />
<br />
== Spring 2010 ==<br />
<br />
* AM: "Babies are like larvae that evolve into people."<br />
* KT: "I use tilde all the time." / DB: "Maybe a little too much."<br />
* KT: [after using a configure script that accidentally made a directory named ~] "I was trying to remove the ~ directory. I tried ''rm -r ~'' and the system complained about files in use. I thought that was weird, so I used the ''-f'' force option [resulting in ''rm -rf ~'']. When I tried to use ''make'', it said file not found and that is when I realized I deleted my home directory."<br />
* AM: "What does that mean?" / MS: "You can't eat Catholics on Friday."<br />
* DB: "These little details are like sorting your M&Ms by color before you eat them." / ZL [who is color deficient]: "I always do that. It's good practice." / DB: "Bad example."<br />
<br />
== Fall 2009 ==<br />
<br />
* AK: "If you fail [the GRE] every time, that's a hint."<br />
* ZL: [Talking about the sound coming from the VoIP speakers] "That's a new one. I like it. You could almost dance to it." / AK: "Really quickly."<br />
* ZL: "Do you live here [in the lab]?" / DS: "If that isn't the pot calling the kettle black..." / ZL: "You make a good point."<br />
* AM: "When does grad school get fun?" / DB: "When you are done, and you look back on it fondly, and you have a high paying doctoral job."<br />
* AM: "It's Friday. Who am I kidding?"<br />
* MK: "I'm going to be using this [red pen] all semester. It will be a good investment."<br />
* FH: "Not that it's my thing, but there is no alcohol allowed, right?"<br />
* DB: [After setting a bag of candy on the table] "Marquette Dental School appreciates your business."<br />
* DB: "Thesis first!"<br />
* Steve Merrill: [While working with MATLAB] "FAIL!"<br />
* ZL: "...or we could throw it off the balcony." / DB: "NO!"<br />
* ZL: "I have a plan to test that. It requires three computers." / DB: "I like it already."<br />
<br />
== Summer 2009 ==<br />
<br />
* DB: "Why is this not working?" / MS: "Morbius is not promiscuous enough."<br />
* AM: "Isn't holy water hard to come by?"<br />
* DB: [Speaking about AM's meeting with CS] "We also don't recognize [Struble] as a valid commitment."<br />
* RB: "Don't just sit there and gloat at me."<br />
* RB: "Jokes don't really work right now. Sorry."<br />
* AM: "Ruining my body with one substance is enough."<br />
* AM: "I need someone to hold my hand when I go get a haircut."<br />
* AM: "Everyone sounds lame when they post on girls' walls."<br />
* AM: "I'm in Cudahy. I work here and live here."<br />
* DB: "Adam counts as -1." / AG: "Only one?"<br />
* ZL: "It sounds like crap but it corresponds."<br />
* DB: "I will be the supportive advisor this evening." / MS: [Sarcastically] "What a change."<br />
* AM: "In dangerous situations, that's when it's best to drink<br />
* AG: "Yeah. We played Wii bowling. And I learned how to play Magic." / DB: "Ohh noo. It's like supervoc being taking over by the mad man. Once SV7 is gone its all downhill."<br />
* DM: "Iran. Iraq. IRAW."<br />
* AG: "You can only flash something once." / ZL: "Clearly, because you get arrested after that."<br />
* AM: "I was rushing because I needed to be here by 3pm today."<br />
* MS: "He just put a hack on top of a hack on top of a hack." / AG: "You don't have a network stack, you have a network hack." / ZL: "You have a network pile."<br />
* AK: "Someone wrote on our table." / Anonymous: "Kill them."<br />
* DB: [Talking about hair] "That's not a matter of personal preference; that's correct."<br />
* AM: "There would be so many good quotes if we allowed f-words."<br />
* MS: [Speaking to DB's friends] "You might want to bring your own videos."<br />
* RB: "Oh no. It works consistently. It gets my hopes up only to shatter them."<br />
* ZL: "It's good. But.." / AG: "But, It looks like I cheated. ... You got to cheat sometimes."<br />
* DH: "Why would I doubt you, you are a student whose life depends on following the rules, I am only Director of a program which is supposed to enforce the rules."<br />
* AK: "Yeah. I'm pretty much done. I'm wasted."<br />
* AG: "I fear ugliness."<br />
* AM: "Chicks dig werewolves."<br />
* AM: "Computers should never take this long to do something unless its awesome." / GV: "Did you press the turbo button?"<br />
* RB: [To AM] "You're going to make some freaky girl very happy someday."<br />
* AG: "It looked like you were conducting an orchestra." / MS: "Well, I was composing an email."<br />
* RB: "I feel like I am using beta every time I log into Windows."<br />
* ZL: "Get it done. Testing is not important."<br />
* DB: "What's wrong with you people?"<br />
* ZL: "The thing is, when I do say something offensive, it's very good."<br />
* AM: "The sooner I get kicked out of the lab, the sooner I can start drinking."<br />
* MS: [Commit message] "Updated the Xinu banner for version 2.0. We can release now."<br />
<br />
== Spring 2009 ==<br />
<br />
* AM: "Do you really want me in charge of something that affects another human being?"<br />
* TB: "Sleep sounds amazing right now." / AM: "Oh my god...does it ever!"<br />
* ZL: "I'm all about making fun of people while they're in the room."<br />
* DB: "The Internet is a vast wasteland of sewage."<br />
* DB: "I won't say it's fixed, but I have now intervened on your behalf."<br />
* Zachary's Girlfriend: "Darn. I am taking on Brylow traits."<br />
* DB: "You can think of them as ornaments hung on a syntax tree."<br />
* AK: "purged Tim from nvram"<br />
* AK: "If you want some sort of base for how sick I still feel just insert a burst of coughing after each sentence while reading this email."<br />
* DB: "The rat gets nothing!"<br />
* AG: "My brain operates at 10,000 Gemberflops per second."<br />
* AG: "I'm not saying it's my opinion. I'm just saying its Adolph's opinion."<br />
* DB: "He's celebrating the month of feasting."<br />
* DB: "There's a special travel dispensation for pretzels."<br />
* CS: "I'm not very quotable."<br />
* AM: "Oh, it's travelling up in my butt."<br />
* AK: "I shut off Slayer while we are gone." / MS: "I'm sure Mawdryn will turn itself off, too."<br />
* AM: "My room mate never plays with me."<br />
* MS: "I just made a mess on the seat."<br />
* TB: "I don't need a haircut - I am representing myself at this conference."<br />
* AM: [Referring to high performance gum] "It is just like high performance computing: it's really really good for a really really short period of time."<br />
* AK: [Speaking to Brylow] "We just got out of Cracker Barrel and you are already eating pretzels."<br />
* AM: "Oh my God - Dinosaur World. We are skipping SIGCSE."<br />
* TB: "Yeah, my life is a joke sometimes."<br />
* TB: "One of these days I'll get English right."<br />
* Presenter at SIGCSE 2009: "I mean, it's kind of fun to trash your operating system."<br />
* TB: "I like to let my hair air-dry. It poofs better."<br />
* ZL: "I would not want Tim on my team for a game of telephone."<br />
* DB: "They're not pretzel rods, they're fuel rods."<br />
* DB: "But that's non-linear board usage. I never do that."<br />
* AK: "There's a lot more TODOs where those came from."<br />
* DB: [Said to an almost empty lab] "Aren't I paying a bunch of students to work for me?"<br />
* AM: "Aww we all got laser pointers! This is gonna rule!"<br />
* TB: "I thought I fixed everything doing nothing. It happens so many times."<br />
* [A discussion on going to the bar in a lab of all guys] / AG: "We're probably not as good looking as Victoria." / AM: "Yeah, and she has a boyfriend...but none of you have boyfriends."<br />
* DB: "Just for funsies."<br />
* TB: [As AM points a laser pointer at TB] "I feel like I'm being sniped."<br />
* Ryan Feil: [Speaking in the lab of an operating systems assignment] "Shouldn't there be more people here scrambling to get this done."<br />
* MS: [As DB writes "IP Stack" on the board] "Ha ha. He pees stack. IP urine."<br />
* ZL: "Really all we have right now are questions."<br />
* MS: [On a sheet of paper hidden among AM's homework] "#6. Thm: Adam sucks! Ha ha. / Pf: trivial."<br />
* ZL: "I should just source control my...everything."<br />
* DB: "English is not sufficient for teaching compilers."<br />
* TB: "That's it. It's 100 percent done."<br />
* TB: "We were 100 percent done. We just need to get more speed-up."<br />
* AG: "So, Tim, when you are 30, will you say your life is 100 percent done?"<br />
* AG: "make tim: now compiling nonsense.c"<br />
* DB: "Oh, here we go: proof by rant. That's a new one."<br />
* AM: "Do you really want me representing this school." / DB: [Out of context] "No."<br />
* AG: "If I leave the lab, I feel like I'm leaving civilization behind."<br />
* AG: [Browsing through Mike's wedding gift registry] "Xinu only has 50 threads. The sheets Mike wants have 410, but they don't have memory protection."<br />
* AK: "Oh good Brylow left. Now I can leave."<br />
* AK: [First commit message] "modified some ifthenelse stuff to look a little more like class" / [Second commit message] "removed the code I added to ifthenelse, it made no sense and didn't compile"<br />
* DB: [To a prospective student touring the System's Lab] "Ignore the rat."<br />
* MS: [Discussing DB's tests] "Why would you study for his test? You are either screwed or not screwed...it's fairly binary."<br />
* MS: [Left a message for AG] "I hax0rd your boxor!"<br />
* AM: "Oh look. She dumped me on Facebook. Awesome!"<br />
* DB: "Don't stroke the yeast colony."<br />
* MS: [Speaking of his yeast colony] "It's free!" / DB: "Don't release it!"<br />
* MS: "If I just get really offensive and harsh with what I say then I won't get quoted any more."<br />
* DB: "Alright, I'm going home. See you in the morning." / ZL: "The morning. Really?" / DB: "Well no."<br />
* MS: [Anticipating DB's response to new advisees] "You want to be my advisee. Kiss the clock."<br />
* MS: "It is much more important to see me being reamed up the ass."<br />
* JA: [Discussing potential names of Dan Mahoney's future son] "Name him your last name backwards so he can be a palindrome."<br />
* AK: "Big setup no follow through." / AG: "I'm all about that." / MS: "That's what she said."<br />
* DB: "That's not an algorithm; that's a sweatshop."<br />
* Lyndsie: "High school cheer leading is even on ESPN." / MS: "That is really sweet!"<br />
* AM: "I always assume that everyone in the world is just listening to me to talk. I also assume that people just follow me around just to listen to me."<br />
* AM: "Every time Tim opens his mouth to say something about the poster, you just close your eyes and pray."<br />
* DB: "This will all work out right? Induction through hand-waving."<br />
* DB: "Except it's like fake adoption, where it turns out the child is actually yours."<br />
* "If you're concerned about that you're probably in the wrong major, because we're going to build skynet."<br />
* DB: "So we are selling you to indentured servitude now?" / AM: "I hope so, then I get free passage to the new world."<br />
* DB: "Why do you work here?"<br />
* AM: "I have three desks worth of space just taken up with garbage and shit."<br />
* Anonymous: "You know, pretty soon that relationship will be 100% done."<br />
<br />
== Fall 2008 ==<br />
<br />
* MN: [Talking about the large rubber rat] "I don't get paid enough to have this thing look at me."<br />
* AK: "Now that grading's done, I deserve a pretzel."<br />
* AG: "I haven't even started, and I already feel defeated." / MS: "Welcome to graduate school."<br />
* ''RFC 793: Transmission Control Protocol'': "When the original SYN (pun intended) finally arrives at line 6, the synchronization proceeds normally."<br />
* AM: "If I think more than 30 seconds into my own future I start to panic."<br />
* AM: "Once again, I've solved the problem, but the computer has failed to see my genius."<br />
* DB: "It takes many years of sucky teaching to learn how to teach well. You have to start sucking somewhere."<br />
* TB: "When you get the packet it is all going to be out of order."<br />
* MS: "I was going to ask you what they stood for, but I knew the answer was: 'Get the hell out of my office Mike.'"<br />
* DB: "You have the plague now too?"<br />
* AK: "It was like Tim's brain on a piece of paper."<br />
* AK: "His abstract was words in a paint can and all he did was throw it on a poster."<br />
* TB: "Yeah, how did we get sidetracked." / AM: "I started talking."<br />
* DB: "Now US-41 through Terre Haute, that's the corridor of hell."<br />
* Zachary's Sister: [Upon visiting the Systems Lab] "It's like having six zacs."<br />
<br />
== Summer 2008 ==<br />
* linux-2.6.25.9/lib/iomap.c: Ugly macros are a way of life.<br />
* ../net/tcp/tcpTimer.c:101: error: ‘rum’ undeclared (first use in this function)<br />
* BH: "Vim has a learning curve." / MS: "No, it's a line."<br />
* MS: "[re: Firefox Plushie] Wow, that look more like a raccoon to me. And wouldn't that just make people position Linux Tux and Firefox Fux is various explicit positions? Or is that just me?" / DB: "Yes, Michael. It is just you. And I don't think the Firefox mascot's proper name is 'Fux.'"<br />
* JP: "I'm laughing because my nose itches."<br />
* JP: "I'm not going to start my own business. For a business to work, the owner has to care."<br />
* MS: "''Broken Beyond Syntax'', that's going to be the title of my autobiography."<br />
<br />
== Spring 2008 ==<br />
* AK: "[online review of sushi place in Portland with Aaron] Sit in the lounge. The red chairs are very comfortable. The food was really good too. Had some chicken dish, don't remember what it was called."<br />
* JP: "I'm not saying it's my opinion, I'm just saying it's an opinion."<br />
* JP: "Yeah, that's just fool complicated."<br />
* AG: "Even Tim's pictures have bugs in them."<br />
* AK: "Warnings mean you are smarter than the compiler!"<br />
* AG: "Do you use text messaging?" / JP: "What's that?"<br />
* AG: "I feel like doing something. What should I do?" / PH: "Go home."<br />
* DB: "Any questions? What else have I forgotten to tell you?" (email to lab) / Response: "The XINU lab notes that you forgot to tell us that you love us."<br />
* DB: "Traditionally, graduate students get a bed to themselves in this situation."<br />
* PH: "I'm really going to enjoy watching the commits to this branch."<br />
* ZL: "Voc and Supervoc joined at the UART"<br />
* George Corliss: "Verbose. Minus 5."<br />
* Steve Merrill: "Publish! Publish! Publish!" (walking down the hall past junior faculty offices)<br />
* JP: "I am just participating cause I'm standing here."<br />
* JP: "New commands are silly."<br />
* JP: "I've solved all kinds of problems in my life that no one's ever solved before."<br />
* AG: "You know scheme. I know scheme. We all scheme for ice cream."<br />
* DB: "I like StarTrek, but that would be less a hobby and more an investment."<br />
* MS: "Subtract two." / MN: "Why?" / MS: "...because I said so." / MN: "...alright..." / MS: "...and then when that doesn't work subtract four. But two should work." / MN: "Two didn't work." / MS: "Damnit! Subtract four." (Conversation continues in a similar fashion until Matt ends up subtracting eight.)<br />
* DB: "So they basically made a hammer and went after everything that could be a nail."<br />
* JP: "This is so unfair to us petty criminals."<br />
* DB: "We'll all be getting eye transplants soon."<br />
* DB: "''I'' am somehow derived from C." (on the ubiquity of the C programming language)<br />
* JP: "First you have to get the $3,000 license for the whizbang that does all the work."<br />
* DB: "I don't remember what the silly window is, but it must be important."<br />
* AK: "[UML is] just a bunch of boxes on paper."<br />
* DB: "Java has corrupted you all."<br />
* KJ: "There are some fonts that ''really'' spread out a paper." (discussing parameters for COSC 198 term paper)<br />
* DB: "You're telling me to put in less work. I'm not going to argue with you."<br />
* ''See MIPS Run, 2nd Ed.'': "When we finally make contact with aliens, their wheelbarrows will have round wheels and their computers will probably use fixed-size pages."<br />
* ''RFC 826: An Ethernet Address Resolution Protocol'': "The world is a jungle in general, and the networking game contributes many animals."<br />
<br />
== XINU Pith ==<br />
* XINU Cometh.<br />
* XINU Returneth.<br />
* XINU Calls.<br />
* XINU Returns.<br />
* XINU Creates.<br />
* XINU Reschedules.<br />
* XINU Saves and Restores.<br />
* XINU Preempts.<br />
* XINU Comes Not to JUDGE, But to EXECUTE...<br />
* XINU Knows Your Inmost Firmware.<br />
* XINU Brings New Life to Old Hardware.<br />
* XINU Waits.<br />
* XINU Allocates.<br />
* XINU Deallocates Away.<br />
* XINU Tastes Great.<br />
* XINU Has Less Filling.<br />
* XINU Runs FOREVER.<br />
* XINU Eschews Obfuscation.<br />
* XINU Does Not Do Windows.<br />
* XINU Brings ORDER out of CHAOS.<br />
* XINU Brings CHAOS from ORDER.<br />
* He Whoever Believes in XINU Shall Have Eternal Processing.<br />
* XINU Shall Run Again.<br />
* XINU Is Not UNIX.<br />
* XINU. It's What's For Dinner.<br />
* No XINU and No Mips Make Homer Something Something...<br />
* See XINU. See XINU Run. Run XINU Run.<br />
* XINU Allocateth, XINU Deallocateth Away.<br />
<br />
== Abbreviations ==<br />
{| <br />
|-<br />
|'''Abbreviation''' &nbsp;&nbsp;&nbsp;&nbsp; || '''Name'''<br />
|-<br />
| AB || Alex Becherer<br />
|-<br />
| AG || Aaron Gember<br />
|-<br />
| AK || Adam Koehler<br />
|-<br />
| AM || Adam Mallen<br />
|-<br />
| AW || Adam Welc<br />
|-<br />
| BH || Brandon Hahn<br />
|-<br />
| CS || Craig Struble<br />
|-<br />
| DB || Dennis (or Dr.) Brylow<br />
|-<br />
| DH || Doug Harris<br />
|-<br />
| DM || Dan Mahoney<br />
|-<br />
| DS || Devin Sigulinsky<br />
|-<br />
| FH || Fran Hurtado<br />
|-<br />
| FX || Farzeen Harunani<br />
|- <br />
| GV || Gabe Van Eyck<br />
|-<br />
| JC || Jackson Cohen<br />
|-<br />
| JL || Jason Laqua<br />
|-<br />
| JP || Justin Picotte<br />
|-<br />
| JA || Joe Pintozzi<br />
|-<br />
| JJ || JJ Puccetti<br />
|-<br />
| KB || Kaleb Breault<br />
|-<br />
| KJ || Kyle Jackson<br />
|-<br />
| KP || Kyle Persohn<br />
|-<br />
| KS || Karl Stamm<br />
|-<br />
| KT || Kyle Thurow<br />
|-<br />
| MB || Matt Bajzek<br />
|-<br />
| MI || Mike Slattery<br />
|-<br />
| MK || Matthias Kohler<br />
|-<br />
| MN || Matt Netkow<br />
|-<br />
| MS || Michael Schultz<br />
|-<br />
| MZ || Michael Ziwisky<br />
|-<br />
| NJ || Nick Jelen<br />
|-<br />
| PH || Paul Hinze<br />
|-<br />
| PS || Paul Spillane<br />
|-<br />
| RV || Ryan Vogt<br />
|-<br />
| SG || Steven Gago<br />
|-<br />
| TB || Tim Blattner<br />
|-<br />
| TM || Tyler Much<br />
|-<br />
| VB || Victor Blas<br />
|-<br />
| ZL || Zachary Lund<br />
|-<br />
|}</div>Brylowhttps://xinu.cs.mu.edu/index.php?title=Systems_Laboratory&diff=3989Systems Laboratory2012-09-19T15:54:09Z<p>Brylow: /* Current Students */</p>
<hr />
<div>== About the Systems Laboratory ==<br />
<br />
[http://www.mu.edu/ Marquette]'s [[Systems Laboratory]], under the direction of [http://www.mscs.mu.edu/~brylow/ Dr. Dennis Brylow] in the [http://www.mscs.mu.edu/ Department of Mathematics, Statistics, and Computer Science], is housed on the third floor of Cudahy Hall.<br />
<br />
The lab creates new tools and methods for building and studying complex computer systems. Our emphasis is on embedded, real-time, and network systems, with strong ties to the electrical and computer engineering community, and the computer science education community. Current and recent projects include:<br />
<br />
1. Experimental Embedded Networking Platform. Creation of laboratory infrastructure and software for research and education in the area of embedded networking appliances, particularly wireless routers and IP telephony. Collaboration with Cisco Systems Advanced Research Division.<br />
<br />
2. Experimental Embedded Operating System Laboratory. Creation of laboratory infrastructure and software for research and education in area of embedded operating systems. Collaboration with University of Buffalo and University of Mississippi, with funding from the [http://www.nsf.gov/ National Science Foundation].<br />
<br />
3. Embedded Software Transactional Memory. Exploration of an innovative transactional memory model for guaranteeing process synchronization in embedded operating systems. Collaboration with Intel Research.<br />
<br />
4. Many-core Embedded Operating System Laboratory. A port of Embedded Xinu to the [http://techresearch.intel.com/ProjectDetails.aspx?Id=1 48-core SCC processor].<br />
<br />
The Systems Lab hosts undergraduate [http://acm.mscs.mu.edu/reu REU] (Research Experience for Undergraduates) students each summer, funded by a variety of sources including<br />
MU's College of Arts and Sciences and the [http://www.nsf.gov/ National Science Foundation].<br />
<br />
See the MSCS [http://www.marquette.edu/mscs/facstaff-research-labs.shtml Research Labs] page for more research laboratories in our department.<br />
<br />
== Publications ==<br />
<br />
=== Conference Proceedings and Journals ===<br />
<li>Michael Ziwisky and Dennis Brylow. BareMichael: A Minimalistic Bare-metal Framework for the Intel SCC.<br />
In <i>Proceedings of [http://hal.archives-ouvertes.fr/MARCONERA2012 MARC Symposium 2012]: 6th Many-core Applications Research Community (MARC) Symposium</i>, Eric Noulard and Simon Vernhes (Ed.), ONERA - Toulouse, France, July 2012.<br />
[http://hal.archives-ouvertes.fr/docs/00/71/90/38/PDF/MARC6_BareMichael-A-Minimalistic-Bare-metal-Framework-for-the-Intel-SCC.pdf (link)]<br />
<br />
<li>Paul Ruth and Dennis Brylow. An Experimental Nexos Laboratory Using Virtual Xinu. In <i>Proceedings of [http://fie-conference.org/fie2011/ FIE 2011]: 41st ASEE/IEEE Frontiers in Education Conference</i>, pages S2E-1-S2E-6, Rapid City, South Dakota, October 2011. <br />
[http://dx.doi.org/10.1109/FIE.2011.6143069 (link)]<br />
<br />
<li>Kyle Persohn and Dennis Brylow. Interactive Real-Time Embedded Systems Education Infused with Applied <br />
Internet Telephony. In <i>Proceedings of [http://compsac.cs.iastate.edu/ COMPSAC 2011]: 35th IEEE Computer Software<br />
and Applications Conference</i>, pages 199-204, Munich, Germany, July 2011.<br />
[http://dx.doi.org/10.1109/COMPSAC.2011.33 (link)]<br />
<br />
<li>Dennis Brylow and Kyle Thurow. Hands-on Networking Labs With Embedded Routers. In <i>Proceedings of [http://www.sigcse.org/sigcse2011/ SIGCSE 2011]: The 42nd ACM Technical Symposium on Computer Science Education</i>, pages 399-404, Dallas, Texas, March 2011.<br />
[http://doi.acm.org/10.1145/1953163.1953283 (link)]<br />
<br />
<li>Matt Netkow and Dennis Brylow. Xest: An Automated Framework for Regression Testing of Embedded Software. In <i>Proceedings of [http://www.artist-embedded.org/artist/-WESE-10-.html WESE 2010]: 6th Workshop on Embedded Systems Education</i>, pages 40-47, Scottsdale, Arizona, October 2010.<br />
[http://www.artist-embedded.org/docs/Events/2010/WESE/Proceedings_WESE_2010.pdf (link)]<br />
<br />
<li>Adam Mallen and Dennis Brylow. Compiler Construction With A Dash of Concurrency and An Embedded Twist. In <i>Proceedings of [http://splashcon.org/ SPLASH 2010]: Systems, Programming, Languages, and Applications: Software for Humanity</i> (formerly OOPSLA) Educators' and Trainers' Symposium, pages 161-168, Reno, Nevada, October 2010. <br />
[http://dx.doi.org/10.1145/1869542.1869568 (link)]<br />
<br />
<li>Dennis Brylow and Bina Ramamurthy. Nexos: A Next Generation Embedded<br />
Systems Laboratory, In <i>Proceedings of WESE 2008: 4th Workshop on Embedded<br />
Systems Education</i>, pages 10-17, Atlanta, Georgia, October 2008.<br />
[http://www.lulu.com/content/3613764 (link)]<br /><br />
Extended version in <i>SIGBED Review</i>, Volume 6, Number 1, January 2009.<br />
[http://www.cs.virginia.edu/sigbed/archives/2009-01/j-7-wese-journal-p18-final-brylow.pdf (link)]<br />
<br />
<li>Dennis Brylow. An Experimental Laboratory Environment for Teaching Embedded <br />
Operating Systems, In <i>Proceedings of [http://www.cs.duke.edu/sigcse08/ SIGCSE 2008]: The 39th ACM Technical Symposium on Computer Science Education</i>, pages 192-196, Portland, Oregon, March 2008. [http://doi.acm.org/10.1145/1352322.1352201 (link)]<br />
<br />
<li>Dennis Brylow. An Experimental Laboratory Environment for Teaching Embedded Hardware Systems, In <i>Proceedings of<br />
[http://www.ncsu.edu/wcae/ISCA2007/FinalProgram.html WCAE 2007]:<br />
Workshop on Computer Architecture Education</i>,<br />
pages 44-51, San Diego, California, June 2007.<br />
[http://www.mscs.mu.edu/~brylow/papers/Brylow-WCAE2007.pdf (link)]<br />
<br />
=== Posters and Undergraduate Research ===<br />
<br />
<li> Kyle Thurow and Dennis Brylow. A Network Emulator on Embedded Xinu.<br />
Poster presentation and research talk presented at [http://www.sigcse.org/sigcse2010/ SIGCSE 2010]<br />
[http://src.acm.org/ ACM Student Research Competition], undergraduate division, Milwaukee, Wisconsin, March 2010. Kyle placed in the top five and advanced to the semi-finals round.<br />
<br />
<li> Gabe Van Eyck and Dennis Brylow. Xinu as a Multi-Core Operating<br />
System on the PlayStation 3. Poster presentation at [http://www.sigcse.org/sigcse2010/ SIGCSE 2010]<br />
[http://src.acm.org/ ACM Student Research Competition], undergraduate division, Milwaukee, Wisconsin, March 2010.<br />
<br />
<li> Aaron Gember and Dennis Brylow. Real-Time TCP Extensions. Poster<br />
presentation and research talk presented at [http://www.cs.arizona.edu/groups/sigcse09/ SIGCSE 2009]<br />
[http://src.acm.org/ ACM Student Research Competition], undergraduate division, Chattanooga, Tennessee. Aaron advanced to<br />
semi-finals, placed in top<br />
three finalists, and advanced to the grand finals.<br />
<br />
<li>Dennis Brylow. Experimental Operating System Lab On A Dime.<br />
[http://www.cs.potsdam.edu/sigcse07/ SIGCSE 2007]: Technical Symposium on Computer Science Education, Covington, Kentucky,<br />
March 2007. [http://www.mscs.mu.edu/~brylow/papers/Brylow-SIGCSE2007.pdf (link)].<br />
<br />
=== Workshops ===<br />
<br />
<li> Paul Ruth and Dennis Brylow. Teaching With Embedded Xinu. Workshop<br />
accepted at [http://www.cs.olemiss.edu/acmse2010/Home.htm ACMSE 2010]:<br />
The 48th ACM Southeast Conference, Oxford, Mississippi, April 2010.<br />
<br />
<li>Dennis Brylow and Paul Ruth. Teaching With Embedded Xinu. Workshop<br />
accepted at [http://www.sigcse.org/sigcse2010/ SIGCSE 2010]:<br />
The 41st ACM Technical Symposium on Computer Science Education, Milwaukee,<br />
Wisconsin, March 2010.<br />
<br />
== Lab Equipment ==<br />
<br />
The [[Systems Laboratory]] is populated with dual-headed Linux boxes running the latest version of [http://fedoraproject.org/ Fedora Linux].<br />
Other workstations in the lab include a dual-core Apple G5 running OS X, and several multi-core boxes for higher-end computation.<br />
<br />
The Xinu Laboratory component of the Systems Lab includes a pool of 24 WRT54GL wireless routers organized into a managed embedded<br />
backend pool, as well as smaller quantities of half a dozen other router types. Embedded development kits available include<br />
the Freescale/Motorola [http://www.evbplus.com/hcs12.html 68HC12 Dragon12] board,<br />
the Atmel [http://www.atmel.com/dyn/products/tools_card.asp?tool_id=2717 AT91 Series ARM Thumb] AT91EB40A board,<br />
the [http://www.atmel.com/products/AVR/butterfly ATmega169 Butterfly],<br />
a Zilog [http://www.zilog.com/docs/z8/devtools/z86ccp01zem.pdf Z86 Emulator Z86CCP01ZEM],<br />
and the Zilog [http://www.zilog.com/index.php?option=com_product&Itemid=26&mode=showProdDet&businessLine=1&familyId=6&productId=Z8F04A28100KIT Z8 Encore XP Dev Kit Z8F04A28100KIT-C].<br />
<br />
The Systems Lab includes both a private research network with our own gateway and firewall, and connections to each of the MSCS department production networks.<br />
The Lab also hosts Subversion, Trac, and Web service for the Marquette Student [http://acm.mscs.mu.edu/ ACM Chapter], the<br />
[http://mulug.mscs.mu.edu/ Marquette University Linux Users Group], and a stratum 2 NTP server for campus.<br />
<br />
== Lab Personnel ==<br />
<br />
=== Current Students ===<br />
<br />
[[File:XINU-Summer2011.png|800px|thumb]] The Xinu Team in Summer 2011.<br />
<br />
From left,<br />
[http://jasoncowdy.com/ Jason Cowdy],<br />
[http://www.linkedin.com/pub/kyle-persohn/31/a31/990 Kyle Persohn],<br />
[http://www.facebook.com/MattBajzek Matt Bajzek],<br />
[http://www.linkedin.com/pub/paul-spillane/22/a07/56b Paul Spillane],<br />
[http://www.mscs.mu.edu/~brylow/ Dr. Dennis Brylow],<br />
Anna Whitley, and<br />
[http://www.linkedin.com/pub/blas-victor/27/781/351 Victor Blas].<br />
Not pictured:<br />
[http://mziwisky.wordpress.com/ Mike Ziwisky].<br />
<br />
Current Systems Lab students in 2012: [http://www.linkedin.com/pub/kyle-persohn/31/a31/990 Kyle Persohn],<br />
[http://www.facebook.com/MattBajzek Matt Bajzek],<br />
[http://mziwisky.wordpress.com/ Mike Ziwisky], Ethan Weber, Teddy Sudol, Alex Becherer, Heather Bort.<br />
<br />
=== Alumni ===<br />
<br />
[http://phinze.com Paul Hinze], B.S. 2008. Currently works as a developer for [http://braintreepayments.com Braintree].<br />
<br />
[http://research.engineering.wustl.edu/~schultzm/ Mike Schultz], M.S. 2009. Now at [http://cse.wustl.edu/Pages/default.aspx Washington University in St. Louis] doctoral program.<br />
<br />
Tim Blattner, B.S. 2009. Now at [http://www.cs.umbc.edu/ University of Maryland - Baltimore County] doctoral program.<br />
<br />
[http://www.gemberdesign.com/ Aaron Gember], B.S. 2009. Now at [http://www.cs.wisc.edu/ University of Wisconsin-Madison] doctoral program.<br />
<br />
[http://netkow.com/ Matt Netkow], B.S. 2009. Now works as a developer for [http://www.savogroup.com/ The SAVO Group].<br />
<br />
Adam Mallen, B.S. 2009. Now at [http://www.marquette.edu/mscs/ Marquette University] doctoral program in Computational Sciences with an emphasis in Math.<br />
<br />
Adam Koehler, M.S. 2010. Now at [http://www1.cs.ucr.edu/index.php University of California Riverside] doctoral program.<br />
<br />
[http://www.zacintosh.com/ Zachary Lund], M.S. 2010. Now works as the lead developer for [http://www.savtrans.com/ SAV Transportation Group].<br />
<br />
Joseph Pintozzi, B.S. 2010. Now works as a developer for [http://core-apps.com/ Core-Apps, LLC].<br />
<br />
[http://www.linkedin.com/pub/paul-spillane/22/a07/56b Paul Spillane], B.S. 2010, M.S. 2012. Now works as a quality assurance analyst at [http://www.zywave.com/ Zywave].<br />
<br />
[http://www.linkedin.com/pub/blas-victor/27/781/351 Victor Blas], B.S. 2012. Now works as a developer at [https://www.acuity.com/ Acuity].<br />
<br />
[http://www.linkedin.com/pub/kyle-persohn/31/a31/990 Kyle Persohn], M.S. 2012. Embedded Software Engineer at [http://www.rockwellautomation.com/ Rockwell Automation].</div>Brylowhttps://xinu.cs.mu.edu/index.php?title=Systems_Laboratory&diff=3988Systems Laboratory2012-09-19T15:51:19Z<p>Brylow: /* Alumni */</p>
<hr />
<div>== About the Systems Laboratory ==<br />
<br />
[http://www.mu.edu/ Marquette]'s [[Systems Laboratory]], under the direction of [http://www.mscs.mu.edu/~brylow/ Dr. Dennis Brylow] in the [http://www.mscs.mu.edu/ Department of Mathematics, Statistics, and Computer Science], is housed on the third floor of Cudahy Hall.<br />
<br />
The lab creates new tools and methods for building and studying complex computer systems. Our emphasis is on embedded, real-time, and network systems, with strong ties to the electrical and computer engineering community, and the computer science education community. Current and recent projects include:<br />
<br />
1. Experimental Embedded Networking Platform. Creation of laboratory infrastructure and software for research and education in the area of embedded networking appliances, particularly wireless routers and IP telephony. Collaboration with Cisco Systems Advanced Research Division.<br />
<br />
2. Experimental Embedded Operating System Laboratory. Creation of laboratory infrastructure and software for research and education in area of embedded operating systems. Collaboration with University of Buffalo and University of Mississippi, with funding from the [http://www.nsf.gov/ National Science Foundation].<br />
<br />
3. Embedded Software Transactional Memory. Exploration of an innovative transactional memory model for guaranteeing process synchronization in embedded operating systems. Collaboration with Intel Research.<br />
<br />
4. Many-core Embedded Operating System Laboratory. A port of Embedded Xinu to the [http://techresearch.intel.com/ProjectDetails.aspx?Id=1 48-core SCC processor].<br />
<br />
The Systems Lab hosts undergraduate [http://acm.mscs.mu.edu/reu REU] (Research Experience for Undergraduates) students each summer, funded by a variety of sources including<br />
MU's College of Arts and Sciences and the [http://www.nsf.gov/ National Science Foundation].<br />
<br />
See the MSCS [http://www.marquette.edu/mscs/facstaff-research-labs.shtml Research Labs] page for more research laboratories in our department.<br />
<br />
== Publications ==<br />
<br />
=== Conference Proceedings and Journals ===<br />
<li>Michael Ziwisky and Dennis Brylow. BareMichael: A Minimalistic Bare-metal Framework for the Intel SCC.<br />
In <i>Proceedings of [http://hal.archives-ouvertes.fr/MARCONERA2012 MARC Symposium 2012]: 6th Many-core Applications Research Community (MARC) Symposium</i>, Eric Noulard and Simon Vernhes (Ed.), ONERA - Toulouse, France, July 2012.<br />
[http://hal.archives-ouvertes.fr/docs/00/71/90/38/PDF/MARC6_BareMichael-A-Minimalistic-Bare-metal-Framework-for-the-Intel-SCC.pdf (link)]<br />
<br />
<li>Paul Ruth and Dennis Brylow. An Experimental Nexos Laboratory Using Virtual Xinu. In <i>Proceedings of [http://fie-conference.org/fie2011/ FIE 2011]: 41st ASEE/IEEE Frontiers in Education Conference</i>, pages S2E-1-S2E-6, Rapid City, South Dakota, October 2011. <br />
[http://dx.doi.org/10.1109/FIE.2011.6143069 (link)]<br />
<br />
<li>Kyle Persohn and Dennis Brylow. Interactive Real-Time Embedded Systems Education Infused with Applied <br />
Internet Telephony. In <i>Proceedings of [http://compsac.cs.iastate.edu/ COMPSAC 2011]: 35th IEEE Computer Software<br />
and Applications Conference</i>, pages 199-204, Munich, Germany, July 2011.<br />
[http://dx.doi.org/10.1109/COMPSAC.2011.33 (link)]<br />
<br />
<li>Dennis Brylow and Kyle Thurow. Hands-on Networking Labs With Embedded Routers. In <i>Proceedings of [http://www.sigcse.org/sigcse2011/ SIGCSE 2011]: The 42nd ACM Technical Symposium on Computer Science Education</i>, pages 399-404, Dallas, Texas, March 2011.<br />
[http://doi.acm.org/10.1145/1953163.1953283 (link)]<br />
<br />
<li>Matt Netkow and Dennis Brylow. Xest: An Automated Framework for Regression Testing of Embedded Software. In <i>Proceedings of [http://www.artist-embedded.org/artist/-WESE-10-.html WESE 2010]: 6th Workshop on Embedded Systems Education</i>, pages 40-47, Scottsdale, Arizona, October 2010.<br />
[http://www.artist-embedded.org/docs/Events/2010/WESE/Proceedings_WESE_2010.pdf (link)]<br />
<br />
<li>Adam Mallen and Dennis Brylow. Compiler Construction With A Dash of Concurrency and An Embedded Twist. In <i>Proceedings of [http://splashcon.org/ SPLASH 2010]: Systems, Programming, Languages, and Applications: Software for Humanity</i> (formerly OOPSLA) Educators' and Trainers' Symposium, pages 161-168, Reno, Nevada, October 2010. <br />
[http://dx.doi.org/10.1145/1869542.1869568 (link)]<br />
<br />
<li>Dennis Brylow and Bina Ramamurthy. Nexos: A Next Generation Embedded<br />
Systems Laboratory, In <i>Proceedings of WESE 2008: 4th Workshop on Embedded<br />
Systems Education</i>, pages 10-17, Atlanta, Georgia, October 2008.<br />
[http://www.lulu.com/content/3613764 (link)]<br /><br />
Extended version in <i>SIGBED Review</i>, Volume 6, Number 1, January 2009.<br />
[http://www.cs.virginia.edu/sigbed/archives/2009-01/j-7-wese-journal-p18-final-brylow.pdf (link)]<br />
<br />
<li>Dennis Brylow. An Experimental Laboratory Environment for Teaching Embedded <br />
Operating Systems, In <i>Proceedings of [http://www.cs.duke.edu/sigcse08/ SIGCSE 2008]: The 39th ACM Technical Symposium on Computer Science Education</i>, pages 192-196, Portland, Oregon, March 2008. [http://doi.acm.org/10.1145/1352322.1352201 (link)]<br />
<br />
<li>Dennis Brylow. An Experimental Laboratory Environment for Teaching Embedded Hardware Systems, In <i>Proceedings of<br />
[http://www.ncsu.edu/wcae/ISCA2007/FinalProgram.html WCAE 2007]:<br />
Workshop on Computer Architecture Education</i>,<br />
pages 44-51, San Diego, California, June 2007.<br />
[http://www.mscs.mu.edu/~brylow/papers/Brylow-WCAE2007.pdf (link)]<br />
<br />
=== Posters and Undergraduate Research ===<br />
<br />
<li> Kyle Thurow and Dennis Brylow. A Network Emulator on Embedded Xinu.<br />
Poster presentation and research talk presented at [http://www.sigcse.org/sigcse2010/ SIGCSE 2010]<br />
[http://src.acm.org/ ACM Student Research Competition], undergraduate division, Milwaukee, Wisconsin, March 2010. Kyle placed in the top five and advanced to the semi-finals round.<br />
<br />
<li> Gabe Van Eyck and Dennis Brylow. Xinu as a Multi-Core Operating<br />
System on the PlayStation 3. Poster presentation at [http://www.sigcse.org/sigcse2010/ SIGCSE 2010]<br />
[http://src.acm.org/ ACM Student Research Competition], undergraduate division, Milwaukee, Wisconsin, March 2010.<br />
<br />
<li> Aaron Gember and Dennis Brylow. Real-Time TCP Extensions. Poster<br />
presentation and research talk presented at [http://www.cs.arizona.edu/groups/sigcse09/ SIGCSE 2009]<br />
[http://src.acm.org/ ACM Student Research Competition], undergraduate division, Chattanooga, Tennessee. Aaron advanced to<br />
semi-finals, placed in top<br />
three finalists, and advanced to the grand finals.<br />
<br />
<li>Dennis Brylow. Experimental Operating System Lab On A Dime.<br />
[http://www.cs.potsdam.edu/sigcse07/ SIGCSE 2007]: Technical Symposium on Computer Science Education, Covington, Kentucky,<br />
March 2007. [http://www.mscs.mu.edu/~brylow/papers/Brylow-SIGCSE2007.pdf (link)].<br />
<br />
=== Workshops ===<br />
<br />
<li> Paul Ruth and Dennis Brylow. Teaching With Embedded Xinu. Workshop<br />
accepted at [http://www.cs.olemiss.edu/acmse2010/Home.htm ACMSE 2010]:<br />
The 48th ACM Southeast Conference, Oxford, Mississippi, April 2010.<br />
<br />
<li>Dennis Brylow and Paul Ruth. Teaching With Embedded Xinu. Workshop<br />
accepted at [http://www.sigcse.org/sigcse2010/ SIGCSE 2010]:<br />
The 41st ACM Technical Symposium on Computer Science Education, Milwaukee,<br />
Wisconsin, March 2010.<br />
<br />
== Lab Equipment ==<br />
<br />
The [[Systems Laboratory]] is populated with dual-headed Linux boxes running the latest version of [http://fedoraproject.org/ Fedora Linux].<br />
Other workstations in the lab include a dual-core Apple G5 running OS X, and several multi-core boxes for higher-end computation.<br />
<br />
The Xinu Laboratory component of the Systems Lab includes a pool of 24 WRT54GL wireless routers organized into a managed embedded<br />
backend pool, as well as smaller quantities of half a dozen other router types. Embedded development kits available include<br />
the Freescale/Motorola [http://www.evbplus.com/hcs12.html 68HC12 Dragon12] board,<br />
the Atmel [http://www.atmel.com/dyn/products/tools_card.asp?tool_id=2717 AT91 Series ARM Thumb] AT91EB40A board,<br />
the [http://www.atmel.com/products/AVR/butterfly ATmega169 Butterfly],<br />
a Zilog [http://www.zilog.com/docs/z8/devtools/z86ccp01zem.pdf Z86 Emulator Z86CCP01ZEM],<br />
and the Zilog [http://www.zilog.com/index.php?option=com_product&Itemid=26&mode=showProdDet&businessLine=1&familyId=6&productId=Z8F04A28100KIT Z8 Encore XP Dev Kit Z8F04A28100KIT-C].<br />
<br />
The Systems Lab includes both a private research network with our own gateway and firewall, and connections to each of the MSCS department production networks.<br />
The Lab also hosts Subversion, Trac, and Web service for the Marquette Student [http://acm.mscs.mu.edu/ ACM Chapter], the<br />
[http://mulug.mscs.mu.edu/ Marquette University Linux Users Group], and a stratum 2 NTP server for campus.<br />
<br />
== Lab Personnel ==<br />
<br />
=== Current Students ===<br />
<br />
[[File:XINU-Summer2011.png|800px|thumb]] The Xinu Team in Summer 2011.<br />
<br />
From left,<br />
[http://jasoncowdy.com/ Jason Cowdy],<br />
[http://www.linkedin.com/pub/kyle-persohn/31/a31/990 Kyle Persohn],<br />
[http://www.facebook.com/MattBajzek Matt Bajzek],<br />
[http://www.linkedin.com/pub/paul-spillane/22/a07/56b Paul Spillane],<br />
[http://www.mscs.mu.edu/~brylow/ Dr. Dennis Brylow],<br />
Anna Whitley, and<br />
[http://www.linkedin.com/pub/blas-victor/27/781/351 Victor Blas].<br />
Not pictured:<br />
[http://mziwisky.wordpress.com/ Mike Ziwisky].<br />
<br />
=== Alumni ===<br />
<br />
[http://phinze.com Paul Hinze], B.S. 2008. Currently works as a developer for [http://braintreepayments.com Braintree].<br />
<br />
[http://research.engineering.wustl.edu/~schultzm/ Mike Schultz], M.S. 2009. Now at [http://cse.wustl.edu/Pages/default.aspx Washington University in St. Louis] doctoral program.<br />
<br />
Tim Blattner, B.S. 2009. Now at [http://www.cs.umbc.edu/ University of Maryland - Baltimore County] doctoral program.<br />
<br />
[http://www.gemberdesign.com/ Aaron Gember], B.S. 2009. Now at [http://www.cs.wisc.edu/ University of Wisconsin-Madison] doctoral program.<br />
<br />
[http://netkow.com/ Matt Netkow], B.S. 2009. Now works as a developer for [http://www.savogroup.com/ The SAVO Group].<br />
<br />
Adam Mallen, B.S. 2009. Now at [http://www.marquette.edu/mscs/ Marquette University] doctoral program in Computational Sciences with an emphasis in Math.<br />
<br />
Adam Koehler, M.S. 2010. Now at [http://www1.cs.ucr.edu/index.php University of California Riverside] doctoral program.<br />
<br />
[http://www.zacintosh.com/ Zachary Lund], M.S. 2010. Now works as the lead developer for [http://www.savtrans.com/ SAV Transportation Group].<br />
<br />
Joseph Pintozzi, B.S. 2010. Now works as a developer for [http://core-apps.com/ Core-Apps, LLC].<br />
<br />
[http://www.linkedin.com/pub/paul-spillane/22/a07/56b Paul Spillane], B.S. 2010, M.S. 2012. Now works as a quality assurance analyst at [http://www.zywave.com/ Zywave].<br />
<br />
[http://www.linkedin.com/pub/blas-victor/27/781/351 Victor Blas], B.S. 2012. Now works as a developer at [https://www.acuity.com/ Acuity].<br />
<br />
[http://www.linkedin.com/pub/kyle-persohn/31/a31/990 Kyle Persohn], M.S. 2012. Embedded Software Engineer at [http://www.rockwellautomation.com/ Rockwell Automation].</div>Brylowhttps://xinu.cs.mu.edu/index.php?title=Systems_Laboratory&diff=3987Systems Laboratory2012-09-19T15:49:23Z<p>Brylow: /* Alumni */</p>
<hr />
<div>== About the Systems Laboratory ==<br />
<br />
[http://www.mu.edu/ Marquette]'s [[Systems Laboratory]], under the direction of [http://www.mscs.mu.edu/~brylow/ Dr. Dennis Brylow] in the [http://www.mscs.mu.edu/ Department of Mathematics, Statistics, and Computer Science], is housed on the third floor of Cudahy Hall.<br />
<br />
The lab creates new tools and methods for building and studying complex computer systems. Our emphasis is on embedded, real-time, and network systems, with strong ties to the electrical and computer engineering community, and the computer science education community. Current and recent projects include:<br />
<br />
1. Experimental Embedded Networking Platform. Creation of laboratory infrastructure and software for research and education in the area of embedded networking appliances, particularly wireless routers and IP telephony. Collaboration with Cisco Systems Advanced Research Division.<br />
<br />
2. Experimental Embedded Operating System Laboratory. Creation of laboratory infrastructure and software for research and education in area of embedded operating systems. Collaboration with University of Buffalo and University of Mississippi, with funding from the [http://www.nsf.gov/ National Science Foundation].<br />
<br />
3. Embedded Software Transactional Memory. Exploration of an innovative transactional memory model for guaranteeing process synchronization in embedded operating systems. Collaboration with Intel Research.<br />
<br />
4. Many-core Embedded Operating System Laboratory. A port of Embedded Xinu to the [http://techresearch.intel.com/ProjectDetails.aspx?Id=1 48-core SCC processor].<br />
<br />
The Systems Lab hosts undergraduate [http://acm.mscs.mu.edu/reu REU] (Research Experience for Undergraduates) students each summer, funded by a variety of sources including<br />
MU's College of Arts and Sciences and the [http://www.nsf.gov/ National Science Foundation].<br />
<br />
See the MSCS [http://www.marquette.edu/mscs/facstaff-research-labs.shtml Research Labs] page for more research laboratories in our department.<br />
<br />
== Publications ==<br />
<br />
=== Conference Proceedings and Journals ===<br />
<li>Michael Ziwisky and Dennis Brylow. BareMichael: A Minimalistic Bare-metal Framework for the Intel SCC.<br />
In <i>Proceedings of [http://hal.archives-ouvertes.fr/MARCONERA2012 MARC Symposium 2012]: 6th Many-core Applications Research Community (MARC) Symposium</i>, Eric Noulard and Simon Vernhes (Ed.), ONERA - Toulouse, France, July 2012.<br />
[http://hal.archives-ouvertes.fr/docs/00/71/90/38/PDF/MARC6_BareMichael-A-Minimalistic-Bare-metal-Framework-for-the-Intel-SCC.pdf (link)]<br />
<br />
<li>Paul Ruth and Dennis Brylow. An Experimental Nexos Laboratory Using Virtual Xinu. In <i>Proceedings of [http://fie-conference.org/fie2011/ FIE 2011]: 41st ASEE/IEEE Frontiers in Education Conference</i>, pages S2E-1-S2E-6, Rapid City, South Dakota, October 2011. <br />
[http://dx.doi.org/10.1109/FIE.2011.6143069 (link)]<br />
<br />
<li>Kyle Persohn and Dennis Brylow. Interactive Real-Time Embedded Systems Education Infused with Applied <br />
Internet Telephony. In <i>Proceedings of [http://compsac.cs.iastate.edu/ COMPSAC 2011]: 35th IEEE Computer Software<br />
and Applications Conference</i>, pages 199-204, Munich, Germany, July 2011.<br />
[http://dx.doi.org/10.1109/COMPSAC.2011.33 (link)]<br />
<br />
<li>Dennis Brylow and Kyle Thurow. Hands-on Networking Labs With Embedded Routers. In <i>Proceedings of [http://www.sigcse.org/sigcse2011/ SIGCSE 2011]: The 42nd ACM Technical Symposium on Computer Science Education</i>, pages 399-404, Dallas, Texas, March 2011.<br />
[http://doi.acm.org/10.1145/1953163.1953283 (link)]<br />
<br />
<li>Matt Netkow and Dennis Brylow. Xest: An Automated Framework for Regression Testing of Embedded Software. In <i>Proceedings of [http://www.artist-embedded.org/artist/-WESE-10-.html WESE 2010]: 6th Workshop on Embedded Systems Education</i>, pages 40-47, Scottsdale, Arizona, October 2010.<br />
[http://www.artist-embedded.org/docs/Events/2010/WESE/Proceedings_WESE_2010.pdf (link)]<br />
<br />
<li>Adam Mallen and Dennis Brylow. Compiler Construction With A Dash of Concurrency and An Embedded Twist. In <i>Proceedings of [http://splashcon.org/ SPLASH 2010]: Systems, Programming, Languages, and Applications: Software for Humanity</i> (formerly OOPSLA) Educators' and Trainers' Symposium, pages 161-168, Reno, Nevada, October 2010. <br />
[http://dx.doi.org/10.1145/1869542.1869568 (link)]<br />
<br />
<li>Dennis Brylow and Bina Ramamurthy. Nexos: A Next Generation Embedded<br />
Systems Laboratory, In <i>Proceedings of WESE 2008: 4th Workshop on Embedded<br />
Systems Education</i>, pages 10-17, Atlanta, Georgia, October 2008.<br />
[http://www.lulu.com/content/3613764 (link)]<br /><br />
Extended version in <i>SIGBED Review</i>, Volume 6, Number 1, January 2009.<br />
[http://www.cs.virginia.edu/sigbed/archives/2009-01/j-7-wese-journal-p18-final-brylow.pdf (link)]<br />
<br />
<li>Dennis Brylow. An Experimental Laboratory Environment for Teaching Embedded <br />
Operating Systems, In <i>Proceedings of [http://www.cs.duke.edu/sigcse08/ SIGCSE 2008]: The 39th ACM Technical Symposium on Computer Science Education</i>, pages 192-196, Portland, Oregon, March 2008. [http://doi.acm.org/10.1145/1352322.1352201 (link)]<br />
<br />
<li>Dennis Brylow. An Experimental Laboratory Environment for Teaching Embedded Hardware Systems, In <i>Proceedings of<br />
[http://www.ncsu.edu/wcae/ISCA2007/FinalProgram.html WCAE 2007]:<br />
Workshop on Computer Architecture Education</i>,<br />
pages 44-51, San Diego, California, June 2007.<br />
[http://www.mscs.mu.edu/~brylow/papers/Brylow-WCAE2007.pdf (link)]<br />
<br />
=== Posters and Undergraduate Research ===<br />
<br />
<li> Kyle Thurow and Dennis Brylow. A Network Emulator on Embedded Xinu.<br />
Poster presentation and research talk presented at [http://www.sigcse.org/sigcse2010/ SIGCSE 2010]<br />
[http://src.acm.org/ ACM Student Research Competition], undergraduate division, Milwaukee, Wisconsin, March 2010. Kyle placed in the top five and advanced to the semi-finals round.<br />
<br />
<li> Gabe Van Eyck and Dennis Brylow. Xinu as a Multi-Core Operating<br />
System on the PlayStation 3. Poster presentation at [http://www.sigcse.org/sigcse2010/ SIGCSE 2010]<br />
[http://src.acm.org/ ACM Student Research Competition], undergraduate division, Milwaukee, Wisconsin, March 2010.<br />
<br />
<li> Aaron Gember and Dennis Brylow. Real-Time TCP Extensions. Poster<br />
presentation and research talk presented at [http://www.cs.arizona.edu/groups/sigcse09/ SIGCSE 2009]<br />
[http://src.acm.org/ ACM Student Research Competition], undergraduate division, Chattanooga, Tennessee. Aaron advanced to<br />
semi-finals, placed in top<br />
three finalists, and advanced to the grand finals.<br />
<br />
<li>Dennis Brylow. Experimental Operating System Lab On A Dime.<br />
[http://www.cs.potsdam.edu/sigcse07/ SIGCSE 2007]: Technical Symposium on Computer Science Education, Covington, Kentucky,<br />
March 2007. [http://www.mscs.mu.edu/~brylow/papers/Brylow-SIGCSE2007.pdf (link)].<br />
<br />
=== Workshops ===<br />
<br />
<li> Paul Ruth and Dennis Brylow. Teaching With Embedded Xinu. Workshop<br />
accepted at [http://www.cs.olemiss.edu/acmse2010/Home.htm ACMSE 2010]:<br />
The 48th ACM Southeast Conference, Oxford, Mississippi, April 2010.<br />
<br />
<li>Dennis Brylow and Paul Ruth. Teaching With Embedded Xinu. Workshop<br />
accepted at [http://www.sigcse.org/sigcse2010/ SIGCSE 2010]:<br />
The 41st ACM Technical Symposium on Computer Science Education, Milwaukee,<br />
Wisconsin, March 2010.<br />
<br />
== Lab Equipment ==<br />
<br />
The [[Systems Laboratory]] is populated with dual-headed Linux boxes running the latest version of [http://fedoraproject.org/ Fedora Linux].<br />
Other workstations in the lab include a dual-core Apple G5 running OS X, and several multi-core boxes for higher-end computation.<br />
<br />
The Xinu Laboratory component of the Systems Lab includes a pool of 24 WRT54GL wireless routers organized into a managed embedded<br />
backend pool, as well as smaller quantities of half a dozen other router types. Embedded development kits available include<br />
the Freescale/Motorola [http://www.evbplus.com/hcs12.html 68HC12 Dragon12] board,<br />
the Atmel [http://www.atmel.com/dyn/products/tools_card.asp?tool_id=2717 AT91 Series ARM Thumb] AT91EB40A board,<br />
the [http://www.atmel.com/products/AVR/butterfly ATmega169 Butterfly],<br />
a Zilog [http://www.zilog.com/docs/z8/devtools/z86ccp01zem.pdf Z86 Emulator Z86CCP01ZEM],<br />
and the Zilog [http://www.zilog.com/index.php?option=com_product&Itemid=26&mode=showProdDet&businessLine=1&familyId=6&productId=Z8F04A28100KIT Z8 Encore XP Dev Kit Z8F04A28100KIT-C].<br />
<br />
The Systems Lab includes both a private research network with our own gateway and firewall, and connections to each of the MSCS department production networks.<br />
The Lab also hosts Subversion, Trac, and Web service for the Marquette Student [http://acm.mscs.mu.edu/ ACM Chapter], the<br />
[http://mulug.mscs.mu.edu/ Marquette University Linux Users Group], and a stratum 2 NTP server for campus.<br />
<br />
== Lab Personnel ==<br />
<br />
=== Current Students ===<br />
<br />
[[File:XINU-Summer2011.png|800px|thumb]] The Xinu Team in Summer 2011.<br />
<br />
From left,<br />
[http://jasoncowdy.com/ Jason Cowdy],<br />
[http://www.linkedin.com/pub/kyle-persohn/31/a31/990 Kyle Persohn],<br />
[http://www.facebook.com/MattBajzek Matt Bajzek],<br />
[http://www.linkedin.com/pub/paul-spillane/22/a07/56b Paul Spillane],<br />
[http://www.mscs.mu.edu/~brylow/ Dr. Dennis Brylow],<br />
Anna Whitley, and<br />
[http://www.linkedin.com/pub/blas-victor/27/781/351 Victor Blas].<br />
Not pictured:<br />
[http://mziwisky.wordpress.com/ Mike Ziwisky].<br />
<br />
=== Alumni ===<br />
<br />
[http://phinze.com Paul Hinze], B.S. 2008. Currently works as a developer for [http://braintreepayments.com Braintree].<br />
<br />
[http://research.engineering.wustl.edu/~schultzm/ Mike Schultz], M.S. 2009. Now at [http://cse.wustl.edu/Pages/default.aspx Washington University in St. Louis] doctoral program.<br />
<br />
Tim Blattner, B.S. 2009. Now at [http://www.cs.umbc.edu/ University of Maryland - Baltimore County] doctoral program.<br />
<br />
[http://www.gemberdesign.com/ Aaron Gember], B.S. 2009. Now at [http://www.cs.wisc.edu/ University of Wisconsin-Madison] doctoral program.<br />
<br />
[http://netkow.com/ Matt Netkow], B.S. 2009. Now works as a developer for [http://www.savogroup.com/ The SAVO Group].<br />
<br />
Adam Mallen, B.S. 2009. Now at [http://www.marquette.edu/mscs/ Marquette University] doctoral program in Computational Sciences with an emphasis in Math.<br />
<br />
Adam Koehler, M.S. 2010. Now at [http://www1.cs.ucr.edu/index.php University of California Riverside] doctoral program.<br />
<br />
[http://www.zacintosh.com/ Zachary Lund], M.S. 2010. Now works as the lead developer for [http://www.savtrans.com/ SAV Transportation Group].<br />
<br />
Joseph Pintozzi, B.S. 2010. Now works as a developer for [http://core-apps.com/ Core-Apps, LLC].<br />
<br />
[http://www.linkedin.com/pub/blas-victor/27/781/351 Victor Blas], B.S. 2012. Now works as a developer at [https://www.acuity.com/ Acuity].<br />
<br />
[http://www.linkedin.com/pub/kyle-persohn/31/a31/990 Kyle Persohn], M.S. 2012. Embedded Software Engineer at [http://www.rockwellautomation.com/ Rockwell Automation].</div>Brylowhttps://xinu.cs.mu.edu/index.php?title=Systems_Laboratory&diff=3986Systems Laboratory2012-09-19T15:47:02Z<p>Brylow: /* Alumni */</p>
<hr />
<div>== About the Systems Laboratory ==<br />
<br />
[http://www.mu.edu/ Marquette]'s [[Systems Laboratory]], under the direction of [http://www.mscs.mu.edu/~brylow/ Dr. Dennis Brylow] in the [http://www.mscs.mu.edu/ Department of Mathematics, Statistics, and Computer Science], is housed on the third floor of Cudahy Hall.<br />
<br />
The lab creates new tools and methods for building and studying complex computer systems. Our emphasis is on embedded, real-time, and network systems, with strong ties to the electrical and computer engineering community, and the computer science education community. Current and recent projects include:<br />
<br />
1. Experimental Embedded Networking Platform. Creation of laboratory infrastructure and software for research and education in the area of embedded networking appliances, particularly wireless routers and IP telephony. Collaboration with Cisco Systems Advanced Research Division.<br />
<br />
2. Experimental Embedded Operating System Laboratory. Creation of laboratory infrastructure and software for research and education in area of embedded operating systems. Collaboration with University of Buffalo and University of Mississippi, with funding from the [http://www.nsf.gov/ National Science Foundation].<br />
<br />
3. Embedded Software Transactional Memory. Exploration of an innovative transactional memory model for guaranteeing process synchronization in embedded operating systems. Collaboration with Intel Research.<br />
<br />
4. Many-core Embedded Operating System Laboratory. A port of Embedded Xinu to the [http://techresearch.intel.com/ProjectDetails.aspx?Id=1 48-core SCC processor].<br />
<br />
The Systems Lab hosts undergraduate [http://acm.mscs.mu.edu/reu REU] (Research Experience for Undergraduates) students each summer, funded by a variety of sources including<br />
MU's College of Arts and Sciences and the [http://www.nsf.gov/ National Science Foundation].<br />
<br />
See the MSCS [http://www.marquette.edu/mscs/facstaff-research-labs.shtml Research Labs] page for more research laboratories in our department.<br />
<br />
== Publications ==<br />
<br />
=== Conference Proceedings and Journals ===<br />
<li>Michael Ziwisky and Dennis Brylow. BareMichael: A Minimalistic Bare-metal Framework for the Intel SCC.<br />
In <i>Proceedings of [http://hal.archives-ouvertes.fr/MARCONERA2012 MARC Symposium 2012]: 6th Many-core Applications Research Community (MARC) Symposium</i>, Eric Noulard and Simon Vernhes (Ed.), ONERA - Toulouse, France, July 2012.<br />
[http://hal.archives-ouvertes.fr/docs/00/71/90/38/PDF/MARC6_BareMichael-A-Minimalistic-Bare-metal-Framework-for-the-Intel-SCC.pdf (link)]<br />
<br />
<li>Paul Ruth and Dennis Brylow. An Experimental Nexos Laboratory Using Virtual Xinu. In <i>Proceedings of [http://fie-conference.org/fie2011/ FIE 2011]: 41st ASEE/IEEE Frontiers in Education Conference</i>, pages S2E-1-S2E-6, Rapid City, South Dakota, October 2011. <br />
[http://dx.doi.org/10.1109/FIE.2011.6143069 (link)]<br />
<br />
<li>Kyle Persohn and Dennis Brylow. Interactive Real-Time Embedded Systems Education Infused with Applied <br />
Internet Telephony. In <i>Proceedings of [http://compsac.cs.iastate.edu/ COMPSAC 2011]: 35th IEEE Computer Software<br />
and Applications Conference</i>, pages 199-204, Munich, Germany, July 2011.<br />
[http://dx.doi.org/10.1109/COMPSAC.2011.33 (link)]<br />
<br />
<li>Dennis Brylow and Kyle Thurow. Hands-on Networking Labs With Embedded Routers. In <i>Proceedings of [http://www.sigcse.org/sigcse2011/ SIGCSE 2011]: The 42nd ACM Technical Symposium on Computer Science Education</i>, pages 399-404, Dallas, Texas, March 2011.<br />
[http://doi.acm.org/10.1145/1953163.1953283 (link)]<br />
<br />
<li>Matt Netkow and Dennis Brylow. Xest: An Automated Framework for Regression Testing of Embedded Software. In <i>Proceedings of [http://www.artist-embedded.org/artist/-WESE-10-.html WESE 2010]: 6th Workshop on Embedded Systems Education</i>, pages 40-47, Scottsdale, Arizona, October 2010.<br />
[http://www.artist-embedded.org/docs/Events/2010/WESE/Proceedings_WESE_2010.pdf (link)]<br />
<br />
<li>Adam Mallen and Dennis Brylow. Compiler Construction With A Dash of Concurrency and An Embedded Twist. In <i>Proceedings of [http://splashcon.org/ SPLASH 2010]: Systems, Programming, Languages, and Applications: Software for Humanity</i> (formerly OOPSLA) Educators' and Trainers' Symposium, pages 161-168, Reno, Nevada, October 2010. <br />
[http://dx.doi.org/10.1145/1869542.1869568 (link)]<br />
<br />
<li>Dennis Brylow and Bina Ramamurthy. Nexos: A Next Generation Embedded<br />
Systems Laboratory, In <i>Proceedings of WESE 2008: 4th Workshop on Embedded<br />
Systems Education</i>, pages 10-17, Atlanta, Georgia, October 2008.<br />
[http://www.lulu.com/content/3613764 (link)]<br /><br />
Extended version in <i>SIGBED Review</i>, Volume 6, Number 1, January 2009.<br />
[http://www.cs.virginia.edu/sigbed/archives/2009-01/j-7-wese-journal-p18-final-brylow.pdf (link)]<br />
<br />
<li>Dennis Brylow. An Experimental Laboratory Environment for Teaching Embedded <br />
Operating Systems, In <i>Proceedings of [http://www.cs.duke.edu/sigcse08/ SIGCSE 2008]: The 39th ACM Technical Symposium on Computer Science Education</i>, pages 192-196, Portland, Oregon, March 2008. [http://doi.acm.org/10.1145/1352322.1352201 (link)]<br />
<br />
<li>Dennis Brylow. An Experimental Laboratory Environment for Teaching Embedded Hardware Systems, In <i>Proceedings of<br />
[http://www.ncsu.edu/wcae/ISCA2007/FinalProgram.html WCAE 2007]:<br />
Workshop on Computer Architecture Education</i>,<br />
pages 44-51, San Diego, California, June 2007.<br />
[http://www.mscs.mu.edu/~brylow/papers/Brylow-WCAE2007.pdf (link)]<br />
<br />
=== Posters and Undergraduate Research ===<br />
<br />
<li> Kyle Thurow and Dennis Brylow. A Network Emulator on Embedded Xinu.<br />
Poster presentation and research talk presented at [http://www.sigcse.org/sigcse2010/ SIGCSE 2010]<br />
[http://src.acm.org/ ACM Student Research Competition], undergraduate division, Milwaukee, Wisconsin, March 2010. Kyle placed in the top five and advanced to the semi-finals round.<br />
<br />
<li> Gabe Van Eyck and Dennis Brylow. Xinu as a Multi-Core Operating<br />
System on the PlayStation 3. Poster presentation at [http://www.sigcse.org/sigcse2010/ SIGCSE 2010]<br />
[http://src.acm.org/ ACM Student Research Competition], undergraduate division, Milwaukee, Wisconsin, March 2010.<br />
<br />
<li> Aaron Gember and Dennis Brylow. Real-Time TCP Extensions. Poster<br />
presentation and research talk presented at [http://www.cs.arizona.edu/groups/sigcse09/ SIGCSE 2009]<br />
[http://src.acm.org/ ACM Student Research Competition], undergraduate division, Chattanooga, Tennessee. Aaron advanced to<br />
semi-finals, placed in top<br />
three finalists, and advanced to the grand finals.<br />
<br />
<li>Dennis Brylow. Experimental Operating System Lab On A Dime.<br />
[http://www.cs.potsdam.edu/sigcse07/ SIGCSE 2007]: Technical Symposium on Computer Science Education, Covington, Kentucky,<br />
March 2007. [http://www.mscs.mu.edu/~brylow/papers/Brylow-SIGCSE2007.pdf (link)].<br />
<br />
=== Workshops ===<br />
<br />
<li> Paul Ruth and Dennis Brylow. Teaching With Embedded Xinu. Workshop<br />
accepted at [http://www.cs.olemiss.edu/acmse2010/Home.htm ACMSE 2010]:<br />
The 48th ACM Southeast Conference, Oxford, Mississippi, April 2010.<br />
<br />
<li>Dennis Brylow and Paul Ruth. Teaching With Embedded Xinu. Workshop<br />
accepted at [http://www.sigcse.org/sigcse2010/ SIGCSE 2010]:<br />
The 41st ACM Technical Symposium on Computer Science Education, Milwaukee,<br />
Wisconsin, March 2010.<br />
<br />
== Lab Equipment ==<br />
<br />
The [[Systems Laboratory]] is populated with dual-headed Linux boxes running the latest version of [http://fedoraproject.org/ Fedora Linux].<br />
Other workstations in the lab include a dual-core Apple G5 running OS X, and several multi-core boxes for higher-end computation.<br />
<br />
The Xinu Laboratory component of the Systems Lab includes a pool of 24 WRT54GL wireless routers organized into a managed embedded<br />
backend pool, as well as smaller quantities of half a dozen other router types. Embedded development kits available include<br />
the Freescale/Motorola [http://www.evbplus.com/hcs12.html 68HC12 Dragon12] board,<br />
the Atmel [http://www.atmel.com/dyn/products/tools_card.asp?tool_id=2717 AT91 Series ARM Thumb] AT91EB40A board,<br />
the [http://www.atmel.com/products/AVR/butterfly ATmega169 Butterfly],<br />
a Zilog [http://www.zilog.com/docs/z8/devtools/z86ccp01zem.pdf Z86 Emulator Z86CCP01ZEM],<br />
and the Zilog [http://www.zilog.com/index.php?option=com_product&Itemid=26&mode=showProdDet&businessLine=1&familyId=6&productId=Z8F04A28100KIT Z8 Encore XP Dev Kit Z8F04A28100KIT-C].<br />
<br />
The Systems Lab includes both a private research network with our own gateway and firewall, and connections to each of the MSCS department production networks.<br />
The Lab also hosts Subversion, Trac, and Web service for the Marquette Student [http://acm.mscs.mu.edu/ ACM Chapter], the<br />
[http://mulug.mscs.mu.edu/ Marquette University Linux Users Group], and a stratum 2 NTP server for campus.<br />
<br />
== Lab Personnel ==<br />
<br />
=== Current Students ===<br />
<br />
[[File:XINU-Summer2011.png|800px|thumb]] The Xinu Team in Summer 2011.<br />
<br />
From left,<br />
[http://jasoncowdy.com/ Jason Cowdy],<br />
[http://www.linkedin.com/pub/kyle-persohn/31/a31/990 Kyle Persohn],<br />
[http://www.facebook.com/MattBajzek Matt Bajzek],<br />
[http://www.linkedin.com/pub/paul-spillane/22/a07/56b Paul Spillane],<br />
[http://www.mscs.mu.edu/~brylow/ Dr. Dennis Brylow],<br />
Anna Whitley, and<br />
[http://www.linkedin.com/pub/blas-victor/27/781/351 Victor Blas].<br />
Not pictured:<br />
[http://mziwisky.wordpress.com/ Mike Ziwisky].<br />
<br />
=== Alumni ===<br />
<br />
[http://phinze.com Paul Hinze], B.S. 2008. Currently works as a developer for [http://braintreepayments.com Braintree].<br />
<br />
[http://research.engineering.wustl.edu/~schultzm/ Mike Schultz], M.S. 2009. Now at [http://cse.wustl.edu/Pages/default.aspx Washington University in St. Louis] doctoral program.<br />
<br />
Tim Blattner, B.S. 2009. Now at [http://www.cs.umbc.edu/ University of Maryland - Baltimore County] doctoral program.<br />
<br />
[http://www.gemberdesign.com/ Aaron Gember], B.S. 2009. Now at [http://www.cs.wisc.edu/ University of Wisconsin-Madison] doctoral program.<br />
<br />
[http://netkow.com/ Matt Netkow], B.S. 2009. Now works as a developer for [http://www.savogroup.com/ The SAVO Group].<br />
<br />
Adam Mallen, B.S. 2009. Now at [http://www.marquette.edu/mscs/ Marquette University] doctoral program in Computational Sciences with an emphasis in Math.<br />
<br />
Adam Koehler, M.S. 2010. Now at [http://www1.cs.ucr.edu/index.php University of California Riverside] doctoral program.<br />
<br />
[http://www.zacintosh.com/ Zachary Lund], M.S. 2010. Now works as the lead developer for [http://www.savtrans.com/ SAV Transportation Group].<br />
<br />
Joseph Pintozzi, B.S. 2010. Now works as a developer for [http://core-apps.com/ Core-Apps, LLC].<br />
<br />
[http://www.linkedin.com/pub/kyle-persohn/31/a31/990 Kyle Persohn], M.S. 2012. Embedded Software Engineer at [http://www.rockwellautomation.com/ Rockwell Automation].</div>Brylowhttps://xinu.cs.mu.edu/index.php?title=Systems_Laboratory&diff=3985Systems Laboratory2012-08-07T20:32:31Z<p>Brylow: /* Conference Proceedings and Journals */</p>
<hr />
<div>== About the Systems Laboratory ==<br />
<br />
[http://www.mu.edu/ Marquette]'s [[Systems Laboratory]], under the direction of [http://www.mscs.mu.edu/~brylow/ Dr. Dennis Brylow] in the [http://www.mscs.mu.edu/ Department of Mathematics, Statistics, and Computer Science], is housed on the third floor of Cudahy Hall.<br />
<br />
The lab creates new tools and methods for building and studying complex computer systems. Our emphasis is on embedded, real-time, and network systems, with strong ties to the electrical and computer engineering community, and the computer science education community. Current and recent projects include:<br />
<br />
1. Experimental Embedded Networking Platform. Creation of laboratory infrastructure and software for research and education in the area of embedded networking appliances, particularly wireless routers and IP telephony. Collaboration with Cisco Systems Advanced Research Division.<br />
<br />
2. Experimental Embedded Operating System Laboratory. Creation of laboratory infrastructure and software for research and education in area of embedded operating systems. Collaboration with University of Buffalo and University of Mississippi, with funding from the [http://www.nsf.gov/ National Science Foundation].<br />
<br />
3. Embedded Software Transactional Memory. Exploration of an innovative transactional memory model for guaranteeing process synchronization in embedded operating systems. Collaboration with Intel Research.<br />
<br />
4. Many-core Embedded Operating System Laboratory. A port of Embedded Xinu to the [http://techresearch.intel.com/ProjectDetails.aspx?Id=1 48-core SCC processor].<br />
<br />
The Systems Lab hosts undergraduate [http://acm.mscs.mu.edu/reu REU] (Research Experience for Undergraduates) students each summer, funded by a variety of sources including<br />
MU's College of Arts and Sciences and the [http://www.nsf.gov/ National Science Foundation].<br />
<br />
See the MSCS [http://www.marquette.edu/mscs/facstaff-research-labs.shtml Research Labs] page for more research laboratories in our department.<br />
<br />
== Publications ==<br />
<br />
=== Conference Proceedings and Journals ===<br />
<li>Michael Ziwisky and Dennis Brylow. BareMichael: A Minimalistic Bare-metal Framework for the Intel SCC.<br />
In <i>Proceedings of [http://hal.archives-ouvertes.fr/MARCONERA2012 MARC Symposium 2012]: 6th Many-core Applications Research Community (MARC) Symposium</i>, Eric Noulard and Simon Vernhes (Ed.), ONERA - Toulouse, France, July 2012.<br />
[http://hal.archives-ouvertes.fr/docs/00/71/90/38/PDF/MARC6_BareMichael-A-Minimalistic-Bare-metal-Framework-for-the-Intel-SCC.pdf (link)]<br />
<br />
<li>Paul Ruth and Dennis Brylow. An Experimental Nexos Laboratory Using Virtual Xinu. In <i>Proceedings of [http://fie-conference.org/fie2011/ FIE 2011]: 41st ASEE/IEEE Frontiers in Education Conference</i>, pages S2E-1-S2E-6, Rapid City, South Dakota, October 2011. <br />
[http://dx.doi.org/10.1109/FIE.2011.6143069 (link)]<br />
<br />
<li>Kyle Persohn and Dennis Brylow. Interactive Real-Time Embedded Systems Education Infused with Applied <br />
Internet Telephony. In <i>Proceedings of [http://compsac.cs.iastate.edu/ COMPSAC 2011]: 35th IEEE Computer Software<br />
and Applications Conference</i>, pages 199-204, Munich, Germany, July 2011.<br />
[http://dx.doi.org/10.1109/COMPSAC.2011.33 (link)]<br />
<br />
<li>Dennis Brylow and Kyle Thurow. Hands-on Networking Labs With Embedded Routers. In <i>Proceedings of [http://www.sigcse.org/sigcse2011/ SIGCSE 2011]: The 42nd ACM Technical Symposium on Computer Science Education</i>, pages 399-404, Dallas, Texas, March 2011.<br />
[http://doi.acm.org/10.1145/1953163.1953283 (link)]<br />
<br />
<li>Matt Netkow and Dennis Brylow. Xest: An Automated Framework for Regression Testing of Embedded Software. In <i>Proceedings of [http://www.artist-embedded.org/artist/-WESE-10-.html WESE 2010]: 6th Workshop on Embedded Systems Education</i>, pages 40-47, Scottsdale, Arizona, October 2010.<br />
[http://www.artist-embedded.org/docs/Events/2010/WESE/Proceedings_WESE_2010.pdf (link)]<br />
<br />
<li>Adam Mallen and Dennis Brylow. Compiler Construction With A Dash of Concurrency and An Embedded Twist. In <i>Proceedings of [http://splashcon.org/ SPLASH 2010]: Systems, Programming, Languages, and Applications: Software for Humanity</i> (formerly OOPSLA) Educators' and Trainers' Symposium, pages 161-168, Reno, Nevada, October 2010. <br />
[http://dx.doi.org/10.1145/1869542.1869568 (link)]<br />
<br />
<li>Dennis Brylow and Bina Ramamurthy. Nexos: A Next Generation Embedded<br />
Systems Laboratory, In <i>Proceedings of WESE 2008: 4th Workshop on Embedded<br />
Systems Education</i>, pages 10-17, Atlanta, Georgia, October 2008.<br />
[http://www.lulu.com/content/3613764 (link)]<br /><br />
Extended version in <i>SIGBED Review</i>, Volume 6, Number 1, January 2009.<br />
[http://www.cs.virginia.edu/sigbed/archives/2009-01/j-7-wese-journal-p18-final-brylow.pdf (link)]<br />
<br />
<li>Dennis Brylow. An Experimental Laboratory Environment for Teaching Embedded <br />
Operating Systems, In <i>Proceedings of [http://www.cs.duke.edu/sigcse08/ SIGCSE 2008]: The 39th ACM Technical Symposium on Computer Science Education</i>, pages 192-196, Portland, Oregon, March 2008. [http://doi.acm.org/10.1145/1352322.1352201 (link)]<br />
<br />
<li>Dennis Brylow. An Experimental Laboratory Environment for Teaching Embedded Hardware Systems, In <i>Proceedings of<br />
[http://www.ncsu.edu/wcae/ISCA2007/FinalProgram.html WCAE 2007]:<br />
Workshop on Computer Architecture Education</i>,<br />
pages 44-51, San Diego, California, June 2007.<br />
[http://www.mscs.mu.edu/~brylow/papers/Brylow-WCAE2007.pdf (link)]<br />
<br />
=== Posters and Undergraduate Research ===<br />
<br />
<li> Kyle Thurow and Dennis Brylow. A Network Emulator on Embedded Xinu.<br />
Poster presentation and research talk presented at [http://www.sigcse.org/sigcse2010/ SIGCSE 2010]<br />
[http://src.acm.org/ ACM Student Research Competition], undergraduate division, Milwaukee, Wisconsin, March 2010. Kyle placed in the top five and advanced to the semi-finals round.<br />
<br />
<li> Gabe Van Eyck and Dennis Brylow. Xinu as a Multi-Core Operating<br />
System on the PlayStation 3. Poster presentation at [http://www.sigcse.org/sigcse2010/ SIGCSE 2010]<br />
[http://src.acm.org/ ACM Student Research Competition], undergraduate division, Milwaukee, Wisconsin, March 2010.<br />
<br />
<li> Aaron Gember and Dennis Brylow. Real-Time TCP Extensions. Poster<br />
presentation and research talk presented at [http://www.cs.arizona.edu/groups/sigcse09/ SIGCSE 2009]<br />
[http://src.acm.org/ ACM Student Research Competition], undergraduate division, Chattanooga, Tennessee. Aaron advanced to<br />
semi-finals, placed in top<br />
three finalists, and advanced to the grand finals.<br />
<br />
<li>Dennis Brylow. Experimental Operating System Lab On A Dime.<br />
[http://www.cs.potsdam.edu/sigcse07/ SIGCSE 2007]: Technical Symposium on Computer Science Education, Covington, Kentucky,<br />
March 2007. [http://www.mscs.mu.edu/~brylow/papers/Brylow-SIGCSE2007.pdf (link)].<br />
<br />
=== Workshops ===<br />
<br />
<li> Paul Ruth and Dennis Brylow. Teaching With Embedded Xinu. Workshop<br />
accepted at [http://www.cs.olemiss.edu/acmse2010/Home.htm ACMSE 2010]:<br />
The 48th ACM Southeast Conference, Oxford, Mississippi, April 2010.<br />
<br />
<li>Dennis Brylow and Paul Ruth. Teaching With Embedded Xinu. Workshop<br />
accepted at [http://www.sigcse.org/sigcse2010/ SIGCSE 2010]:<br />
The 41st ACM Technical Symposium on Computer Science Education, Milwaukee,<br />
Wisconsin, March 2010.<br />
<br />
== Lab Equipment ==<br />
<br />
The [[Systems Laboratory]] is populated with dual-headed Linux boxes running the latest version of [http://fedoraproject.org/ Fedora Linux].<br />
Other workstations in the lab include a dual-core Apple G5 running OS X, and several multi-core boxes for higher-end computation.<br />
<br />
The Xinu Laboratory component of the Systems Lab includes a pool of 24 WRT54GL wireless routers organized into a managed embedded<br />
backend pool, as well as smaller quantities of half a dozen other router types. Embedded development kits available include<br />
the Freescale/Motorola [http://www.evbplus.com/hcs12.html 68HC12 Dragon12] board,<br />
the Atmel [http://www.atmel.com/dyn/products/tools_card.asp?tool_id=2717 AT91 Series ARM Thumb] AT91EB40A board,<br />
the [http://www.atmel.com/products/AVR/butterfly ATmega169 Butterfly],<br />
a Zilog [http://www.zilog.com/docs/z8/devtools/z86ccp01zem.pdf Z86 Emulator Z86CCP01ZEM],<br />
and the Zilog [http://www.zilog.com/index.php?option=com_product&Itemid=26&mode=showProdDet&businessLine=1&familyId=6&productId=Z8F04A28100KIT Z8 Encore XP Dev Kit Z8F04A28100KIT-C].<br />
<br />
The Systems Lab includes both a private research network with our own gateway and firewall, and connections to each of the MSCS department production networks.<br />
The Lab also hosts Subversion, Trac, and Web service for the Marquette Student [http://acm.mscs.mu.edu/ ACM Chapter], the<br />
[http://mulug.mscs.mu.edu/ Marquette University Linux Users Group], and a stratum 2 NTP server for campus.<br />
<br />
== Lab Personnel ==<br />
<br />
=== Current Students ===<br />
<br />
[[File:XINU-Summer2011.png|800px|thumb]] The Xinu Team in Summer 2011.<br />
<br />
From left,<br />
[http://jasoncowdy.com/ Jason Cowdy],<br />
[http://www.linkedin.com/pub/kyle-persohn/31/a31/990 Kyle Persohn],<br />
[http://www.facebook.com/MattBajzek Matt Bajzek],<br />
[http://www.linkedin.com/pub/paul-spillane/22/a07/56b Paul Spillane],<br />
[http://www.mscs.mu.edu/~brylow/ Dr. Dennis Brylow],<br />
Anna Whitley, and<br />
[http://www.linkedin.com/pub/blas-victor/27/781/351 Victor Blas].<br />
Not pictured:<br />
[http://mziwisky.wordpress.com/ Mike Ziwisky].<br />
<br />
=== Alumni ===<br />
<br />
[http://phinze.com Paul Hinze], B.S. 2008. Currently works as a developer for [http://braintreepayments.com Braintree].<br />
<br />
[http://research.engineering.wustl.edu/~schultzm/ Mike Schultz], M.S. 2009. Now at [http://cse.wustl.edu/Pages/default.aspx Washington University in St. Louis] doctoral program.<br />
<br />
Tim Blattner, B.S. 2009. Now at [http://www.cs.umbc.edu/ University of Maryland - Baltimore County] doctoral program.<br />
<br />
[http://www.gemberdesign.com/ Aaron Gember], B.S. 2009. Now at [http://www.cs.wisc.edu/ University of Wisconsin-Madison] doctoral program.<br />
<br />
[http://netkow.com/ Matt Netkow], B.S. 2009. Now works as a developer for [http://www.savogroup.com/ The SAVO Group].<br />
<br />
Adam Mallen, B.S. 2009. Now at [http://www.marquette.edu/mscs/ Marquette University] doctoral program in Computational Sciences with an emphasis in Math.<br />
<br />
Adam Koehler, M.S. 2010. Now at [http://www1.cs.ucr.edu/index.php University of California Riverside] doctoral program.<br />
<br />
[http://www.zacintosh.com/ Zachary Lund], M.S. 2010. Now works as the lead developer for [http://www.savtrans.com/ SAV Transportation Group].<br />
<br />
Joseph Pintozzi, B.S. 2010. Now works as a developer for [http://core-apps.com/ Core-Apps, LLC].</div>Brylowhttps://xinu.cs.mu.edu/index.php?title=Systems_Laboratory&diff=3947Systems Laboratory2012-03-16T16:13:03Z<p>Brylow: /* About the Systems Laboratory */</p>
<hr />
<div>== About the Systems Laboratory ==<br />
<br />
[http://www.mu.edu/ Marquette]'s [[Systems Laboratory]], under the direction of [http://www.mscs.mu.edu/~brylow/ Dr. Dennis Brylow] in the [http://www.mscs.mu.edu/ Department of Mathematics, Statistics, and Computer Science], is housed on the third floor of Cudahy Hall.<br />
<br />
The lab creates new tools and methods for building and studying complex computer systems. Our emphasis is on embedded, real-time, and network systems, with strong ties to the electrical and computer engineering community, and the computer science education community. Current and recent projects include:<br />
<br />
1. Experimental Embedded Networking Platform. Creation of laboratory infrastructure and software for research and education in the area of embedded networking appliances, particularly wireless routers and IP telephony. Collaboration with Cisco Systems Advanced Research Division.<br />
<br />
2. Experimental Embedded Operating System Laboratory. Creation of laboratory infrastructure and software for research and education in area of embedded operating systems. Collaboration with University of Buffalo and University of Mississippi, with funding from the [http://www.nsf.gov/ National Science Foundation].<br />
<br />
3. Embedded Software Transactional Memory. Exploration of an innovative transactional memory model for guaranteeing process synchronization in embedded operating systems. Collaboration with Intel Research.<br />
<br />
4. Many-core Embedded Operating System Laboratory. A port of Embedded Xinu to the [http://techresearch.intel.com/ProjectDetails.aspx?Id=1 48-core SCC processor].<br />
<br />
The Systems Lab hosts undergraduate [http://acm.mscs.mu.edu/reu REU] (Research Experience for Undergraduates) students each summer, funded by a variety of sources including<br />
MU's College of Arts and Sciences and the [http://www.nsf.gov/ National Science Foundation].<br />
<br />
See the MSCS [http://www.marquette.edu/mscs/facstaff-research-labs.shtml Research Labs] page for more research laboratories in our department.<br />
<br />
== Publications ==<br />
<br />
=== Conference Proceedings and Journals ===<br />
<li>Paul Ruth and Dennis Brylow. An Experimental Nexos Laboratory Using Virtual Xinu. In <i>Proceedings of [http://fie-conference.org/fie2011/ FIE 2011]: 41st ASEE/IEEE Frontiers in Education Conference</i>, pages S2E-1-S2E-6, Rapid City, South Dakota, October 2011. <br />
[http://dx.doi.org/10.1109/FIE.2011.6143069 (link)]<br />
<br />
<li>Kyle Persohn and Dennis Brylow. Interactive Real-Time Embedded Systems Education Infused with Applied <br />
Internet Telephony. In <i>Proceedings of [http://compsac.cs.iastate.edu/ COMPSAC 2011]: 35th IEEE Computer Software<br />
and Applications Conference</i>, pages 199-204, Munich, Germany, July 2011.<br />
[http://dx.doi.org/10.1109/COMPSAC.2011.33 (link)]<br />
<br />
<li>Dennis Brylow and Kyle Thurow. Hands-on Networking Labs With Embedded Routers. In <i>Proceedings of [http://www.sigcse.org/sigcse2011/ SIGCSE 2011]: The 42nd ACM Technical Symposium on Computer Science Education</i>, pages 399-404, Dallas, Texas, March 2011.<br />
[http://doi.acm.org/10.1145/1953163.1953283 (link)]<br />
<br />
<li>Matt Netkow and Dennis Brylow. Xest: An Automated Framework for Regression Testing of Embedded Software. In <i>Proceedings of [http://www.artist-embedded.org/artist/-WESE-10-.html WESE 2010]: 6th Workshop on Embedded Systems Education</i>, pages 40-47, Scottsdale, Arizona, October 2010.<br />
[http://www.artist-embedded.org/docs/Events/2010/WESE/Proceedings_WESE_2010.pdf (link)]<br />
<br />
<li>Adam Mallen and Dennis Brylow. Compiler Construction With A Dash of Concurrency and An Embedded Twist. In <i>Proceedings of [http://splashcon.org/ SPLASH 2010]: Systems, Programming, Languages, and Applications: Software for Humanity</i> (formerly OOPSLA) Educators' and Trainers' Symposium, pages 161-168, Reno, Nevada, October 2010. <br />
[http://dx.doi.org/10.1145/1869542.1869568 (link)]<br />
<br />
<li>Dennis Brylow and Bina Ramamurthy. Nexos: A Next Generation Embedded<br />
Systems Laboratory, In <i>Proceedings of WESE 2008: 4th Workshop on Embedded<br />
Systems Education</i>, pages 10-17, Atlanta, Georgia, October 2008.<br />
[http://www.lulu.com/content/3613764 (link)]<br /><br />
Extended version in <i>SIGBED Review</i>, Volume 6, Number 1, January 2009.<br />
[http://www.cs.virginia.edu/sigbed/archives/2009-01/j-7-wese-journal-p18-final-brylow.pdf (link)]<br />
<br />
<li>Dennis Brylow. An Experimental Laboratory Environment for Teaching Embedded <br />
Operating Systems, In <i>Proceedings of [http://www.cs.duke.edu/sigcse08/ SIGCSE 2008]: The 39th ACM Technical Symposium on Computer Science Education</i>, pages 192-196, Portland, Oregon, March 2008. [http://doi.acm.org/10.1145/1352322.1352201 (link)]<br />
<br />
<li>Dennis Brylow. An Experimental Laboratory Environment for Teaching Embedded Hardware Systems, In <i>Proceedings of<br />
[http://www.ncsu.edu/wcae/ISCA2007/FinalProgram.html WCAE 2007]:<br />
Workshop on Computer Architecture Education</i>,<br />
pages 44-51, San Diego, California, June 2007.<br />
[http://www.mscs.mu.edu/~brylow/papers/Brylow-WCAE2007.pdf (link)]<br />
<br />
=== Posters and Undergraduate Research ===<br />
<br />
<li> Kyle Thurow and Dennis Brylow. A Network Emulator on Embedded Xinu.<br />
Poster presentation and research talk presented at [http://www.sigcse.org/sigcse2010/ SIGCSE 2010]<br />
[http://src.acm.org/ ACM Student Research Competition], undergraduate division, Milwaukee, Wisconsin, March 2010. Kyle placed in the top five and advanced to the semi-finals round.<br />
<br />
<li> Gabe Van Eyck and Dennis Brylow. Xinu as a Multi-Core Operating<br />
System on the PlayStation 3. Poster presentation at [http://www.sigcse.org/sigcse2010/ SIGCSE 2010]<br />
[http://src.acm.org/ ACM Student Research Competition], undergraduate division, Milwaukee, Wisconsin, March 2010.<br />
<br />
<li> Aaron Gember and Dennis Brylow. Real-Time TCP Extensions. Poster<br />
presentation and research talk presented at [http://www.cs.arizona.edu/groups/sigcse09/ SIGCSE 2009]<br />
[http://src.acm.org/ ACM Student Research Competition], undergraduate division, Chattanooga, Tennessee. Aaron advanced to<br />
semi-finals, placed in top<br />
three finalists, and advanced to the grand finals.<br />
<br />
<li>Dennis Brylow. Experimental Operating System Lab On A Dime.<br />
[http://www.cs.potsdam.edu/sigcse07/ SIGCSE 2007]: Technical Symposium on Computer Science Education, Covington, Kentucky,<br />
March 2007. [http://www.mscs.mu.edu/~brylow/papers/Brylow-SIGCSE2007.pdf (link)].<br />
<br />
=== Workshops ===<br />
<br />
<li> Paul Ruth and Dennis Brylow. Teaching With Embedded Xinu. Workshop<br />
accepted at [http://www.cs.olemiss.edu/acmse2010/Home.htm ACMSE 2010]:<br />
The 48th ACM Southeast Conference, Oxford, Mississippi, April 2010.<br />
<br />
<li>Dennis Brylow and Paul Ruth. Teaching With Embedded Xinu. Workshop<br />
accepted at [http://www.sigcse.org/sigcse2010/ SIGCSE 2010]:<br />
The 41st ACM Technical Symposium on Computer Science Education, Milwaukee,<br />
Wisconsin, March 2010.<br />
<br />
== Lab Equipment ==<br />
<br />
The [[Systems Laboratory]] is populated with dual-headed Linux boxes running the latest version of [http://fedoraproject.org/ Fedora Linux].<br />
Other workstations in the lab include a dual-core Apple G5 running OS X, and several multi-core boxes for higher-end computation.<br />
<br />
The Xinu Laboratory component of the Systems Lab includes a pool of 24 WRT54GL wireless routers organized into a managed embedded<br />
backend pool, as well as smaller quantities of half a dozen other router types. Embedded development kits available include<br />
the Freescale/Motorola [http://www.evbplus.com/hcs12.html 68HC12 Dragon12] board,<br />
the Atmel [http://www.atmel.com/dyn/products/tools_card.asp?tool_id=2717 AT91 Series ARM Thumb] AT91EB40A board,<br />
the [http://www.atmel.com/products/AVR/butterfly ATmega169 Butterfly],<br />
a Zilog [http://www.zilog.com/docs/z8/devtools/z86ccp01zem.pdf Z86 Emulator Z86CCP01ZEM],<br />
and the Zilog [http://www.zilog.com/index.php?option=com_product&Itemid=26&mode=showProdDet&businessLine=1&familyId=6&productId=Z8F04A28100KIT Z8 Encore XP Dev Kit Z8F04A28100KIT-C].<br />
<br />
The Systems Lab includes both a private research network with our own gateway and firewall, and connections to each of the MSCS department production networks.<br />
The Lab also hosts Subversion, Trac, and Web service for the Marquette Student [http://acm.mscs.mu.edu/ ACM Chapter], the<br />
[http://mulug.mscs.mu.edu/ Marquette University Linux Users Group], and a stratum 2 NTP server for campus.<br />
<br />
== Lab Personnel ==<br />
<br />
=== Current Students ===<br />
<br />
[[File:XINU-Summer2011.png|800px|thumb]] The Xinu Team in Summer 2011.<br />
<br />
From left,<br />
[http://jasoncowdy.com/ Jason Cowdy],<br />
[http://www.linkedin.com/pub/kyle-persohn/31/a31/990 Kyle Persohn],<br />
[http://www.facebook.com/MattBajzek Matt Bajzek],<br />
[http://www.linkedin.com/pub/paul-spillane/22/a07/56b Paul Spillane],<br />
[http://www.mscs.mu.edu/~brylow/ Dr. Dennis Brylow],<br />
Anna Whitley, and<br />
[http://www.linkedin.com/pub/blas-victor/27/781/351 Victor Blas].<br />
Not pictured:<br />
[http://mziwisky.wordpress.com/ Mike Ziwisky].<br />
<br />
=== Alumni ===<br />
<br />
[http://phinze.com Paul Hinze], B.S. 2008. Currently works as a developer for [http://braintreepayments.com Braintree].<br />
<br />
[http://research.engineering.wustl.edu/~schultzm/ Mike Schultz], M.S. 2009. Now at [http://cse.wustl.edu/Pages/default.aspx Washington University in St. Louis] doctoral program.<br />
<br />
Tim Blattner, B.S. 2009. Now at [http://www.cs.umbc.edu/ University of Maryland - Baltimore County] doctoral program.<br />
<br />
[http://www.gemberdesign.com/ Aaron Gember], B.S. 2009. Now at [http://www.cs.wisc.edu/ University of Wisconsin-Madison] doctoral program.<br />
<br />
[http://netkow.com/ Matt Netkow], B.S. 2009. Now works as a developer for [http://www.savogroup.com/ The SAVO Group].<br />
<br />
Adam Mallen, B.S. 2009. Now at [http://www.marquette.edu/mscs/ Marquette University] doctoral program in Computational Sciences with an emphasis in Math.<br />
<br />
Adam Koehler, M.S. 2010. Now at [http://www1.cs.ucr.edu/index.php University of California Riverside] doctoral program.<br />
<br />
[http://www.zacintosh.com/ Zachary Lund], M.S. 2010. Now works as the lead developer for [http://www.savtrans.com/ SAV Transportation Group].<br />
<br />
Joseph Pintozzi, B.S. 2010. Now works as a developer for [http://core-apps.com/ Core-Apps, LLC].</div>Brylowhttps://xinu.cs.mu.edu/index.php?title=Systems_Laboratory&diff=3946Systems Laboratory2012-03-16T16:11:11Z<p>Brylow: /* About the Systems Laboratory */</p>
<hr />
<div>== About the Systems Laboratory ==<br />
<br />
[http://www.mu.edu/ Marquette]'s [[Systems Laboratory]], under the direction of [http://www.mscs.mu.edu/~brylow/ Dr. Dennis Brylow] in the [http://www.mscs.mu.edu/ Department of Mathematics, Statistics, and Computer Science], is housed on the third floor of Cudahy Hall.<br />
<br />
The lab creates new tools and methods for building and studying complex computer systems. Our emphasis is on embedded, real-time, and network systems, with strong ties to the electrical and computer engineering community, and the computer science education community. Current and recent projects include:<br />
<br />
1. Experimental Embedded Networking Platform. Creation of laboratory infrastructure and software for research and education in the area of embedded networking appliances, particularly wireless routers and IP telephony. Collaboration with Cisco Systems Advanced Research Division.<br />
<br />
2. Experimental Embedded Operating System Laboratory. Creation of laboratory infrastructure and software for research and education in area of embedded operating systems. Collaboration with University of Buffalo and University of Mississippi, with funding from the [http://www.nsf.gov/ National Science Foundation].<br />
<br />
3. Embedded Software Transactional Memory. Exploration of an innovative transactional memory model for guaranteeing process synchronization in embedded operating systems. Collaboration with Intel Research.<br />
<br />
4. Many-core Embedded Operating System Laboratory. A port of Embedded Xinu to the [http://techresearch.intel.com/ProjectDetails.aspx?Id=1 48-core SCC processor].<br />
<br />
The Systems Lab hosts undergraduate [http://acm.mscs.mu.edu/reu REU] (Research Experience for Undergraduates) students each summer, funded by a variety of sources including<br />
MU's College of Arts and Sciences and the [http://www.nsf.gov/ National Science Foundation].<br />
<br />
See the MSCS [http://www.mscs.mu.edu/mscs/faculty/research_labs.html Research Labs] page for more research laboratories in our department.<br />
<br />
== Publications ==<br />
<br />
=== Conference Proceedings and Journals ===<br />
<li>Paul Ruth and Dennis Brylow. An Experimental Nexos Laboratory Using Virtual Xinu. In <i>Proceedings of [http://fie-conference.org/fie2011/ FIE 2011]: 41st ASEE/IEEE Frontiers in Education Conference</i>, pages S2E-1-S2E-6, Rapid City, South Dakota, October 2011. <br />
[http://dx.doi.org/10.1109/FIE.2011.6143069 (link)]<br />
<br />
<li>Kyle Persohn and Dennis Brylow. Interactive Real-Time Embedded Systems Education Infused with Applied <br />
Internet Telephony. In <i>Proceedings of [http://compsac.cs.iastate.edu/ COMPSAC 2011]: 35th IEEE Computer Software<br />
and Applications Conference</i>, pages 199-204, Munich, Germany, July 2011.<br />
[http://dx.doi.org/10.1109/COMPSAC.2011.33 (link)]<br />
<br />
<li>Dennis Brylow and Kyle Thurow. Hands-on Networking Labs With Embedded Routers. In <i>Proceedings of [http://www.sigcse.org/sigcse2011/ SIGCSE 2011]: The 42nd ACM Technical Symposium on Computer Science Education</i>, pages 399-404, Dallas, Texas, March 2011.<br />
[http://doi.acm.org/10.1145/1953163.1953283 (link)]<br />
<br />
<li>Matt Netkow and Dennis Brylow. Xest: An Automated Framework for Regression Testing of Embedded Software. In <i>Proceedings of [http://www.artist-embedded.org/artist/-WESE-10-.html WESE 2010]: 6th Workshop on Embedded Systems Education</i>, pages 40-47, Scottsdale, Arizona, October 2010.<br />
[http://www.artist-embedded.org/docs/Events/2010/WESE/Proceedings_WESE_2010.pdf (link)]<br />
<br />
<li>Adam Mallen and Dennis Brylow. Compiler Construction With A Dash of Concurrency and An Embedded Twist. In <i>Proceedings of [http://splashcon.org/ SPLASH 2010]: Systems, Programming, Languages, and Applications: Software for Humanity</i> (formerly OOPSLA) Educators' and Trainers' Symposium, pages 161-168, Reno, Nevada, October 2010. <br />
[http://dx.doi.org/10.1145/1869542.1869568 (link)]<br />
<br />
<li>Dennis Brylow and Bina Ramamurthy. Nexos: A Next Generation Embedded<br />
Systems Laboratory, In <i>Proceedings of WESE 2008: 4th Workshop on Embedded<br />
Systems Education</i>, pages 10-17, Atlanta, Georgia, October 2008.<br />
[http://www.lulu.com/content/3613764 (link)]<br /><br />
Extended version in <i>SIGBED Review</i>, Volume 6, Number 1, January 2009.<br />
[http://www.cs.virginia.edu/sigbed/archives/2009-01/j-7-wese-journal-p18-final-brylow.pdf (link)]<br />
<br />
<li>Dennis Brylow. An Experimental Laboratory Environment for Teaching Embedded <br />
Operating Systems, In <i>Proceedings of [http://www.cs.duke.edu/sigcse08/ SIGCSE 2008]: The 39th ACM Technical Symposium on Computer Science Education</i>, pages 192-196, Portland, Oregon, March 2008. [http://doi.acm.org/10.1145/1352322.1352201 (link)]<br />
<br />
<li>Dennis Brylow. An Experimental Laboratory Environment for Teaching Embedded Hardware Systems, In <i>Proceedings of<br />
[http://www.ncsu.edu/wcae/ISCA2007/FinalProgram.html WCAE 2007]:<br />
Workshop on Computer Architecture Education</i>,<br />
pages 44-51, San Diego, California, June 2007.<br />
[http://www.mscs.mu.edu/~brylow/papers/Brylow-WCAE2007.pdf (link)]<br />
<br />
=== Posters and Undergraduate Research ===<br />
<br />
<li> Kyle Thurow and Dennis Brylow. A Network Emulator on Embedded Xinu.<br />
Poster presentation and research talk presented at [http://www.sigcse.org/sigcse2010/ SIGCSE 2010]<br />
[http://src.acm.org/ ACM Student Research Competition], undergraduate division, Milwaukee, Wisconsin, March 2010. Kyle placed in the top five and advanced to the semi-finals round.<br />
<br />
<li> Gabe Van Eyck and Dennis Brylow. Xinu as a Multi-Core Operating<br />
System on the PlayStation 3. Poster presentation at [http://www.sigcse.org/sigcse2010/ SIGCSE 2010]<br />
[http://src.acm.org/ ACM Student Research Competition], undergraduate division, Milwaukee, Wisconsin, March 2010.<br />
<br />
<li> Aaron Gember and Dennis Brylow. Real-Time TCP Extensions. Poster<br />
presentation and research talk presented at [http://www.cs.arizona.edu/groups/sigcse09/ SIGCSE 2009]<br />
[http://src.acm.org/ ACM Student Research Competition], undergraduate division, Chattanooga, Tennessee. Aaron advanced to<br />
semi-finals, placed in top<br />
three finalists, and advanced to the grand finals.<br />
<br />
<li>Dennis Brylow. Experimental Operating System Lab On A Dime.<br />
[http://www.cs.potsdam.edu/sigcse07/ SIGCSE 2007]: Technical Symposium on Computer Science Education, Covington, Kentucky,<br />
March 2007. [http://www.mscs.mu.edu/~brylow/papers/Brylow-SIGCSE2007.pdf (link)].<br />
<br />
=== Workshops ===<br />
<br />
<li> Paul Ruth and Dennis Brylow. Teaching With Embedded Xinu. Workshop<br />
accepted at [http://www.cs.olemiss.edu/acmse2010/Home.htm ACMSE 2010]:<br />
The 48th ACM Southeast Conference, Oxford, Mississippi, April 2010.<br />
<br />
<li>Dennis Brylow and Paul Ruth. Teaching With Embedded Xinu. Workshop<br />
accepted at [http://www.sigcse.org/sigcse2010/ SIGCSE 2010]:<br />
The 41st ACM Technical Symposium on Computer Science Education, Milwaukee,<br />
Wisconsin, March 2010.<br />
<br />
== Lab Equipment ==<br />
<br />
The [[Systems Laboratory]] is populated with dual-headed Linux boxes running the latest version of [http://fedoraproject.org/ Fedora Linux].<br />
Other workstations in the lab include a dual-core Apple G5 running OS X, and several multi-core boxes for higher-end computation.<br />
<br />
The Xinu Laboratory component of the Systems Lab includes a pool of 24 WRT54GL wireless routers organized into a managed embedded<br />
backend pool, as well as smaller quantities of half a dozen other router types. Embedded development kits available include<br />
the Freescale/Motorola [http://www.evbplus.com/hcs12.html 68HC12 Dragon12] board,<br />
the Atmel [http://www.atmel.com/dyn/products/tools_card.asp?tool_id=2717 AT91 Series ARM Thumb] AT91EB40A board,<br />
the [http://www.atmel.com/products/AVR/butterfly ATmega169 Butterfly],<br />
a Zilog [http://www.zilog.com/docs/z8/devtools/z86ccp01zem.pdf Z86 Emulator Z86CCP01ZEM],<br />
and the Zilog [http://www.zilog.com/index.php?option=com_product&Itemid=26&mode=showProdDet&businessLine=1&familyId=6&productId=Z8F04A28100KIT Z8 Encore XP Dev Kit Z8F04A28100KIT-C].<br />
<br />
The Systems Lab includes both a private research network with our own gateway and firewall, and connections to each of the MSCS department production networks.<br />
The Lab also hosts Subversion, Trac, and Web service for the Marquette Student [http://acm.mscs.mu.edu/ ACM Chapter], the<br />
[http://mulug.mscs.mu.edu/ Marquette University Linux Users Group], and a stratum 2 NTP server for campus.<br />
<br />
== Lab Personnel ==<br />
<br />
=== Current Students ===<br />
<br />
[[File:XINU-Summer2011.png|800px|thumb]] The Xinu Team in Summer 2011.<br />
<br />
From left,<br />
[http://jasoncowdy.com/ Jason Cowdy],<br />
[http://www.linkedin.com/pub/kyle-persohn/31/a31/990 Kyle Persohn],<br />
[http://www.facebook.com/MattBajzek Matt Bajzek],<br />
[http://www.linkedin.com/pub/paul-spillane/22/a07/56b Paul Spillane],<br />
[http://www.mscs.mu.edu/~brylow/ Dr. Dennis Brylow],<br />
Anna Whitley, and<br />
[http://www.linkedin.com/pub/blas-victor/27/781/351 Victor Blas].<br />
Not pictured:<br />
[http://mziwisky.wordpress.com/ Mike Ziwisky].<br />
<br />
=== Alumni ===<br />
<br />
[http://phinze.com Paul Hinze], B.S. 2008. Currently works as a developer for [http://braintreepayments.com Braintree].<br />
<br />
[http://research.engineering.wustl.edu/~schultzm/ Mike Schultz], M.S. 2009. Now at [http://cse.wustl.edu/Pages/default.aspx Washington University in St. Louis] doctoral program.<br />
<br />
Tim Blattner, B.S. 2009. Now at [http://www.cs.umbc.edu/ University of Maryland - Baltimore County] doctoral program.<br />
<br />
[http://www.gemberdesign.com/ Aaron Gember], B.S. 2009. Now at [http://www.cs.wisc.edu/ University of Wisconsin-Madison] doctoral program.<br />
<br />
[http://netkow.com/ Matt Netkow], B.S. 2009. Now works as a developer for [http://www.savogroup.com/ The SAVO Group].<br />
<br />
Adam Mallen, B.S. 2009. Now at [http://www.marquette.edu/mscs/ Marquette University] doctoral program in Computational Sciences with an emphasis in Math.<br />
<br />
Adam Koehler, M.S. 2010. Now at [http://www1.cs.ucr.edu/index.php University of California Riverside] doctoral program.<br />
<br />
[http://www.zacintosh.com/ Zachary Lund], M.S. 2010. Now works as the lead developer for [http://www.savtrans.com/ SAV Transportation Group].<br />
<br />
Joseph Pintozzi, B.S. 2010. Now works as a developer for [http://core-apps.com/ Core-Apps, LLC].</div>Brylowhttps://xinu.cs.mu.edu/index.php?title=Systems_Laboratory&diff=3945Systems Laboratory2012-03-16T15:56:57Z<p>Brylow: /* Conference Proceedings and Journals */</p>
<hr />
<div>== About the Systems Laboratory ==<br />
<br />
[http://www.mu.edu/ Marquette]'s [[Systems Laboratory]], under the direction of [http://www.mscs.mu.edu/~brylow/ Dr. Dennis Brylow] in the [http://www.mscs.mu.edu/ Department of Mathematics, Statistics, and Computer Science], is housed on the third floor of Cudahy Hall.<br />
<br />
The lab creates new tools and methods for building and studying complex computer systems. Our emphasis is on embedded, real-time, and network systems, with strong ties to the electrical and computer engineering community, and the computer science education community. Current projects include:<br />
<br />
1. Experimental Embedded Networking Platform. Creation of laboratory infrastructure and software for research and education in the area of embedded networking appliances, particularly wireless routers and IP telephony. Collaboration with Cisco Systems Advanced Research Division.<br />
<br />
2. Experimental Embedded Operating System Laboratory. Creation of laboratory infrastructure and software for research and education in area of embedded operating systems. Collaboration with University of Buffalo and University of Mississippi, with funding from the National Science Founcation.<br />
<br />
3. Embedded Software Transactional Memory. Exploration of an innovative transactional memory model for guaranteeing process synchronization in embedded operating systems. Collaboration with Intel Research.<br />
<br />
The Systems Lab will host three undergraduate [http://acm.mscs.mu.edu/reu REU] (Research Experience for Undergraduates) students in summer 2010, funded by the MU's College of Arts and Sciences. They will be working on ports of the Embedded Xinu operating system to new embedded platforms, embedded network emulation, and multicore embedded systems.<br />
<br />
See the MSCS [http://www.mscs.mu.edu/mscs/faculty/research_labs.html Research Labs] page for more research laboratories in our department.<br />
<br />
== Publications ==<br />
<br />
=== Conference Proceedings and Journals ===<br />
<li>Paul Ruth and Dennis Brylow. An Experimental Nexos Laboratory Using Virtual Xinu. In <i>Proceedings of [http://fie-conference.org/fie2011/ FIE 2011]: 41st ASEE/IEEE Frontiers in Education Conference</i>, pages S2E-1-S2E-6, Rapid City, South Dakota, October 2011. <br />
[http://dx.doi.org/10.1109/FIE.2011.6143069 (link)]<br />
<br />
<li>Kyle Persohn and Dennis Brylow. Interactive Real-Time Embedded Systems Education Infused with Applied <br />
Internet Telephony. In <i>Proceedings of [http://compsac.cs.iastate.edu/ COMPSAC 2011]: 35th IEEE Computer Software<br />
and Applications Conference</i>, pages 199-204, Munich, Germany, July 2011.<br />
[http://dx.doi.org/10.1109/COMPSAC.2011.33 (link)]<br />
<br />
<li>Dennis Brylow and Kyle Thurow. Hands-on Networking Labs With Embedded Routers. In <i>Proceedings of [http://www.sigcse.org/sigcse2011/ SIGCSE 2011]: The 42nd ACM Technical Symposium on Computer Science Education</i>, pages 399-404, Dallas, Texas, March 2011.<br />
[http://doi.acm.org/10.1145/1953163.1953283 (link)]<br />
<br />
<li>Matt Netkow and Dennis Brylow. Xest: An Automated Framework for Regression Testing of Embedded Software. In <i>Proceedings of [http://www.artist-embedded.org/artist/-WESE-10-.html WESE 2010]: 6th Workshop on Embedded Systems Education</i>, pages 40-47, Scottsdale, Arizona, October 2010.<br />
[http://www.artist-embedded.org/docs/Events/2010/WESE/Proceedings_WESE_2010.pdf (link)]<br />
<br />
<li>Adam Mallen and Dennis Brylow. Compiler Construction With A Dash of Concurrency and An Embedded Twist. In <i>Proceedings of [http://splashcon.org/ SPLASH 2010]: Systems, Programming, Languages, and Applications: Software for Humanity</i> (formerly OOPSLA) Educators' and Trainers' Symposium, pages 161-168, Reno, Nevada, October 2010. <br />
[http://dx.doi.org/10.1145/1869542.1869568 (link)]<br />
<br />
<li>Dennis Brylow and Bina Ramamurthy. Nexos: A Next Generation Embedded<br />
Systems Laboratory, In <i>Proceedings of WESE 2008: 4th Workshop on Embedded<br />
Systems Education</i>, pages 10-17, Atlanta, Georgia, October 2008.<br />
[http://www.lulu.com/content/3613764 (link)]<br /><br />
Extended version in <i>SIGBED Review</i>, Volume 6, Number 1, January 2009.<br />
[http://www.cs.virginia.edu/sigbed/archives/2009-01/j-7-wese-journal-p18-final-brylow.pdf (link)]<br />
<br />
<li>Dennis Brylow. An Experimental Laboratory Environment for Teaching Embedded <br />
Operating Systems, In <i>Proceedings of [http://www.cs.duke.edu/sigcse08/ SIGCSE 2008]: The 39th ACM Technical Symposium on Computer Science Education</i>, pages 192-196, Portland, Oregon, March 2008. [http://doi.acm.org/10.1145/1352322.1352201 (link)]<br />
<br />
<li>Dennis Brylow. An Experimental Laboratory Environment for Teaching Embedded Hardware Systems, In <i>Proceedings of<br />
[http://www.ncsu.edu/wcae/ISCA2007/FinalProgram.html WCAE 2007]:<br />
Workshop on Computer Architecture Education</i>,<br />
pages 44-51, San Diego, California, June 2007.<br />
[http://www.mscs.mu.edu/~brylow/papers/Brylow-WCAE2007.pdf (link)]<br />
<br />
=== Posters and Undergraduate Research ===<br />
<br />
<li> Kyle Thurow and Dennis Brylow. A Network Emulator on Embedded Xinu.<br />
Poster presentation and research talk presented at [http://www.sigcse.org/sigcse2010/ SIGCSE 2010]<br />
[http://src.acm.org/ ACM Student Research Competition], undergraduate division, Milwaukee, Wisconsin, March 2010. Kyle placed in the top five and advanced to the semi-finals round.<br />
<br />
<li> Gabe Van Eyck and Dennis Brylow. Xinu as a Multi-Core Operating<br />
System on the PlayStation 3. Poster presentation at [http://www.sigcse.org/sigcse2010/ SIGCSE 2010]<br />
[http://src.acm.org/ ACM Student Research Competition], undergraduate division, Milwaukee, Wisconsin, March 2010.<br />
<br />
<li> Aaron Gember and Dennis Brylow. Real-Time TCP Extensions. Poster<br />
presentation and research talk presented at [http://www.cs.arizona.edu/groups/sigcse09/ SIGCSE 2009]<br />
[http://src.acm.org/ ACM Student Research Competition], undergraduate division, Chattanooga, Tennessee. Aaron advanced to<br />
semi-finals, placed in top<br />
three finalists, and advanced to the grand finals.<br />
<br />
<li>Dennis Brylow. Experimental Operating System Lab On A Dime.<br />
[http://www.cs.potsdam.edu/sigcse07/ SIGCSE 2007]: Technical Symposium on Computer Science Education, Covington, Kentucky,<br />
March 2007. [http://www.mscs.mu.edu/~brylow/papers/Brylow-SIGCSE2007.pdf (link)].<br />
<br />
=== Workshops ===<br />
<br />
<li> Paul Ruth and Dennis Brylow. Teaching With Embedded Xinu. Workshop<br />
accepted at [http://www.cs.olemiss.edu/acmse2010/Home.htm ACMSE 2010]:<br />
The 48th ACM Southeast Conference, Oxford, Mississippi, April 2010.<br />
<br />
<li>Dennis Brylow and Paul Ruth. Teaching With Embedded Xinu. Workshop<br />
accepted at [http://www.sigcse.org/sigcse2010/ SIGCSE 2010]:<br />
The 41st ACM Technical Symposium on Computer Science Education, Milwaukee,<br />
Wisconsin, March 2010.<br />
<br />
== Lab Equipment ==<br />
<br />
The [[Systems Laboratory]] is populated with dual-headed Linux boxes running the latest version of [http://fedoraproject.org/ Fedora Linux].<br />
Other workstations in the lab include a dual-core Apple G5 running OS X, and several multi-core boxes for higher-end computation.<br />
<br />
The Xinu Laboratory component of the Systems Lab includes a pool of 24 WRT54GL wireless routers organized into a managed embedded<br />
backend pool, as well as smaller quantities of half a dozen other router types. Embedded development kits available include<br />
the Freescale/Motorola [http://www.evbplus.com/hcs12.html 68HC12 Dragon12] board,<br />
the Atmel [http://www.atmel.com/dyn/products/tools_card.asp?tool_id=2717 AT91 Series ARM Thumb] AT91EB40A board,<br />
the [http://www.atmel.com/products/AVR/butterfly ATmega169 Butterfly],<br />
a Zilog [http://www.zilog.com/docs/z8/devtools/z86ccp01zem.pdf Z86 Emulator Z86CCP01ZEM],<br />
and the Zilog [http://www.zilog.com/index.php?option=com_product&Itemid=26&mode=showProdDet&businessLine=1&familyId=6&productId=Z8F04A28100KIT Z8 Encore XP Dev Kit Z8F04A28100KIT-C].<br />
<br />
The Systems Lab includes both a private research network with our own gateway and firewall, and connections to each of the MSCS department production networks.<br />
The Lab also hosts Subversion, Trac, and Web service for the Marquette Student [http://acm.mscs.mu.edu/ ACM Chapter], the<br />
[http://mulug.mscs.mu.edu/ Marquette University Linux Users Group], and a stratum 2 NTP server for campus.<br />
<br />
== Lab Personnel ==<br />
<br />
=== Current Students ===<br />
<br />
[[File:XINU-Summer2011.png|800px|thumb]] The Xinu Team in Summer 2011.<br />
<br />
From left,<br />
[http://jasoncowdy.com/ Jason Cowdy],<br />
[http://www.linkedin.com/pub/kyle-persohn/31/a31/990 Kyle Persohn],<br />
[http://www.facebook.com/MattBajzek Matt Bajzek],<br />
[http://www.linkedin.com/pub/paul-spillane/22/a07/56b Paul Spillane],<br />
[http://www.mscs.mu.edu/~brylow/ Dr. Dennis Brylow],<br />
Anna Whitley, and<br />
[http://www.linkedin.com/pub/blas-victor/27/781/351 Victor Blas].<br />
Not pictured:<br />
[http://mziwisky.wordpress.com/ Mike Ziwisky].<br />
<br />
=== Alumni ===<br />
<br />
[http://phinze.com Paul Hinze], B.S. 2008. Currently works as a developer for [http://braintreepayments.com Braintree].<br />
<br />
[http://research.engineering.wustl.edu/~schultzm/ Mike Schultz], M.S. 2009. Now at [http://cse.wustl.edu/Pages/default.aspx Washington University in St. Louis] doctoral program.<br />
<br />
Tim Blattner, B.S. 2009. Now at [http://www.cs.umbc.edu/ University of Maryland - Baltimore County] doctoral program.<br />
<br />
[http://www.gemberdesign.com/ Aaron Gember], B.S. 2009. Now at [http://www.cs.wisc.edu/ University of Wisconsin-Madison] doctoral program.<br />
<br />
[http://netkow.com/ Matt Netkow], B.S. 2009. Now works as a developer for [http://www.savogroup.com/ The SAVO Group].<br />
<br />
Adam Mallen, B.S. 2009. Now at [http://www.marquette.edu/mscs/ Marquette University] doctoral program in Computational Sciences with an emphasis in Math.<br />
<br />
Adam Koehler, M.S. 2010. Now at [http://www1.cs.ucr.edu/index.php University of California Riverside] doctoral program.<br />
<br />
[http://www.zacintosh.com/ Zachary Lund], M.S. 2010. Now works as the lead developer for [http://www.savtrans.com/ SAV Transportation Group].<br />
<br />
Joseph Pintozzi, B.S. 2010. Now works as a developer for [http://core-apps.com/ Core-Apps, LLC].</div>Brylowhttps://xinu.cs.mu.edu/index.php?title=Systems_Laboratory&diff=3928Systems Laboratory2011-10-08T19:46:41Z<p>Brylow: /* Conference Proceedings and Journals */</p>
<hr />
<div>== About the Systems Laboratory ==<br />
<br />
[http://www.mu.edu/ Marquette]'s [[Systems Laboratory]], under the direction of [http://www.mscs.mu.edu/~brylow/ Dr. Dennis Brylow] in the [http://www.mscs.mu.edu/ Department of Mathematics, Statistics, and Computer Science], is housed on the third floor of Cudahy Hall.<br />
<br />
The lab creates new tools and methods for building and studying complex computer systems. Our emphasis is on embedded, real-time, and network systems, with strong ties to the electrical and computer engineering community, and the computer science education community. Current projects include:<br />
<br />
1. Experimental Embedded Networking Platform. Creation of laboratory infrastructure and software for research and education in the area of embedded networking appliances, particularly wireless routers and IP telephony. Collaboration with Cisco Systems Advanced Research Division.<br />
<br />
2. Experimental Embedded Operating System Laboratory. Creation of laboratory infrastructure and software for research and education in area of embedded operating systems. Collaboration with University of Buffalo and University of Mississippi, with funding from the National Science Founcation.<br />
<br />
3. Embedded Software Transactional Memory. Exploration of an innovative transactional memory model for guaranteeing process synchronization in embedded operating systems. Collaboration with Intel Research.<br />
<br />
The Systems Lab will host three undergraduate [http://acm.mscs.mu.edu/reu REU] (Research Experience for Undergraduates) students in summer 2010, funded by the MU's College of Arts and Sciences. They will be working on ports of the Embedded Xinu operating system to new embedded platforms, embedded network emulation, and multicore embedded systems.<br />
<br />
See the MSCS [http://www.mscs.mu.edu/mscs/faculty/research_labs.html Research Labs] page for more research laboratories in our department.<br />
<br />
== Publications ==<br />
<br />
=== Conference Proceedings and Journals ===<br />
<li>Kyle Persohn and Dennis Brylow. Interactive Real-Time Embedded Systems Education Infused with Applied <br />
Internet Telephony. In <i>Proceedings of [http://compsac.cs.iastate.edu/ COMPSAC 2011]: 35th IEEE Computer Software<br />
and Applications Conference</i>, pages 199-204, Munich, Germany, July 2011.<br />
[http://dx.doi.org/10.1109/COMPSAC.2011.33 (link)]<br />
<br />
<li>Dennis Brylow and Kyle Thurow. Hands-on Networking Labs With Embedded Routers. In <i>Proceedings of [http://www.sigcse.org/sigcse2011/ SIGCSE 2011]: The 42nd ACM Technical Symposium on Computer Science Education</i>, pages 399-404, Dallas, Texas, March 2011.<br />
[http://doi.acm.org/10.1145/1953163.1953283 (link)]<br />
<br />
<li>Matt Netkow and Dennis Brylow. Xest: An Automated Framework for Regression Testing of Embedded Software. In <i>Proceedings of [http://www.artist-embedded.org/artist/-WESE-10-.html WESE 2010]: 6th Workshop on Embedded Systems Education</i>, pages 40-47, Scottsdale, Arizona, October 2010.<br />
[http://www.artist-embedded.org/docs/Events/2010/WESE/Proceedings_WESE_2010.pdf (link)]<br />
<br />
<li>Adam Mallen and Dennis Brylow. Compiler Construction With A Dash of Concurrency and An Embedded Twist. In <i>Proceedings of [http://splashcon.org/ SPLASH 2010]: Systems, Programming, Languages, and Applications: Software for Humanity</i> (formerly OOPSLA) Educators' and Trainers' Symposium, pages 161-168, Reno, Nevada, October 2010. <br />
[http://dx.doi.org/10.1145/1869542.1869568 (link)]<br />
<br />
<li>Dennis Brylow and Bina Ramamurthy. Nexos: A Next Generation Embedded<br />
Systems Laboratory, In <i>Proceedings of WESE 2008: 4th Workshop on Embedded<br />
Systems Education</i>, pages 10-17, Atlanta, Georgia, October 2008.<br />
[http://www.lulu.com/content/3613764 (link)]<br /><br />
Extended version in <i>SIGBED Review</i>, Volume 6, Number 1, January 2009.<br />
[http://www.cs.virginia.edu/sigbed/archives/2009-01/j-7-wese-journal-p18-final-brylow.pdf (link)]<br />
<br />
<li>Dennis Brylow. An Experimental Laboratory Environment for Teaching Embedded <br />
Operating Systems, In <i>Proceedings of [http://www.cs.duke.edu/sigcse08/ SIGCSE 2008]: The 39th ACM Technical Symposium on Computer Science Education</i>, pages 192-196, Portland, Oregon, March 2008. [http://doi.acm.org/10.1145/1352322.1352201 (link)]<br />
<br />
<li>Dennis Brylow. An Experimental Laboratory Environment for Teaching Embedded Hardware Systems, In <i>Proceedings of<br />
[http://www.ncsu.edu/wcae/ISCA2007/FinalProgram.html WCAE 2007]:<br />
Workshop on Computer Architecture Education</i>,<br />
pages 44-51, San Diego, California, June 2007.<br />
[http://www.mscs.mu.edu/~brylow/papers/Brylow-WCAE2007.pdf (link)]<br />
<br />
=== Posters and Undergraduate Research ===<br />
<br />
<li> Kyle Thurow and Dennis Brylow. A Network Emulator on Embedded Xinu.<br />
Poster presentation and research talk presented at [http://www.sigcse.org/sigcse2010/ SIGCSE 2010]<br />
[http://src.acm.org/ ACM Student Research Competition], undergraduate division, Milwaukee, Wisconsin, March 2010. Kyle placed in the top five and advanced to the semi-finals round.<br />
<br />
<li> Gabe Van Eyck and Dennis Brylow. Xinu as a Multi-Core Operating<br />
System on the PlayStation 3. Poster presentation at [http://www.sigcse.org/sigcse2010/ SIGCSE 2010]<br />
[http://src.acm.org/ ACM Student Research Competition], undergraduate division, Milwaukee, Wisconsin, March 2010.<br />
<br />
<li> Aaron Gember and Dennis Brylow. Real-Time TCP Extensions. Poster<br />
presentation and research talk presented at [http://www.cs.arizona.edu/groups/sigcse09/ SIGCSE 2009]<br />
[http://src.acm.org/ ACM Student Research Competition], undergraduate division, Chattanooga, Tennessee. Aaron advanced to<br />
semi-finals, placed in top<br />
three finalists, and advanced to the grand finals.<br />
<br />
<li>Dennis Brylow. Experimental Operating System Lab On A Dime.<br />
[http://www.cs.potsdam.edu/sigcse07/ SIGCSE 2007]: Technical Symposium on Computer Science Education, Covington, Kentucky,<br />
March 2007. [http://www.mscs.mu.edu/~brylow/papers/Brylow-SIGCSE2007.pdf (link)].<br />
<br />
=== Workshops ===<br />
<br />
<li> Paul Ruth and Dennis Brylow. Teaching With Embedded Xinu. Workshop<br />
accepted at [http://www.cs.olemiss.edu/acmse2010/Home.htm ACMSE 2010]:<br />
The 48th ACM Southeast Conference, Oxford, Mississippi, April 2010.<br />
<br />
<li>Dennis Brylow and Paul Ruth. Teaching With Embedded Xinu. Workshop<br />
accepted at [http://www.sigcse.org/sigcse2010/ SIGCSE 2010]:<br />
The 41st ACM Technical Symposium on Computer Science Education, Milwaukee,<br />
Wisconsin, March 2010.<br />
<br />
== Lab Equipment ==<br />
<br />
The [[Systems Laboratory]] is populated with dual-headed Linux boxes running the latest version of [http://fedoraproject.org/ Fedora Linux].<br />
Other workstations in the lab include a dual-core Apple G5 running OS X, and several multi-core boxes for higher-end computation.<br />
<br />
The Xinu Laboratory component of the Systems Lab includes a pool of 24 WRT54GL wireless routers organized into a managed embedded<br />
backend pool, as well as smaller quantities of half a dozen other router types. Embedded development kits available include<br />
the Freescale/Motorola [http://www.evbplus.com/hcs12.html 68HC12 Dragon12] board,<br />
the Atmel [http://www.atmel.com/dyn/products/tools_card.asp?tool_id=2717 AT91 Series ARM Thumb] AT91EB40A board,<br />
the [http://www.atmel.com/products/AVR/butterfly ATmega169 Butterfly],<br />
a Zilog [http://www.zilog.com/docs/z8/devtools/z86ccp01zem.pdf Z86 Emulator Z86CCP01ZEM],<br />
and the Zilog [http://www.zilog.com/index.php?option=com_product&Itemid=26&mode=showProdDet&businessLine=1&familyId=6&productId=Z8F04A28100KIT Z8 Encore XP Dev Kit Z8F04A28100KIT-C].<br />
<br />
The Systems Lab includes both a private research network with our own gateway and firewall, and connections to each of the MSCS department production networks.<br />
The Lab also hosts Subversion, Trac, and Web service for the Marquette Student [http://acm.mscs.mu.edu/ ACM Chapter], the<br />
[http://mulug.mscs.mu.edu/ Marquette University Linux Users Group], and a stratum 2 NTP server for campus.<br />
<br />
== Lab Personnel ==<br />
<br />
=== Current Students ===<br />
<br />
[[File:XINU-Summer2011.png|800px|thumb]] The Xinu Team in Summer 2011.<br />
<br />
From left,<br />
[http://jasoncowdy.com/ Jason Cowdy],<br />
[http://www.linkedin.com/pub/kyle-persohn/31/a31/990 Kyle Persohn],<br />
[http://www.facebook.com/MattBajzek Matt Bajzek],<br />
[http://www.linkedin.com/pub/paul-spillane/22/a07/56b Paul Spillane],<br />
[http://www.mscs.mu.edu/~brylow/ Dr. Dennis Brylow],<br />
Anna Whitley, and<br />
[http://www.linkedin.com/pub/blas-victor/27/781/351 Victor Blas].<br />
Not pictured:<br />
[http://mziwisky.wordpress.com/ Mike Ziwisky].<br />
<br />
=== Alumni ===<br />
<br />
[http://phinze.com Paul Hinze], B.S. 2008. Currently works as a developer for [http://braintreepayments.com Braintree].<br />
<br />
[http://research.engineering.wustl.edu/~schultzm/ Mike Schultz], M.S. 2009. Now at [http://cse.wustl.edu/Pages/default.aspx Washington University in St. Louis] doctoral program.<br />
<br />
Tim Blattner, B.S. 2009. Now at [http://www.cs.umbc.edu/ University of Maryland - Baltimore County] doctoral program.<br />
<br />
[http://www.gemberdesign.com/ Aaron Gember], B.S. 2009. Now at [http://www.cs.wisc.edu/ University of Wisconsin-Madison] doctoral program.<br />
<br />
[http://netkow.com/ Matt Netkow], B.S. 2009. Now works as a developer for [http://www.savogroup.com/ The SAVO Group].<br />
<br />
Adam Mallen, B.S. 2009. Now at [http://www.marquette.edu/mscs/ Marquette University] doctoral program in Computational Sciences with an emphasis in Math.<br />
<br />
Adam Koehler, M.S. 2010. Now at [http://www1.cs.ucr.edu/index.php University of California Riverside] doctoral program.<br />
<br />
[http://www.zacintosh.com/ Zachary Lund], M.S. 2010. Now works as the lead developer for [http://www.savtrans.com/ SAV Transportation Group].<br />
<br />
Joseph Pintozzi, B.S. 2010. Now works as a developer for [http://core-apps.com/ Core-Apps, LLC].</div>Brylowhttps://xinu.cs.mu.edu/index.php?title=Systems_Laboratory&diff=3917Systems Laboratory2011-08-24T20:39:27Z<p>Brylow: /* Conference Proceedings and Journals */</p>
<hr />
<div>== About the Systems Laboratory ==<br />
<br />
[http://www.mu.edu/ Marquette]'s [[Systems Laboratory]], under the direction of [http://www.mscs.mu.edu/~brylow/ Dr. Dennis Brylow] in the [http://www.mscs.mu.edu/ Department of Mathematics, Statistics, and Computer Science], is housed on the third floor of Cudahy Hall.<br />
<br />
The lab creates new tools and methods for building and studying complex computer systems. Our emphasis is on embedded, real-time, and network systems, with strong ties to the electrical and computer engineering community, and the computer science education community. Current projects include:<br />
<br />
1. Experimental Embedded Networking Platform. Creation of laboratory infrastructure and software for research and education in the area of embedded networking appliances, particularly wireless routers and IP telephony. Collaboration with Cisco Systems Advanced Research Division.<br />
<br />
2. Experimental Embedded Operating System Laboratory. Creation of laboratory infrastructure and software for research and education in area of embedded operating systems. Collaboration with University of Buffalo and University of Mississippi, with funding from the National Science Founcation.<br />
<br />
3. Embedded Software Transactional Memory. Exploration of an innovative transactional memory model for guaranteeing process synchronization in embedded operating systems. Collaboration with Intel Research.<br />
<br />
The Systems Lab will host three undergraduate [http://acm.mscs.mu.edu/reu REU] (Research Experience for Undergraduates) students in summer 2010, funded by the MU's College of Arts and Sciences. They will be working on ports of the Embedded Xinu operating system to new embedded platforms, embedded network emulation, and multicore embedded systems.<br />
<br />
See the MSCS [http://www.mscs.mu.edu/mscs/faculty/research_labs.html Research Labs] page for more research laboratories in our department.<br />
<br />
== Publications ==<br />
<br />
=== Conference Proceedings and Journals ===<br />
<li>Kyle Persohn and Dennis Brylow. Interactive Real-Time Embedded Systems Education Infused with Applied <br />
Internet Telephony. In <i>Proceedings of [http://compsac.cs.iastate.edu/ COMPSAC 2011]: 35th IEEE Computer Software<br />
and Applications Conference</i>, pages 199-204, Munich, Germany, July 2011.<br />
<br />
<li>Dennis Brylow and Kyle Thurow. Hands-on Networking Labs With Embedded Routers. In <i>Proceedings of [http://www.sigcse.org/sigcse2011/ SIGCSE 2011]: The 42nd ACM Technical Symposium on Computer Science Education</i>, pages 399-404, Dallas, Texas, March 2011.<br />
[http://doi.acm.org/10.1145/1953163.1953283 (link)]<br />
<br />
<li>Matt Netkow and Dennis Brylow. Xest: An Automated Framework for Regression Testing of Embedded Software. In <i>Proceedings of [http://www.artist-embedded.org/artist/-WESE-10-.html WESE 2010]: 6th Workshop on Embedded Systems Education</i>, pages 40-47, Scottsdale, Arizona, October 2010.<br />
[http://www.artist-embedded.org/docs/Events/2010/WESE/Proceedings_WESE_2010.pdf (link)]<br />
<br />
<li>Adam Mallen and Dennis Brylow. Compiler Construction With A Dash of Concurrency and An Embedded Twist. In <i>Proceedings of [http://splashcon.org/ SPLASH 2010]: Systems, Programming, Languages, and Applications: Software for Humanity</i> (formerly OOPSLA) Educators' and Trainers' Symposium, pages 161-168, Reno, Nevada, October 2010. <br />
[http://dx.doi.org/10.1145/1869542.1869568 (link)]<br />
<br />
<li>Dennis Brylow and Bina Ramamurthy. Nexos: A Next Generation Embedded<br />
Systems Laboratory, In <i>Proceedings of WESE 2008: 4th Workshop on Embedded<br />
Systems Education</i>, pages 10-17, Atlanta, Georgia, October 2008.<br />
[http://www.lulu.com/content/3613764 (link)]<br /><br />
Extended version in <i>SIGBED Review</i>, Volume 6, Number 1, January 2009.<br />
[http://www.cs.virginia.edu/sigbed/archives/2009-01/j-7-wese-journal-p18-final-brylow.pdf (link)]<br />
<br />
<li>Dennis Brylow. An Experimental Laboratory Environment for Teaching Embedded <br />
Operating Systems, In <i>Proceedings of [http://www.cs.duke.edu/sigcse08/ SIGCSE 2008]: The 39th ACM Technical Symposium on Computer Science Education</i>, pages 192-196, Portland, Oregon, March 2008. [http://doi.acm.org/10.1145/1352322.1352201 (link)]<br />
<br />
<li>Dennis Brylow. An Experimental Laboratory Environment for Teaching Embedded Hardware Systems, In <i>Proceedings of<br />
[http://www.ncsu.edu/wcae/ISCA2007/FinalProgram.html WCAE 2007]:<br />
Workshop on Computer Architecture Education</i>,<br />
pages 44-51, San Diego, California, June 2007.<br />
[http://www.mscs.mu.edu/~brylow/papers/Brylow-WCAE2007.pdf (link)]<br />
<br />
=== Posters and Undergraduate Research ===<br />
<br />
<li> Kyle Thurow and Dennis Brylow. A Network Emulator on Embedded Xinu.<br />
Poster presentation and research talk presented at [http://www.sigcse.org/sigcse2010/ SIGCSE 2010]<br />
[http://src.acm.org/ ACM Student Research Competition], undergraduate division, Milwaukee, Wisconsin, March 2010. Kyle placed in the top five and advanced to the semi-finals round.<br />
<br />
<li> Gabe Van Eyck and Dennis Brylow. Xinu as a Multi-Core Operating<br />
System on the PlayStation 3. Poster presentation at [http://www.sigcse.org/sigcse2010/ SIGCSE 2010]<br />
[http://src.acm.org/ ACM Student Research Competition], undergraduate division, Milwaukee, Wisconsin, March 2010.<br />
<br />
<li> Aaron Gember and Dennis Brylow. Real-Time TCP Extensions. Poster<br />
presentation and research talk presented at [http://www.cs.arizona.edu/groups/sigcse09/ SIGCSE 2009]<br />
[http://src.acm.org/ ACM Student Research Competition], undergraduate division, Chattanooga, Tennessee. Aaron advanced to<br />
semi-finals, placed in top<br />
three finalists, and advanced to the grand finals.<br />
<br />
<li>Dennis Brylow. Experimental Operating System Lab On A Dime.<br />
[http://www.cs.potsdam.edu/sigcse07/ SIGCSE 2007]: Technical Symposium on Computer Science Education, Covington, Kentucky,<br />
March 2007. [http://www.mscs.mu.edu/~brylow/papers/Brylow-SIGCSE2007.pdf (link)].<br />
<br />
=== Workshops ===<br />
<br />
<li> Paul Ruth and Dennis Brylow. Teaching With Embedded Xinu. Workshop<br />
accepted at [http://www.cs.olemiss.edu/acmse2010/Home.htm ACMSE 2010]:<br />
The 48th ACM Southeast Conference, Oxford, Mississippi, April 2010.<br />
<br />
<li>Dennis Brylow and Paul Ruth. Teaching With Embedded Xinu. Workshop<br />
accepted at [http://www.sigcse.org/sigcse2010/ SIGCSE 2010]:<br />
The 41st ACM Technical Symposium on Computer Science Education, Milwaukee,<br />
Wisconsin, March 2010.<br />
<br />
== Lab Equipment ==<br />
<br />
The [[Systems Laboratory]] is populated with dual-headed Linux boxes running the latest version of [http://fedoraproject.org/ Fedora Linux].<br />
Other workstations in the lab include a dual-core Apple G5 running OS X, and several multi-core boxes for higher-end computation.<br />
<br />
The Xinu Laboratory component of the Systems Lab includes a pool of 24 WRT54GL wireless routers organized into a managed embedded<br />
backend pool, as well as smaller quantities of half a dozen other router types. Embedded development kits available include<br />
the Freescale/Motorola [http://www.evbplus.com/hcs12.html 68HC12 Dragon12] board,<br />
the Atmel [http://www.atmel.com/dyn/products/tools_card.asp?tool_id=2717 AT91 Series ARM Thumb] AT91EB40A board,<br />
the [http://www.atmel.com/products/AVR/butterfly ATmega169 Butterfly],<br />
a Zilog [http://www.zilog.com/docs/z8/devtools/z86ccp01zem.pdf Z86 Emulator Z86CCP01ZEM],<br />
and the Zilog [http://www.zilog.com/index.php?option=com_product&Itemid=26&mode=showProdDet&businessLine=1&familyId=6&productId=Z8F04A28100KIT Z8 Encore XP Dev Kit Z8F04A28100KIT-C].<br />
<br />
The Systems Lab includes both a private research network with our own gateway and firewall, and connections to each of the MSCS department production networks.<br />
The Lab also hosts Subversion, Trac, and Web service for the Marquette Student [http://acm.mscs.mu.edu/ ACM Chapter], the<br />
[http://mulug.mscs.mu.edu/ Marquette University Linux Users Group], and a stratum 2 NTP server for campus.<br />
<br />
== Lab Personnel ==<br />
<br />
=== Current Students ===<br />
<br />
[[File:XINU-Summer2011.png|800px|thumb]] The Xinu Team in Summer 2011.<br />
<br />
From left,<br />
[http://jasoncowdy.com/ Jason Cowdy],<br />
[http://www.linkedin.com/pub/kyle-persohn/31/a31/990 Kyle Persohn],<br />
[http://www.facebook.com/MattBajzek Matt Bajzek],<br />
[http://www.linkedin.com/pub/paul-spillane/22/a07/56b Paul Spillane],<br />
[http://www.mscs.mu.edu/~brylow/ Dr. Dennis Brylow],<br />
Anna Whitley, and<br />
[http://www.linkedin.com/pub/blas-victor/27/781/351 Victor Blas].<br />
Not pictured:<br />
[http://mziwisky.wordpress.com/ Mike Ziwisky].<br />
<br />
=== Alumni ===<br />
<br />
[http://phinze.com Paul Hinze], B.S. 2008. Currently works as a developer for [http://braintreepayments.com Braintree].<br />
<br />
[http://research.engineering.wustl.edu/~schultzm/ Mike Schultz], M.S. 2009. Now at [http://cse.wustl.edu/Pages/default.aspx Washington University in St. Louis] doctoral program.<br />
<br />
Tim Blattner, B.S. 2009. Now at [http://www.cs.umbc.edu/ University of Maryland - Baltimore County] doctoral program.<br />
<br />
[http://www.gemberdesign.com/ Aaron Gember], B.S. 2009. Now at [http://www.cs.wisc.edu/ University of Wisconsin-Madison] doctoral program.<br />
<br />
[http://netkow.com/ Matt Netkow], B.S. 2009. Now works as a developer for [http://www.savogroup.com/ The SAVO Group].<br />
<br />
Adam Mallen, B.S. 2009. Now at [http://www.marquette.edu/mscs/ Marquette University] doctoral program in Computational Sciences with an emphasis in Math.<br />
<br />
Adam Koehler, M.S. 2010. Now at [http://www1.cs.ucr.edu/index.php University of California Riverside] doctoral program.<br />
<br />
[http://www.zacintosh.com/ Zachary Lund], M.S. 2010. Now works as the lead developer for [http://www.savtrans.com/ SAV Transportation Group].<br />
<br />
Joseph Pintozzi, B.S. 2010. Now works as a developer for [http://core-apps.com/ Core-Apps, LLC].</div>Brylowhttps://xinu.cs.mu.edu/index.php?title=Systems_Laboratory&diff=3914Systems Laboratory2011-08-08T21:17:07Z<p>Brylow: /* Current Students */</p>
<hr />
<div>== About the Systems Laboratory ==<br />
<br />
[http://www.mu.edu/ Marquette]'s [[Systems Laboratory]], under the direction of [http://www.mscs.mu.edu/~brylow/ Dr. Dennis Brylow] in the [http://www.mscs.mu.edu/ Department of Mathematics, Statistics, and Computer Science], is housed on the third floor of Cudahy Hall.<br />
<br />
The lab creates new tools and methods for building and studying complex computer systems. Our emphasis is on embedded, real-time, and network systems, with strong ties to the electrical and computer engineering community, and the computer science education community. Current projects include:<br />
<br />
1. Experimental Embedded Networking Platform. Creation of laboratory infrastructure and software for research and education in the area of embedded networking appliances, particularly wireless routers and IP telephony. Collaboration with Cisco Systems Advanced Research Division.<br />
<br />
2. Experimental Embedded Operating System Laboratory. Creation of laboratory infrastructure and software for research and education in area of embedded operating systems. Collaboration with University of Buffalo and University of Mississippi, with funding from the National Science Founcation.<br />
<br />
3. Embedded Software Transactional Memory. Exploration of an innovative transactional memory model for guaranteeing process synchronization in embedded operating systems. Collaboration with Intel Research.<br />
<br />
The Systems Lab will host three undergraduate [http://acm.mscs.mu.edu/reu REU] (Research Experience for Undergraduates) students in summer 2010, funded by the MU's College of Arts and Sciences. They will be working on ports of the Embedded Xinu operating system to new embedded platforms, embedded network emulation, and multicore embedded systems.<br />
<br />
See the MSCS [http://www.mscs.mu.edu/mscs/faculty/research_labs.html Research Labs] page for more research laboratories in our department.<br />
<br />
== Publications ==<br />
<br />
=== Conference Proceedings and Journals ===<br />
<li>Dennis Brylow and Kyle Thurow. Hands-on Networking Labs With Embedded Routers. In <i>Proceedings of [http://www.sigcse.org/sigcse2011/ SIGCSE 2011]: The 42nd ACM Technical Symposium on Computer Science Education</i>, pages 399-404, Dallas, Texas, March 2011.<br />
[http://doi.acm.org/10.1145/1953163.1953283 (link)]<br />
<br />
<li>Matt Netkow and Dennis Brylow. Xest: An Automated Framework for Regression Testing of Embedded Software. In <i>Proceedings of [http://www.artist-embedded.org/artist/-WESE-10-.html WESE 2010]: 6th Workshop on Embedded Systems Education</i>, pages 40-47, Scottsdale, Arizona, October 2010.<br />
[http://www.artist-embedded.org/docs/Events/2010/WESE/Proceedings_WESE_2010.pdf (link)]<br />
<br />
<li>Adam Mallen and Dennis Brylow. Compiler Construction With A Dash of Concurrency and An Embedded Twist. In <i>Proceedings of [http://splashcon.org/ SPLASH 2010]: Systems, Programming, Languages, and Applications: Software for Humanity</i> (formerly OOPSLA) Educators' and Trainers' Symposium, pages 161-168, Reno, Nevada, October 2010. <br />
[http://dx.doi.org/10.1145/1869542.1869568 (link)]<br />
<br />
<li>Dennis Brylow and Bina Ramamurthy. Nexos: A Next Generation Embedded<br />
Systems Laboratory, In <i>Proceedings of WESE 2008: 4th Workshop on Embedded<br />
Systems Education</i>, pages 10-17, Atlanta, Georgia, October 2008.<br />
[http://www.lulu.com/content/3613764 (link)]<br /><br />
Extended version in <i>SIGBED Review</i>, Volume 6, Number 1, January 2009.<br />
[http://www.cs.virginia.edu/sigbed/archives/2009-01/j-7-wese-journal-p18-final-brylow.pdf (link)]<br />
<br />
<li>Dennis Brylow. An Experimental Laboratory Environment for Teaching Embedded <br />
Operating Systems, In <i>Proceedings of [http://www.cs.duke.edu/sigcse08/ SIGCSE 2008]: The 39th ACM Technical Symposium on Computer Science Education</i>, pages 192-196, Portland, Oregon, March 2008. [http://doi.acm.org/10.1145/1352322.1352201 (link)]<br />
<br />
<li>Dennis Brylow. An Experimental Laboratory Environment for Teaching Embedded Hardware Systems, In <i>Proceedings of<br />
[http://www.ncsu.edu/wcae/ISCA2007/FinalProgram.html WCAE 2007]:<br />
Workshop on Computer Architecture Education</i>,<br />
pages 44-51, San Diego, California, June 2007.<br />
[http://www.mscs.mu.edu/~brylow/papers/Brylow-WCAE2007.pdf (link)]<br />
<br />
=== Posters and Undergraduate Research ===<br />
<br />
<li> Kyle Thurow and Dennis Brylow. A Network Emulator on Embedded Xinu.<br />
Poster presentation and research talk presented at [http://www.sigcse.org/sigcse2010/ SIGCSE 2010]<br />
[http://src.acm.org/ ACM Student Research Competition], undergraduate division, Milwaukee, Wisconsin, March 2010. Kyle placed in the top five and advanced to the semi-finals round.<br />
<br />
<li> Gabe Van Eyck and Dennis Brylow. Xinu as a Multi-Core Operating<br />
System on the PlayStation 3. Poster presentation at [http://www.sigcse.org/sigcse2010/ SIGCSE 2010]<br />
[http://src.acm.org/ ACM Student Research Competition], undergraduate division, Milwaukee, Wisconsin, March 2010.<br />
<br />
<li> Aaron Gember and Dennis Brylow. Real-Time TCP Extensions. Poster<br />
presentation and research talk presented at [http://www.cs.arizona.edu/groups/sigcse09/ SIGCSE 2009]<br />
[http://src.acm.org/ ACM Student Research Competition], undergraduate division, Chattanooga, Tennessee. Aaron advanced to<br />
semi-finals, placed in top<br />
three finalists, and advanced to the grand finals.<br />
<br />
<li>Dennis Brylow. Experimental Operating System Lab On A Dime.<br />
[http://www.cs.potsdam.edu/sigcse07/ SIGCSE 2007]: Technical Symposium on Computer Science Education, Covington, Kentucky,<br />
March 2007. [http://www.mscs.mu.edu/~brylow/papers/Brylow-SIGCSE2007.pdf (link)].<br />
<br />
=== Workshops ===<br />
<br />
<li> Paul Ruth and Dennis Brylow. Teaching With Embedded Xinu. Workshop<br />
accepted at [http://www.cs.olemiss.edu/acmse2010/Home.htm ACMSE 2010]:<br />
The 48th ACM Southeast Conference, Oxford, Mississippi, April 2010.<br />
<br />
<li>Dennis Brylow and Paul Ruth. Teaching With Embedded Xinu. Workshop<br />
accepted at [http://www.sigcse.org/sigcse2010/ SIGCSE 2010]:<br />
The 41st ACM Technical Symposium on Computer Science Education, Milwaukee,<br />
Wisconsin, March 2010.<br />
<br />
== Lab Equipment ==<br />
<br />
The [[Systems Laboratory]] is populated with dual-headed Linux boxes running the latest version of [http://fedoraproject.org/ Fedora Linux].<br />
Other workstations in the lab include a dual-core Apple G5 running OS X, and several multi-core boxes for higher-end computation.<br />
<br />
The Xinu Laboratory component of the Systems Lab includes a pool of 24 WRT54GL wireless routers organized into a managed embedded<br />
backend pool, as well as smaller quantities of half a dozen other router types. Embedded development kits available include<br />
the Freescale/Motorola [http://www.evbplus.com/hcs12.html 68HC12 Dragon12] board,<br />
the Atmel [http://www.atmel.com/dyn/products/tools_card.asp?tool_id=2717 AT91 Series ARM Thumb] AT91EB40A board,<br />
the [http://www.atmel.com/products/AVR/butterfly ATmega169 Butterfly],<br />
a Zilog [http://www.zilog.com/docs/z8/devtools/z86ccp01zem.pdf Z86 Emulator Z86CCP01ZEM],<br />
and the Zilog [http://www.zilog.com/index.php?option=com_product&Itemid=26&mode=showProdDet&businessLine=1&familyId=6&productId=Z8F04A28100KIT Z8 Encore XP Dev Kit Z8F04A28100KIT-C].<br />
<br />
The Systems Lab includes both a private research network with our own gateway and firewall, and connections to each of the MSCS department production networks.<br />
The Lab also hosts Subversion, Trac, and Web service for the Marquette Student [http://acm.mscs.mu.edu/ ACM Chapter], the<br />
[http://mulug.mscs.mu.edu/ Marquette University Linux Users Group], and a stratum 2 NTP server for campus.<br />
<br />
== Lab Personnel ==<br />
<br />
=== Current Students ===<br />
<br />
[[File:XINU-Summer2011.png|800px|thumb]] The Xinu Team in Summer 2011.<br />
<br />
From left,<br />
[http://jasoncowdy.com/ Jason Cowdy],<br />
[http://www.linkedin.com/pub/kyle-persohn/31/a31/990 Kyle Persohn],<br />
[http://www.facebook.com/MattBajzek Matt Bajzek],<br />
[http://www.linkedin.com/pub/paul-spillane/22/a07/56b Paul Spillane],<br />
[http://www.mscs.mu.edu/~brylow/ Dr. Dennis Brylow],<br />
Anna Whitley, and<br />
[http://www.facebook.com/Meteorgun7 Victor Blas].<br />
Not pictured:<br />
[http://mziwisky.wordpress.com/ Mike Ziwisky].<br />
<br />
=== Alumni ===<br />
<br />
[http://phinze.com Paul Hinze], B.S. 2008. Currently works as a developer for [http://braintreepayments.com Braintree].<br />
<br />
[http://research.engineering.wustl.edu/~schultzm/ Mike Schultz], M.S. 2009. Now at [http://cse.wustl.edu/Pages/default.aspx Washington University in St. Louis] doctoral program.<br />
<br />
Tim Blattner, B.S. 2009. Now at [http://www.cs.umbc.edu/ University of Maryland - Baltimore County] doctoral program.<br />
<br />
[http://www.gemberdesign.com/ Aaron Gember], B.S. 2009. Now at [http://www.cs.wisc.edu/ University of Wisconsin-Madison] doctoral program.<br />
<br />
[http://netkow.com/ Matt Netkow], B.S. 2009. Now works as a developer for [http://www.savogroup.com/ The SAVO Group].<br />
<br />
Adam Mallen, B.S. 2009. Now at [http://www.marquette.edu/mscs/ Marquette University] doctoral program in Computational Sciences with an emphasis in Math.<br />
<br />
Adam Koehler, M.S. 2010. Now at [http://www1.cs.ucr.edu/index.php University of California Riverside] doctoral program.<br />
<br />
[http://www.zacintosh.com/ Zachary Lund], M.S. 2010. Now works as the lead developer for [http://www.savtrans.com/ SAV Transportation Group].<br />
<br />
Joseph Pintozzi, B.S. 2010. Now works as a developer for [http://core-apps.com/ Core-Apps, LLC].</div>Brylowhttps://xinu.cs.mu.edu/index.php?title=Systems_Laboratory&diff=3913Systems Laboratory2011-08-08T21:16:17Z<p>Brylow: /* Current Students */</p>
<hr />
<div>== About the Systems Laboratory ==<br />
<br />
[http://www.mu.edu/ Marquette]'s [[Systems Laboratory]], under the direction of [http://www.mscs.mu.edu/~brylow/ Dr. Dennis Brylow] in the [http://www.mscs.mu.edu/ Department of Mathematics, Statistics, and Computer Science], is housed on the third floor of Cudahy Hall.<br />
<br />
The lab creates new tools and methods for building and studying complex computer systems. Our emphasis is on embedded, real-time, and network systems, with strong ties to the electrical and computer engineering community, and the computer science education community. Current projects include:<br />
<br />
1. Experimental Embedded Networking Platform. Creation of laboratory infrastructure and software for research and education in the area of embedded networking appliances, particularly wireless routers and IP telephony. Collaboration with Cisco Systems Advanced Research Division.<br />
<br />
2. Experimental Embedded Operating System Laboratory. Creation of laboratory infrastructure and software for research and education in area of embedded operating systems. Collaboration with University of Buffalo and University of Mississippi, with funding from the National Science Founcation.<br />
<br />
3. Embedded Software Transactional Memory. Exploration of an innovative transactional memory model for guaranteeing process synchronization in embedded operating systems. Collaboration with Intel Research.<br />
<br />
The Systems Lab will host three undergraduate [http://acm.mscs.mu.edu/reu REU] (Research Experience for Undergraduates) students in summer 2010, funded by the MU's College of Arts and Sciences. They will be working on ports of the Embedded Xinu operating system to new embedded platforms, embedded network emulation, and multicore embedded systems.<br />
<br />
See the MSCS [http://www.mscs.mu.edu/mscs/faculty/research_labs.html Research Labs] page for more research laboratories in our department.<br />
<br />
== Publications ==<br />
<br />
=== Conference Proceedings and Journals ===<br />
<li>Dennis Brylow and Kyle Thurow. Hands-on Networking Labs With Embedded Routers. In <i>Proceedings of [http://www.sigcse.org/sigcse2011/ SIGCSE 2011]: The 42nd ACM Technical Symposium on Computer Science Education</i>, pages 399-404, Dallas, Texas, March 2011.<br />
[http://doi.acm.org/10.1145/1953163.1953283 (link)]<br />
<br />
<li>Matt Netkow and Dennis Brylow. Xest: An Automated Framework for Regression Testing of Embedded Software. In <i>Proceedings of [http://www.artist-embedded.org/artist/-WESE-10-.html WESE 2010]: 6th Workshop on Embedded Systems Education</i>, pages 40-47, Scottsdale, Arizona, October 2010.<br />
[http://www.artist-embedded.org/docs/Events/2010/WESE/Proceedings_WESE_2010.pdf (link)]<br />
<br />
<li>Adam Mallen and Dennis Brylow. Compiler Construction With A Dash of Concurrency and An Embedded Twist. In <i>Proceedings of [http://splashcon.org/ SPLASH 2010]: Systems, Programming, Languages, and Applications: Software for Humanity</i> (formerly OOPSLA) Educators' and Trainers' Symposium, pages 161-168, Reno, Nevada, October 2010. <br />
[http://dx.doi.org/10.1145/1869542.1869568 (link)]<br />
<br />
<li>Dennis Brylow and Bina Ramamurthy. Nexos: A Next Generation Embedded<br />
Systems Laboratory, In <i>Proceedings of WESE 2008: 4th Workshop on Embedded<br />
Systems Education</i>, pages 10-17, Atlanta, Georgia, October 2008.<br />
[http://www.lulu.com/content/3613764 (link)]<br /><br />
Extended version in <i>SIGBED Review</i>, Volume 6, Number 1, January 2009.<br />
[http://www.cs.virginia.edu/sigbed/archives/2009-01/j-7-wese-journal-p18-final-brylow.pdf (link)]<br />
<br />
<li>Dennis Brylow. An Experimental Laboratory Environment for Teaching Embedded <br />
Operating Systems, In <i>Proceedings of [http://www.cs.duke.edu/sigcse08/ SIGCSE 2008]: The 39th ACM Technical Symposium on Computer Science Education</i>, pages 192-196, Portland, Oregon, March 2008. [http://doi.acm.org/10.1145/1352322.1352201 (link)]<br />
<br />
<li>Dennis Brylow. An Experimental Laboratory Environment for Teaching Embedded Hardware Systems, In <i>Proceedings of<br />
[http://www.ncsu.edu/wcae/ISCA2007/FinalProgram.html WCAE 2007]:<br />
Workshop on Computer Architecture Education</i>,<br />
pages 44-51, San Diego, California, June 2007.<br />
[http://www.mscs.mu.edu/~brylow/papers/Brylow-WCAE2007.pdf (link)]<br />
<br />
=== Posters and Undergraduate Research ===<br />
<br />
<li> Kyle Thurow and Dennis Brylow. A Network Emulator on Embedded Xinu.<br />
Poster presentation and research talk presented at [http://www.sigcse.org/sigcse2010/ SIGCSE 2010]<br />
[http://src.acm.org/ ACM Student Research Competition], undergraduate division, Milwaukee, Wisconsin, March 2010. Kyle placed in the top five and advanced to the semi-finals round.<br />
<br />
<li> Gabe Van Eyck and Dennis Brylow. Xinu as a Multi-Core Operating<br />
System on the PlayStation 3. Poster presentation at [http://www.sigcse.org/sigcse2010/ SIGCSE 2010]<br />
[http://src.acm.org/ ACM Student Research Competition], undergraduate division, Milwaukee, Wisconsin, March 2010.<br />
<br />
<li> Aaron Gember and Dennis Brylow. Real-Time TCP Extensions. Poster<br />
presentation and research talk presented at [http://www.cs.arizona.edu/groups/sigcse09/ SIGCSE 2009]<br />
[http://src.acm.org/ ACM Student Research Competition], undergraduate division, Chattanooga, Tennessee. Aaron advanced to<br />
semi-finals, placed in top<br />
three finalists, and advanced to the grand finals.<br />
<br />
<li>Dennis Brylow. Experimental Operating System Lab On A Dime.<br />
[http://www.cs.potsdam.edu/sigcse07/ SIGCSE 2007]: Technical Symposium on Computer Science Education, Covington, Kentucky,<br />
March 2007. [http://www.mscs.mu.edu/~brylow/papers/Brylow-SIGCSE2007.pdf (link)].<br />
<br />
=== Workshops ===<br />
<br />
<li> Paul Ruth and Dennis Brylow. Teaching With Embedded Xinu. Workshop<br />
accepted at [http://www.cs.olemiss.edu/acmse2010/Home.htm ACMSE 2010]:<br />
The 48th ACM Southeast Conference, Oxford, Mississippi, April 2010.<br />
<br />
<li>Dennis Brylow and Paul Ruth. Teaching With Embedded Xinu. Workshop<br />
accepted at [http://www.sigcse.org/sigcse2010/ SIGCSE 2010]:<br />
The 41st ACM Technical Symposium on Computer Science Education, Milwaukee,<br />
Wisconsin, March 2010.<br />
<br />
== Lab Equipment ==<br />
<br />
The [[Systems Laboratory]] is populated with dual-headed Linux boxes running the latest version of [http://fedoraproject.org/ Fedora Linux].<br />
Other workstations in the lab include a dual-core Apple G5 running OS X, and several multi-core boxes for higher-end computation.<br />
<br />
The Xinu Laboratory component of the Systems Lab includes a pool of 24 WRT54GL wireless routers organized into a managed embedded<br />
backend pool, as well as smaller quantities of half a dozen other router types. Embedded development kits available include<br />
the Freescale/Motorola [http://www.evbplus.com/hcs12.html 68HC12 Dragon12] board,<br />
the Atmel [http://www.atmel.com/dyn/products/tools_card.asp?tool_id=2717 AT91 Series ARM Thumb] AT91EB40A board,<br />
the [http://www.atmel.com/products/AVR/butterfly ATmega169 Butterfly],<br />
a Zilog [http://www.zilog.com/docs/z8/devtools/z86ccp01zem.pdf Z86 Emulator Z86CCP01ZEM],<br />
and the Zilog [http://www.zilog.com/index.php?option=com_product&Itemid=26&mode=showProdDet&businessLine=1&familyId=6&productId=Z8F04A28100KIT Z8 Encore XP Dev Kit Z8F04A28100KIT-C].<br />
<br />
The Systems Lab includes both a private research network with our own gateway and firewall, and connections to each of the MSCS department production networks.<br />
The Lab also hosts Subversion, Trac, and Web service for the Marquette Student [http://acm.mscs.mu.edu/ ACM Chapter], the<br />
[http://mulug.mscs.mu.edu/ Marquette University Linux Users Group], and a stratum 2 NTP server for campus.<br />
<br />
== Lab Personnel ==<br />
<br />
=== Current Students ===<br />
<br />
[[File:XINU-summer2011.png|800px|thumb]] The Xinu Team in Summer 2011.<br />
<br />
From left,<br />
[http://jasoncowdy.com/ Jason Cowdy],<br />
[http://www.linkedin.com/pub/kyle-persohn/31/a31/990 Kyle Persohn],<br />
[http://www.facebook.com/MattBajzek Matt Bajzek],<br />
[http://www.linkedin.com/pub/paul-spillane/22/a07/56b Paul Spillane],<br />
[http://www.mscs.mu.edu/~brylow/ Dr. Dennis Brylow],<br />
Anna Whitley, and<br />
[http://www.facebook.com/Meteorgun7 Victor Blas].<br />
Not pictured:<br />
[http://mziwisky.wordpress.com/ Mike Ziwisky].<br />
<br />
=== Alumni ===<br />
<br />
[http://phinze.com Paul Hinze], B.S. 2008. Currently works as a developer for [http://braintreepayments.com Braintree].<br />
<br />
[http://research.engineering.wustl.edu/~schultzm/ Mike Schultz], M.S. 2009. Now at [http://cse.wustl.edu/Pages/default.aspx Washington University in St. Louis] doctoral program.<br />
<br />
Tim Blattner, B.S. 2009. Now at [http://www.cs.umbc.edu/ University of Maryland - Baltimore County] doctoral program.<br />
<br />
[http://www.gemberdesign.com/ Aaron Gember], B.S. 2009. Now at [http://www.cs.wisc.edu/ University of Wisconsin-Madison] doctoral program.<br />
<br />
[http://netkow.com/ Matt Netkow], B.S. 2009. Now works as a developer for [http://www.savogroup.com/ The SAVO Group].<br />
<br />
Adam Mallen, B.S. 2009. Now at [http://www.marquette.edu/mscs/ Marquette University] doctoral program in Computational Sciences with an emphasis in Math.<br />
<br />
Adam Koehler, M.S. 2010. Now at [http://www1.cs.ucr.edu/index.php University of California Riverside] doctoral program.<br />
<br />
[http://www.zacintosh.com/ Zachary Lund], M.S. 2010. Now works as the lead developer for [http://www.savtrans.com/ SAV Transportation Group].<br />
<br />
Joseph Pintozzi, B.S. 2010. Now works as a developer for [http://core-apps.com/ Core-Apps, LLC].</div>Brylowhttps://xinu.cs.mu.edu/index.php?title=File:XINU-Summer2011.png&diff=3912File:XINU-Summer2011.png2011-08-08T21:00:22Z<p>Brylow: </p>
<hr />
<div></div>Brylowhttps://xinu.cs.mu.edu/index.php?title=Build_Xinu&diff=3903Build Xinu2011-07-12T04:10:46Z<p>Brylow: /* Build GNU C Compiler */</p>
<hr />
<div>[[Category:HOWTO]]<br />
The new MIPS port of Embedded XINU has been released. See the [[Downloads]] tab for more information.<br />
A revision of Doug Comer's venerable ''Operating System Design - The XINU Approach'' textbook is in progress.<br />
<br />
== Cross-Compiler ==<br />
In order to compile Embedded MIPS kernels on a workstation that is not itself<br />
a MIPS processor, it is necessary to build and install an appropriate<br />
[[wikipedia:Cross Compiler|cross compiler]]. There are many<br />
ways to accomplish this; for reference, we list the specific versions and<br />
steps we used for our installation.<br />
<br />
'''NOTE:''' the following tutorial describes the steps for creating a MIPS cross-compiler in a Linux environment. See our other wiki pages for tutorials on building cross-compilers for [[HOWTO:Build XINU on Windows XP|Windows XP]] or [[HOWTO:Build XINU on Mac OS X|Mac OS X]].<br />
<br />
As always, one should be wary of installing unfamilar software as the root<br />
user of the system. All of the steps below have been carried out as a<br />
lesser-privileged user with write access to the necessary directories.<br />
<br />
=== Build binutils ===<br />
<br />
First, we downloaded, compiled, and installed the appropriate binary utilities.<br />
We downloaded [http://www.gnu.org/software/binutils/ binutils] version<br />
[http://ftp.gnu.org/gnu/binutils/binutils-2.21.tar.gz 2.21], untarred the<br />
source code, and ran the following commands inside the new directory created by untarring the download:<br />
<br />
./configure --prefix=/usr/local/project/mipsel-dev --target=mipsel<br />
make<br />
make install<br />
<br />
=== Note about cross-compiler location ===<br />
<br />
We have chosen the path "/usr/local/project/mipsel-dev" to host our cross-compiler<br />
installation. Whatever path is used here must be reflected in the [[XINU]] build<br />
configuration file, "compile/platforms/*/platformVars" when you arrive at that step.<br />
<br />
=== Link include directory ===<br />
<br />
We are not building a true, full-blown UNIX cross-compiler here, and do not need<br />
a proper installation of the platform-specific C libraries; [[XINU]] has its own small<br />
libraries that compile with the kernel. However, the GCC compilation will want to<br />
see appropriate library headers, so we cheat here by linking the platform-specific include directory<br />
to the host machine's include directory.<br />
<br />
mkdir -p /usr/local/project/mipsel-dev/mipsel/usr<br />
ln -s /usr/include /usr/local/project/mipsel-dev/mipsel/usr/include<br />
<br />
=== Build GNU C Compiler ===<br />
<br />
Second, we downloaded, patched, compiled and installed the GNU C Compiler.<br />
We downloaded [http://gcc.gnu.org/ GCC] version 4.6.1. We added the newly compiled binutils<br />
into the shell path (/usr/local/project/mipsel-dev/bin) for the gcc compilation to find them.<br />
This is also known to work with [http://gcc.gnu.org/ GCC] version 4.1.2 and 4.2.0 unpatched, using<br />
[http://www.mscs.mu.edu/~brylow/xinu/fakelibdetection.sh this script] to get around installing<br />
a bunch of platform-specific UNIX libraries.<br />
<br />
./configure --prefix=/usr/local/project/mipsel-dev --target=mipsel --with-sysroot=/usr/local/project/mipsel-dev/mipsel/ --enable-languages=c<br />
make<br />
make install<br />
<br />
=== Rejoice ===<br />
<br />
If all has gone well, you should now have a gcc cross-compiler from your host's native architecture to<br />
little-endian MIPS:<br />
<br />
/usr/local/project/mipsel-dev/bin/mipsel-gcc<br />
<br />
Remember the path to this file because later you'll need to double check some building variables to make sure they point to the correct location of your cross-compiler.<br />
<br />
== Building the XINU Image ==<br />
<br />
Once you have downloaded and extracted the xinu tarball, you will see a basic directory structure:<br />
<br />
<pre>AUTHORS device lib loader README system<br />
compile include LICENSE mailbox shell test</pre><br />
<br />
<tt>AUTHORS</tt> is a brief history of contributors to the XINU operating system in it's varying iterations.<br />
<br />
<tt>compile/</tt> contains the Makefile and other necessities for [[Build System|building the XINU system]] once you have a cross-compiler.<br />
<br />
<tt>device/</tt> contains the source for all device drivers, including the tty and uart driver.<br />
<br />
<tt>include/</tt> contains all the header files used by XINU.<br />
<br />
<tt>lib/</tt> contains a folder (libxc/) with a Makefile and source for the library, as well as a binary blob which contains the pre-compiled library.<br />
<br />
<tt>LICENSE</tt> is the license under which this project falls.<br />
<br />
<tt>loader/</tt> contains assembly files and is where the bootloader will begin execution of O/S code.<br />
<br />
<tt>mailbox/</tt> contains the source for the mailbox message-passing implementation. <br />
<br />
<tt>README</tt> is this document.<br />
<br />
<tt>shell/</tt> contains the source for all shell related functions.<br />
<br />
<tt>system/</tt> contains the source for all system functions such as the nulluser process (initialize.c) as well as code to set up a C environment (startup.S).<br />
<br />
<tt>test/</tt> contains a number of testcases (which can be run using the shell command testsuite).<br />
<br />
----<br />
<br />
First, it is a good idea to read up on [[Build System|building the XINU system]]. Next, you'll want to check your <code> mipsVars </code> file in the <code> compile </code> directory. The file should look something like this:<br />
<pre>MIPS_ROOT = /usr/local/project/mipsel-dev/bin<br />
MIPS_PREFIX = mipsel-<br />
<br />
COMPILER_ROOT = ${MIPS_ROOT}/${MIPS_PREFIX}<br />
<br />
CC = ${COMPILER_ROOT}gcc<br />
CPP = ${COMPILER_ROOT}cpp<br />
LD = ${COMPILER_ROOT}ld<br />
AS = ${COMPILER_ROOT}as<br />
AR = ${COMPILER_ROOT}ar<br />
MAKEDEP = `which makedepend`<br />
<br />
DOCGEN = doxygen<br />
<br />
# DETAIL = -DDETAIL<br />
<br />
DEFS =<br />
INCLUDE = -I../include<br />
<br />
#flag for producing GDB debug information<br />
BUGFLAG = -ggdb<br />
<br />
CFLAGS = -O0 -Wall -Werror -Wstrict-prototypes -Wno-trigraphs \<br />
-nostdinc -fno-builtin -fno-strict-aliasing -fno-common \<br />
-fomit-frame-pointer -fno-pic -ffunction-sections -G 0 \<br />
-mlong-calls -mno-abicalls -mabi=32 -march=mips32 \<br />
-Wa,-32 -Wa,-march=mips32 -Wa,-mips32 -Wa,--trap \<br />
${DEBUG} ${INCLUDE} ${DETAIL} ${DEFS} -c<br />
<br />
<br />
ASFLAGS = ${INCLUDE} ${DEBUG} -march=mips32 -mips32<br />
</pre><br />
<br />
The important thing to note on this file is the <code> MIPS_ROOT </code> variable. It needs to point to the directory containing the cross-compiler. If you followed the commands in the tutorial exactly, then the value of the <code> MIPS_ROOT </code> variable in the code above should be the correct value.<br />
<br />
Now you'll want to actually create your boot image. In the <code> compile/ </code> directory execute the following commands: <code>make clean </code> and <code> make</code>. The <code> make </code> command will let you know if you have any compiling errors or warnings. If there are none, then you should have successfully created a XINU boot image located in the file <code> xinu.boot </code> in the <code> compile/ </code> directory. Remember that each time you make changes to source files, to recompile and create a new XINU boot image you have to execute <code> make clean </code> and then <code> make</code>.<br />
<br />
== What to do next? ==<br />
<br />
Now that you have successfully built a XINU boot image you're ready to use that file to actually [[HOWTO:Deploy_Xinu|boot XINU]] on your backend router.<br />
<br />
<br />
<hr/><br />
''This work is supported in part by NSF grant DUE-CCLI-0737476.''</div>Brylowhttps://xinu.cs.mu.edu/index.php?title=Build_Xinu&diff=3902Build Xinu2011-07-12T04:09:12Z<p>Brylow: /* Note about cross-compiler location */</p>
<hr />
<div>[[Category:HOWTO]]<br />
The new MIPS port of Embedded XINU has been released. See the [[Downloads]] tab for more information.<br />
A revision of Doug Comer's venerable ''Operating System Design - The XINU Approach'' textbook is in progress.<br />
<br />
== Cross-Compiler ==<br />
In order to compile Embedded MIPS kernels on a workstation that is not itself<br />
a MIPS processor, it is necessary to build and install an appropriate<br />
[[wikipedia:Cross Compiler|cross compiler]]. There are many<br />
ways to accomplish this; for reference, we list the specific versions and<br />
steps we used for our installation.<br />
<br />
'''NOTE:''' the following tutorial describes the steps for creating a MIPS cross-compiler in a Linux environment. See our other wiki pages for tutorials on building cross-compilers for [[HOWTO:Build XINU on Windows XP|Windows XP]] or [[HOWTO:Build XINU on Mac OS X|Mac OS X]].<br />
<br />
As always, one should be wary of installing unfamilar software as the root<br />
user of the system. All of the steps below have been carried out as a<br />
lesser-privileged user with write access to the necessary directories.<br />
<br />
=== Build binutils ===<br />
<br />
First, we downloaded, compiled, and installed the appropriate binary utilities.<br />
We downloaded [http://www.gnu.org/software/binutils/ binutils] version<br />
[http://ftp.gnu.org/gnu/binutils/binutils-2.21.tar.gz 2.21], untarred the<br />
source code, and ran the following commands inside the new directory created by untarring the download:<br />
<br />
./configure --prefix=/usr/local/project/mipsel-dev --target=mipsel<br />
make<br />
make install<br />
<br />
=== Note about cross-compiler location ===<br />
<br />
We have chosen the path "/usr/local/project/mipsel-dev" to host our cross-compiler<br />
installation. Whatever path is used here must be reflected in the [[XINU]] build<br />
configuration file, "compile/platforms/*/platformVars" when you arrive at that step.<br />
<br />
=== Link include directory ===<br />
<br />
We are not building a true, full-blown UNIX cross-compiler here, and do not need<br />
a proper installation of the platform-specific C libraries; [[XINU]] has its own small<br />
libraries that compile with the kernel. However, the GCC compilation will want to<br />
see appropriate library headers, so we cheat here by linking the platform-specific include directory<br />
to the host machine's include directory.<br />
<br />
mkdir -p /usr/local/project/mipsel-dev/mipsel/usr<br />
ln -s /usr/include /usr/local/project/mipsel-dev/mipsel/usr/include<br />
<br />
=== Build GNU C Compiler ===<br />
<br />
Second, we downloaded, patched, compiled and installed the GNU C Compiler.<br />
We downloaded [http://gcc.gnu.org/ GCC] version 3.4.6. We applied a <br />
[http://www.mscs.mu.edu/~brylow/xinu/gcc-3.4.6-fixproto.patch short patch]<br />
to correct some kind of obscure fixproto error. We added the newly compiled binutils<br />
into the shell path (/usr/local/project/mipsel-dev/bin) for the gcc compilation to find them.<br />
This is also known to work with [http://gcc.gnu.org/ GCC] version 4.1.2 and 4.2.0 unpatched, using<br />
[http://www.mscs.mu.edu/~brylow/xinu/fakelibdetection.sh this script] to get around installing<br />
a bunch of platform-specific UNIX libraries.<br />
<br />
./configure --prefix=/usr/local/project/mipsel-dev --target=mipsel --with-sysroot=/usr/local/project/mipsel-dev/mipsel/ --enable-languages=c<br />
make<br />
make install<br />
<br />
=== Rejoice ===<br />
<br />
If all has gone well, you should now have a gcc cross-compiler from your host's native architecture to<br />
little-endian MIPS:<br />
<br />
/usr/local/project/mipsel-dev/bin/mipsel-gcc<br />
<br />
Remember the path to this file because later you'll need to double check some building variables to make sure they point to the correct location of your cross-compiler.<br />
<br />
== Building the XINU Image ==<br />
<br />
Once you have downloaded and extracted the xinu tarball, you will see a basic directory structure:<br />
<br />
<pre>AUTHORS device lib loader README system<br />
compile include LICENSE mailbox shell test</pre><br />
<br />
<tt>AUTHORS</tt> is a brief history of contributors to the XINU operating system in it's varying iterations.<br />
<br />
<tt>compile/</tt> contains the Makefile and other necessities for [[Build System|building the XINU system]] once you have a cross-compiler.<br />
<br />
<tt>device/</tt> contains the source for all device drivers, including the tty and uart driver.<br />
<br />
<tt>include/</tt> contains all the header files used by XINU.<br />
<br />
<tt>lib/</tt> contains a folder (libxc/) with a Makefile and source for the library, as well as a binary blob which contains the pre-compiled library.<br />
<br />
<tt>LICENSE</tt> is the license under which this project falls.<br />
<br />
<tt>loader/</tt> contains assembly files and is where the bootloader will begin execution of O/S code.<br />
<br />
<tt>mailbox/</tt> contains the source for the mailbox message-passing implementation. <br />
<br />
<tt>README</tt> is this document.<br />
<br />
<tt>shell/</tt> contains the source for all shell related functions.<br />
<br />
<tt>system/</tt> contains the source for all system functions such as the nulluser process (initialize.c) as well as code to set up a C environment (startup.S).<br />
<br />
<tt>test/</tt> contains a number of testcases (which can be run using the shell command testsuite).<br />
<br />
----<br />
<br />
First, it is a good idea to read up on [[Build System|building the XINU system]]. Next, you'll want to check your <code> mipsVars </code> file in the <code> compile </code> directory. The file should look something like this:<br />
<pre>MIPS_ROOT = /usr/local/project/mipsel-dev/bin<br />
MIPS_PREFIX = mipsel-<br />
<br />
COMPILER_ROOT = ${MIPS_ROOT}/${MIPS_PREFIX}<br />
<br />
CC = ${COMPILER_ROOT}gcc<br />
CPP = ${COMPILER_ROOT}cpp<br />
LD = ${COMPILER_ROOT}ld<br />
AS = ${COMPILER_ROOT}as<br />
AR = ${COMPILER_ROOT}ar<br />
MAKEDEP = `which makedepend`<br />
<br />
DOCGEN = doxygen<br />
<br />
# DETAIL = -DDETAIL<br />
<br />
DEFS =<br />
INCLUDE = -I../include<br />
<br />
#flag for producing GDB debug information<br />
BUGFLAG = -ggdb<br />
<br />
CFLAGS = -O0 -Wall -Werror -Wstrict-prototypes -Wno-trigraphs \<br />
-nostdinc -fno-builtin -fno-strict-aliasing -fno-common \<br />
-fomit-frame-pointer -fno-pic -ffunction-sections -G 0 \<br />
-mlong-calls -mno-abicalls -mabi=32 -march=mips32 \<br />
-Wa,-32 -Wa,-march=mips32 -Wa,-mips32 -Wa,--trap \<br />
${DEBUG} ${INCLUDE} ${DETAIL} ${DEFS} -c<br />
<br />
<br />
ASFLAGS = ${INCLUDE} ${DEBUG} -march=mips32 -mips32<br />
</pre><br />
<br />
The important thing to note on this file is the <code> MIPS_ROOT </code> variable. It needs to point to the directory containing the cross-compiler. If you followed the commands in the tutorial exactly, then the value of the <code> MIPS_ROOT </code> variable in the code above should be the correct value.<br />
<br />
Now you'll want to actually create your boot image. In the <code> compile/ </code> directory execute the following commands: <code>make clean </code> and <code> make</code>. The <code> make </code> command will let you know if you have any compiling errors or warnings. If there are none, then you should have successfully created a XINU boot image located in the file <code> xinu.boot </code> in the <code> compile/ </code> directory. Remember that each time you make changes to source files, to recompile and create a new XINU boot image you have to execute <code> make clean </code> and then <code> make</code>.<br />
<br />
== What to do next? ==<br />
<br />
Now that you have successfully built a XINU boot image you're ready to use that file to actually [[HOWTO:Deploy_Xinu|boot XINU]] on your backend router.<br />
<br />
<br />
<hr/><br />
''This work is supported in part by NSF grant DUE-CCLI-0737476.''</div>Brylowhttps://xinu.cs.mu.edu/index.php?title=Build_Xinu&diff=3901Build Xinu2011-07-12T04:08:14Z<p>Brylow: /* Build binutils */</p>
<hr />
<div>[[Category:HOWTO]]<br />
The new MIPS port of Embedded XINU has been released. See the [[Downloads]] tab for more information.<br />
A revision of Doug Comer's venerable ''Operating System Design - The XINU Approach'' textbook is in progress.<br />
<br />
== Cross-Compiler ==<br />
In order to compile Embedded MIPS kernels on a workstation that is not itself<br />
a MIPS processor, it is necessary to build and install an appropriate<br />
[[wikipedia:Cross Compiler|cross compiler]]. There are many<br />
ways to accomplish this; for reference, we list the specific versions and<br />
steps we used for our installation.<br />
<br />
'''NOTE:''' the following tutorial describes the steps for creating a MIPS cross-compiler in a Linux environment. See our other wiki pages for tutorials on building cross-compilers for [[HOWTO:Build XINU on Windows XP|Windows XP]] or [[HOWTO:Build XINU on Mac OS X|Mac OS X]].<br />
<br />
As always, one should be wary of installing unfamilar software as the root<br />
user of the system. All of the steps below have been carried out as a<br />
lesser-privileged user with write access to the necessary directories.<br />
<br />
=== Build binutils ===<br />
<br />
First, we downloaded, compiled, and installed the appropriate binary utilities.<br />
We downloaded [http://www.gnu.org/software/binutils/ binutils] version<br />
[http://ftp.gnu.org/gnu/binutils/binutils-2.21.tar.gz 2.21], untarred the<br />
source code, and ran the following commands inside the new directory created by untarring the download:<br />
<br />
./configure --prefix=/usr/local/project/mipsel-dev --target=mipsel<br />
make<br />
make install<br />
<br />
=== Note about cross-compiler location ===<br />
<br />
We have chosen the path "/usr/local/project/mipsel-dev" to host our cross-compiler<br />
installation. Whatever path is used here must be reflected in the [[XINU]] build<br />
configuration file, "compile/makeVars" when you arrive at that step.<br />
<br />
=== Link include directory ===<br />
<br />
We are not building a true, full-blown UNIX cross-compiler here, and do not need<br />
a proper installation of the platform-specific C libraries; [[XINU]] has its own small<br />
libraries that compile with the kernel. However, the GCC compilation will want to<br />
see appropriate library headers, so we cheat here by linking the platform-specific include directory<br />
to the host machine's include directory.<br />
<br />
mkdir -p /usr/local/project/mipsel-dev/mipsel/usr<br />
ln -s /usr/include /usr/local/project/mipsel-dev/mipsel/usr/include<br />
<br />
=== Build GNU C Compiler ===<br />
<br />
Second, we downloaded, patched, compiled and installed the GNU C Compiler.<br />
We downloaded [http://gcc.gnu.org/ GCC] version 3.4.6. We applied a <br />
[http://www.mscs.mu.edu/~brylow/xinu/gcc-3.4.6-fixproto.patch short patch]<br />
to correct some kind of obscure fixproto error. We added the newly compiled binutils<br />
into the shell path (/usr/local/project/mipsel-dev/bin) for the gcc compilation to find them.<br />
This is also known to work with [http://gcc.gnu.org/ GCC] version 4.1.2 and 4.2.0 unpatched, using<br />
[http://www.mscs.mu.edu/~brylow/xinu/fakelibdetection.sh this script] to get around installing<br />
a bunch of platform-specific UNIX libraries.<br />
<br />
./configure --prefix=/usr/local/project/mipsel-dev --target=mipsel --with-sysroot=/usr/local/project/mipsel-dev/mipsel/ --enable-languages=c<br />
make<br />
make install<br />
<br />
=== Rejoice ===<br />
<br />
If all has gone well, you should now have a gcc cross-compiler from your host's native architecture to<br />
little-endian MIPS:<br />
<br />
/usr/local/project/mipsel-dev/bin/mipsel-gcc<br />
<br />
Remember the path to this file because later you'll need to double check some building variables to make sure they point to the correct location of your cross-compiler.<br />
<br />
== Building the XINU Image ==<br />
<br />
Once you have downloaded and extracted the xinu tarball, you will see a basic directory structure:<br />
<br />
<pre>AUTHORS device lib loader README system<br />
compile include LICENSE mailbox shell test</pre><br />
<br />
<tt>AUTHORS</tt> is a brief history of contributors to the XINU operating system in it's varying iterations.<br />
<br />
<tt>compile/</tt> contains the Makefile and other necessities for [[Build System|building the XINU system]] once you have a cross-compiler.<br />
<br />
<tt>device/</tt> contains the source for all device drivers, including the tty and uart driver.<br />
<br />
<tt>include/</tt> contains all the header files used by XINU.<br />
<br />
<tt>lib/</tt> contains a folder (libxc/) with a Makefile and source for the library, as well as a binary blob which contains the pre-compiled library.<br />
<br />
<tt>LICENSE</tt> is the license under which this project falls.<br />
<br />
<tt>loader/</tt> contains assembly files and is where the bootloader will begin execution of O/S code.<br />
<br />
<tt>mailbox/</tt> contains the source for the mailbox message-passing implementation. <br />
<br />
<tt>README</tt> is this document.<br />
<br />
<tt>shell/</tt> contains the source for all shell related functions.<br />
<br />
<tt>system/</tt> contains the source for all system functions such as the nulluser process (initialize.c) as well as code to set up a C environment (startup.S).<br />
<br />
<tt>test/</tt> contains a number of testcases (which can be run using the shell command testsuite).<br />
<br />
----<br />
<br />
First, it is a good idea to read up on [[Build System|building the XINU system]]. Next, you'll want to check your <code> mipsVars </code> file in the <code> compile </code> directory. The file should look something like this:<br />
<pre>MIPS_ROOT = /usr/local/project/mipsel-dev/bin<br />
MIPS_PREFIX = mipsel-<br />
<br />
COMPILER_ROOT = ${MIPS_ROOT}/${MIPS_PREFIX}<br />
<br />
CC = ${COMPILER_ROOT}gcc<br />
CPP = ${COMPILER_ROOT}cpp<br />
LD = ${COMPILER_ROOT}ld<br />
AS = ${COMPILER_ROOT}as<br />
AR = ${COMPILER_ROOT}ar<br />
MAKEDEP = `which makedepend`<br />
<br />
DOCGEN = doxygen<br />
<br />
# DETAIL = -DDETAIL<br />
<br />
DEFS =<br />
INCLUDE = -I../include<br />
<br />
#flag for producing GDB debug information<br />
BUGFLAG = -ggdb<br />
<br />
CFLAGS = -O0 -Wall -Werror -Wstrict-prototypes -Wno-trigraphs \<br />
-nostdinc -fno-builtin -fno-strict-aliasing -fno-common \<br />
-fomit-frame-pointer -fno-pic -ffunction-sections -G 0 \<br />
-mlong-calls -mno-abicalls -mabi=32 -march=mips32 \<br />
-Wa,-32 -Wa,-march=mips32 -Wa,-mips32 -Wa,--trap \<br />
${DEBUG} ${INCLUDE} ${DETAIL} ${DEFS} -c<br />
<br />
<br />
ASFLAGS = ${INCLUDE} ${DEBUG} -march=mips32 -mips32<br />
</pre><br />
<br />
The important thing to note on this file is the <code> MIPS_ROOT </code> variable. It needs to point to the directory containing the cross-compiler. If you followed the commands in the tutorial exactly, then the value of the <code> MIPS_ROOT </code> variable in the code above should be the correct value.<br />
<br />
Now you'll want to actually create your boot image. In the <code> compile/ </code> directory execute the following commands: <code>make clean </code> and <code> make</code>. The <code> make </code> command will let you know if you have any compiling errors or warnings. If there are none, then you should have successfully created a XINU boot image located in the file <code> xinu.boot </code> in the <code> compile/ </code> directory. Remember that each time you make changes to source files, to recompile and create a new XINU boot image you have to execute <code> make clean </code> and then <code> make</code>.<br />
<br />
== What to do next? ==<br />
<br />
Now that you have successfully built a XINU boot image you're ready to use that file to actually [[HOWTO:Deploy_Xinu|boot XINU]] on your backend router.<br />
<br />
<br />
<hr/><br />
''This work is supported in part by NSF grant DUE-CCLI-0737476.''</div>Brylowhttps://xinu.cs.mu.edu/index.php?title=Systems_Laboratory&diff=3799Systems Laboratory2011-05-20T16:49:22Z<p>Brylow: /* Conference Proceedings and Journals */</p>
<hr />
<div>== About the Systems Laboratory ==<br />
<br />
[http://www.mu.edu/ Marquette]'s [[Systems Laboratory]], under the direction of [http://www.mscs.mu.edu/~brylow/ Dr. Dennis Brylow] in the [http://www.mscs.mu.edu/ Department of Mathematics, Statistics, and Computer Science], is housed on the third floor of Cudahy Hall.<br />
<br />
The lab creates new tools and methods for building and studying complex computer systems. Our emphasis is on embedded, real-time, and network systems, with strong ties to the electrical and computer engineering community, and the computer science education community. Current projects include:<br />
<br />
1. Experimental Embedded Networking Platform. Creation of laboratory infrastructure and software for research and education in the area of embedded networking appliances, particularly wireless routers and IP telephony. Collaboration with Cisco Systems Advanced Research Division.<br />
<br />
2. Experimental Embedded Operating System Laboratory. Creation of laboratory infrastructure and software for research and education in area of embedded operating systems. Collaboration with University of Buffalo and University of Mississippi, with funding from the National Science Founcation.<br />
<br />
3. Embedded Software Transactional Memory. Exploration of an innovative transactional memory model for guaranteeing process synchronization in embedded operating systems. Collaboration with Intel Research.<br />
<br />
The Systems Lab will host three undergraduate [http://acm.mscs.mu.edu/reu REU] (Research Experience for Undergraduates) students in summer 2010, funded by the MU's College of Arts and Sciences. They will be working on ports of the Embedded Xinu operating system to new embedded platforms, embedded network emulation, and multicore embedded systems.<br />
<br />
See the MSCS [http://www.mscs.mu.edu/mscs/faculty/research_labs.html Research Labs] page for more research laboratories in our department.<br />
<br />
== Publications ==<br />
<br />
=== Conference Proceedings and Journals ===<br />
<li>Dennis Brylow and Kyle Thurow. Hands-on Networking Labs With Embedded Routers. In <i>Proceedings of [http://www.sigcse.org/sigcse2011/ SIGCSE 2011]: The 42nd ACM Technical Symposium on Computer Science Education</i>, pages 399-404, Dallas, Texas, March 2011.<br />
[http://doi.acm.org/10.1145/1953163.1953283 (link)]<br />
<br />
<li>Matt Netkow and Dennis Brylow. Xest: An Automated Framework for Regression Testing of Embedded Software. In <i>Proceedings of [http://www.artist-embedded.org/artist/-WESE-10-.html WESE 2010]: 6th Workshop on Embedded Systems Education</i>, pages 40-47, Scottsdale, Arizona, October 2010.<br />
[http://www.artist-embedded.org/docs/Events/2010/WESE/Proceedings_WESE_2010.pdf (link)]<br />
<br />
<li>Adam Mallen and Dennis Brylow. Compiler Construction With A Dash of Concurrency and An Embedded Twist. In <i>Proceedings of [http://splashcon.org/ SPLASH 2010]: Systems, Programming, Languages, and Applications: Software for Humanity</i> (formerly OOPSLA) Educators' and Trainers' Symposium, pages 161-168, Reno, Nevada, October 2010. <br />
[http://dx.doi.org/10.1145/1869542.1869568 (link)]<br />
<br />
<li>Dennis Brylow and Bina Ramamurthy. Nexos: A Next Generation Embedded<br />
Systems Laboratory, In <i>Proceedings of WESE 2008: 4th Workshop on Embedded<br />
Systems Education</i>, pages 10-17, Atlanta, Georgia, October 2008.<br />
[http://www.lulu.com/content/3613764 (link)]<br /><br />
Extended version in <i>SIGBED Review</i>, Volume 6, Number 1, January 2009.<br />
[http://www.cs.virginia.edu/sigbed/archives/2009-01/j-7-wese-journal-p18-final-brylow.pdf (link)]<br />
<br />
<li>Dennis Brylow. An Experimental Laboratory Environment for Teaching Embedded <br />
Operating Systems, In <i>Proceedings of [http://www.cs.duke.edu/sigcse08/ SIGCSE 2008]: The 39th ACM Technical Symposium on Computer Science Education</i>, pages 192-196, Portland, Oregon, March 2008. [http://doi.acm.org/10.1145/1352322.1352201 (link)]<br />
<br />
<li>Dennis Brylow. An Experimental Laboratory Environment for Teaching Embedded Hardware Systems, In <i>Proceedings of<br />
[http://www.ncsu.edu/wcae/ISCA2007/FinalProgram.html WCAE 2007]:<br />
Workshop on Computer Architecture Education</i>,<br />
pages 44-51, San Diego, California, June 2007.<br />
[http://www.mscs.mu.edu/~brylow/papers/Brylow-WCAE2007.pdf (link)]<br />
<br />
=== Posters and Undergraduate Research ===<br />
<br />
<li> Kyle Thurow and Dennis Brylow. A Network Emulator on Embedded Xinu.<br />
Poster presentation and research talk presented at [http://www.sigcse.org/sigcse2010/ SIGCSE 2010]<br />
[http://src.acm.org/ ACM Student Research Competition], undergraduate division, Milwaukee, Wisconsin, March 2010. Kyle placed in the top five and advanced to the semi-finals round.<br />
<br />
<li> Gabe Van Eyck and Dennis Brylow. Xinu as a Multi-Core Operating<br />
System on the PlayStation 3. Poster presentation at [http://www.sigcse.org/sigcse2010/ SIGCSE 2010]<br />
[http://src.acm.org/ ACM Student Research Competition], undergraduate division, Milwaukee, Wisconsin, March 2010.<br />
<br />
<li> Aaron Gember and Dennis Brylow. Real-Time TCP Extensions. Poster<br />
presentation and research talk presented at [http://www.cs.arizona.edu/groups/sigcse09/ SIGCSE 2009]<br />
[http://src.acm.org/ ACM Student Research Competition], undergraduate division, Chattanooga, Tennessee. Aaron advanced to<br />
semi-finals, placed in top<br />
three finalists, and advanced to the grand finals.<br />
<br />
<li>Dennis Brylow. Experimental Operating System Lab On A Dime.<br />
[http://www.cs.potsdam.edu/sigcse07/ SIGCSE 2007]: Technical Symposium on Computer Science Education, Covington, Kentucky,<br />
March 2007. [http://www.mscs.mu.edu/~brylow/papers/Brylow-SIGCSE2007.pdf (link)].<br />
<br />
=== Workshops ===<br />
<br />
<li> Paul Ruth and Dennis Brylow. Teaching With Embedded Xinu. Workshop<br />
accepted at [http://www.cs.olemiss.edu/acmse2010/Home.htm ACMSE 2010]:<br />
The 48th ACM Southeast Conference, Oxford, Mississippi, April 2010.<br />
<br />
<li>Dennis Brylow and Paul Ruth. Teaching With Embedded Xinu. Workshop<br />
accepted at [http://www.sigcse.org/sigcse2010/ SIGCSE 2010]:<br />
The 41st ACM Technical Symposium on Computer Science Education, Milwaukee,<br />
Wisconsin, March 2010.<br />
<br />
== Lab Equipment ==<br />
<br />
The [[Systems Laboratory]] is populated with dual-headed Linux boxes running the latest version of [http://fedoraproject.org/ Fedora Linux].<br />
Other workstations in the lab include a dual-core Apple G5 running OS X, and several multi-core boxes for higher-end computation.<br />
<br />
The Xinu Laboratory component of the Systems Lab includes a pool of 24 WRT54GL wireless routers organized into a managed embedded<br />
backend pool, as well as smaller quantities of half a dozen other router types. Embedded development kits available include<br />
the Freescale/Motorola [http://www.evbplus.com/hcs12.html 68HC12 Dragon12] board,<br />
the Atmel [http://www.atmel.com/dyn/products/tools_card.asp?tool_id=2717 AT91 Series ARM Thumb] AT91EB40A board,<br />
the [http://www.atmel.com/products/AVR/butterfly ATmega169 Butterfly],<br />
a Zilog [http://www.zilog.com/docs/z8/devtools/z86ccp01zem.pdf Z86 Emulator Z86CCP01ZEM],<br />
and the Zilog [http://www.zilog.com/index.php?option=com_product&Itemid=26&mode=showProdDet&businessLine=1&familyId=6&productId=Z8F04A28100KIT Z8 Encore XP Dev Kit Z8F04A28100KIT-C].<br />
<br />
The Systems Lab includes both a private research network with our own gateway and firewall, and connections to each of the MSCS department production networks.<br />
The Lab also hosts Subversion, Trac, and Web service for the Marquette Student [http://acm.mscs.mu.edu/ ACM Chapter], the<br />
[http://mulug.mscs.mu.edu/ Marquette University Linux Users Group], and a stratum 2 NTP server for campus.<br />
<br />
== Lab Personnel ==<br />
<br />
=== Current Students ===<br />
<br />
[[File:XINU-summer2009.png|800px|thumb]] The Xinu Team in Summer 2009.<br />
<br />
From left,<br />
Kyle Thurow, [http://www.mscs.mu.edu/~dmahoney/ Dan Mahoney],<br />
[http://www.gemberdesign.com/ Aaron Gember],<br />
[http://www.mscs.mu.edu/~mschul/ Mike Schultz],<br />
[http://www.zacintosh.com/ Zachary Lund],<br />
[http://www.mscs.mu.edu/~brylow/ Dr. Dennis Brylow],<br />
[http://www.mscs.mu.edu/~rberg/ Ryan Berg], and<br />
[http://pintozzi.com/ Joe Pintozzi].<br />
Not pictured: <br />
[http://www.mscs.mu.edu/~akoehler/ Adam Koehler] and<br />
Paul Spillane.<br />
<br />
<br />
=== Alumni ===<br />
<br />
Mike Schultz, M.S. 2009. Now at [http://www.wustl.edu/ Washington University in St. Louis] doctoral program.<br />
<br />
Tim Blattner, B.S. 2009. Now at [http://www.umbc.edu/ University of Maryland - Baltimore County] doctoral program.<br />
<br />
Aaron Gember, B.S. 2009. Now at [http://www.cs.wisc.edu/ University of Wisconsin-Madison] doctoral program.<br />
<br />
Adam Koehler, M.S. 2010. Now at [http://www1.cs.ucr.edu/index.php University of California Riverside] doctoral program.</div>Brylowhttps://xinu.cs.mu.edu/index.php?title=Systems_Laboratory&diff=3604Systems Laboratory2010-04-02T22:55:47Z<p>Brylow: /* Lab Equipment */</p>
<hr />
<div>== About the Systems Laboratory ==<br />
<br />
[http://www.mu.edu/ Marquette]'s [[Systems Laboratory]], under the direction of [http://www.mscs.mu.edu/~brylow/ Dr. Dennis Brylow] in the [http://www.mscs.mu.edu/ Department of Mathematics, Statistics, and Computer Science], is housed on the third floor of Cudahy Hall.<br />
<br />
The lab creates new tools and methods for building and studying complex computer systems. Our emphasis is on embedded, real-time, and network systems, with strong ties to the electrical and computer engineering community, and the computer science education community. Current projects include:<br />
<br />
1. Experimental Embedded Networking Platform. Creation of laboratory infrastructure and software for research and education in the area of embedded networking appliances, particularly wireless routers and IP telephony. Collaboration with Cisco Systems Advanced Research Division.<br />
<br />
2. Experimental Embedded Operating System Laboratory. Creation of laboratory infrastructure and software for research and education in area of embedded operating systems. Collaboration with University of Buffalo and University of Mississippi, with funding from the National Science Founcation.<br />
<br />
3. Embedded Software Transactional Memory. Exploration of an innovative transactional memory model for guaranteeing process synchronization in embedded operating systems. Collaboration with Intel Research.<br />
<br />
The Systems Lab will host three undergraduate [http://acm.mscs.mu.edu/reu REU] (Research Experience for Undergraduates) students in summer 2010, funded by the MU's College of Arts and Sciences. They will be working on ports of the Embedded Xinu operating system to new embedded platforms, embedded network emulation, and multicore embedded systems.<br />
<br />
See the MSCS [http://www.mscs.mu.edu/mscs/faculty/research_labs.html Research Labs] page for more research laboratories in our department.<br />
<br />
== Publications ==<br />
<br />
=== Conference Proceedings and Journals ===<br />
<li>Dennis Brylow and Bina Ramamurthy. Nexos: A Next Generation Embedded<br />
Systems Laboratory, In <i>Proceedings of WESE 2008: 4th Workshop on Embedded<br />
Systems Education</i>, pages 10-17, Atlanta, Georgia, October 2008.<br />
[http://www.lulu.com/content/3613764 (link)]<br /><br />
Extended version in <i>SIGBED Review</i>, Volume 6, Number 1, January 2009.<br />
[http://www.cs.virginia.edu/sigbed/archives/2009-01/j-7-wese-journal-p18-final-brylow.pdf (link)]<br />
<br />
<li>Dennis Brylow. An Experimental Laboratory Environment for Teaching Embedded <br />
Operating Systems, In <i>Proceedings of [http://www.cs.duke.edu/sigcse08/ SIGCSE 2008]: The 39th ACM Technical Symposium on Computer Science Education</i>, pages 192-196, Portland, Oregon, March 2008. [http://doi.acm.org/10.1145/1352322.1352201 (link)]<br />
<br />
<li>Dennis Brylow. An Experimental Laboratory Environment for Teaching Embedded Hardware Systems, In <i>Proceedings of<br />
[http://www.ncsu.edu/wcae/ISCA2007/FinalProgram.html WCAE 2007]:<br />
Workshop on Computer Architecture Education</i>,<br />
pages 44-51, San Diego, California, June 2007.<br />
[http://www.mscs.mu.edu/~brylow/papers/Brylow-WCAE2007.pdf (link)]<br />
<br />
=== Posters and Undergraduate Research ===<br />
<br />
<li> Kyle Thurow and Dennis Brylow. A Network Emulator on Embedded Xinu.<br />
Poster presentation and research talk presented at [http://www.sigcse.org/sigcse2010/ SIGCSE 2010]<br />
[http://src.acm.org/ ACM Student Research Competition], undergraduate division, Milwaukee, Wisconsin, March 2010. Kyle placed in the top five and advanced to the semi-finals round.<br />
<br />
<li> Gabe Van Eyck and Dennis Brylow. Xinu as a Multi-Core Operating<br />
System on the PlayStation 3. Poster presentation at [http://www.sigcse.org/sigcse2010/ SIGCSE 2010]<br />
[http://src.acm.org/ ACM Student Research Competition], undergraduate division, Milwaukee, Wisconsin, March 2010.<br />
<br />
<li> Aaron Gember and Dennis Brylow. Real-Time TCP Extensions. Poster<br />
presentation and research talk presented at [http://www.cs.arizona.edu/groups/sigcse09/ SIGCSE 2009]<br />
[http://src.acm.org/ ACM Student Research Competition], undergraduate division, Chattanooga, Tennessee. Aaron advanced to<br />
semi-finals, placed in top<br />
three finalists, and advanced to the grand finals.<br />
<br />
<li>Dennis Brylow. Experimental Operating System Lab On A Dime.<br />
[http://www.cs.potsdam.edu/sigcse07/ SIGCSE 2007]: Technical Symposium on Computer Science Education, Covington, Kentucky,<br />
March 2007. [http://www.mscs.mu.edu/~brylow/papers/Brylow-SIGCSE2007.pdf (link)].<br />
<br />
=== Workshops ===<br />
<br />
<li> Paul Ruth and Dennis Brylow. Teaching With Embedded Xinu. Workshop<br />
accepted at [http://www.cs.olemiss.edu/acmse2010/Home.htm ACMSE 2010]:<br />
The 48th ACM Southeast Conference, Oxford, Mississippi, April 2010.<br />
<br />
<li>Dennis Brylow and Paul Ruth. Teaching With Embedded Xinu. Workshop<br />
accepted at [http://www.sigcse.org/sigcse2010/ SIGCSE 2010]:<br />
The 41st ACM Technical Symposium on Computer Science Education, Milwaukee,<br />
Wisconsin, March 2010.<br />
<br />
== Lab Equipment ==<br />
<br />
The [[Systems Laboratory]] is populated with dual-headed Linux boxes running the latest version of [http://fedoraproject.org/ Fedora Linux].<br />
Other workstations in the lab include a dual-core Apple G5 running OS X, and several multi-core boxes for higher-end computation.<br />
<br />
The Xinu Laboratory component of the Systems Lab includes a pool of 24 WRT54GL wireless routers organized into a managed embedded<br />
backend pool, as well as smaller quantities of half a dozen other router types. Embedded development kits available include<br />
the Freescale/Motorola [http://www.evbplus.com/hcs12.html 68HC12 Dragon12] board,<br />
the Atmel [http://www.atmel.com/dyn/products/tools_card.asp?tool_id=2717 AT91 Series ARM Thumb] AT91EB40A board,<br />
the [http://www.atmel.com/products/AVR/butterfly ATmega169 Butterfly],<br />
a Zilog [http://www.zilog.com/docs/z8/devtools/z86ccp01zem.pdf Z86 Emulator Z86CCP01ZEM],<br />
and the Zilog [http://www.zilog.com/index.php?option=com_product&Itemid=26&mode=showProdDet&businessLine=1&familyId=6&productId=Z8F04A28100KIT Z8 Encore XP Dev Kit Z8F04A28100KIT-C].<br />
<br />
The Systems Lab includes both a private research network with our own gateway and firewall, and connections to each of the MSCS department production networks.<br />
The Lab also hosts Subversion, Trac, and Web service for the Marquette Student [http://acm.mscs.mu.edu/ ACM Chapter], the<br />
[http://mulug.mscs.mu.edu/ Marquette University Linux Users Group], and a stratum 2 NTP server for campus.<br />
<br />
== Lab Personnel ==<br />
<br />
=== Current Students ===<br />
<br />
[[File:XINU-summer2009.png|800px|thumb]] The Xinu Team in Summer 2009.<br />
<br />
From left,<br />
Kyle Thurow, [http://www.mscs.mu.edu/~dmahoney/ Dan Mahoney],<br />
[http://www.gemberdesign.com/ Aaron Gember],<br />
[http://www.mscs.mu.edu/~mschul/ Mike Schultz],<br />
[http://www.zacintosh.com/ Zachary Lund],<br />
[http://www.mscs.mu.edu/~brylow/ Dr. Dennis Brylow],<br />
[http://www.mscs.mu.edu/~rberg/ Ryan Berg], and<br />
[http://pintozzi.com/ Joe Pintozzi].<br />
Not pictured: <br />
[http://www.mscs.mu.edu/~akoehler/ Adam Koehler] and<br />
Paul Spillane.<br />
<br />
<br />
=== Alumni ===<br />
<br />
Mike Schultz, M.S. 2009. Now at [http://www.wustl.edu/ Washington University in St. Louis] doctoral program.<br />
<br />
Tim Blattner, B.S. 2009. Now at [http://www.umbc.edu/ University of Maryland - Baltimore County] doctoral program.<br />
<br />
Aaron Gember, B.S. 2009. Now at [http://www.cs.wisc.edu/ University of Wisconsin] doctoral program.</div>Brylowhttps://xinu.cs.mu.edu/index.php?title=Systems_Laboratory&diff=3603Systems Laboratory2010-04-02T22:54:38Z<p>Brylow: </p>
<hr />
<div>== About the Systems Laboratory ==<br />
<br />
[http://www.mu.edu/ Marquette]'s [[Systems Laboratory]], under the direction of [http://www.mscs.mu.edu/~brylow/ Dr. Dennis Brylow] in the [http://www.mscs.mu.edu/ Department of Mathematics, Statistics, and Computer Science], is housed on the third floor of Cudahy Hall.<br />
<br />
The lab creates new tools and methods for building and studying complex computer systems. Our emphasis is on embedded, real-time, and network systems, with strong ties to the electrical and computer engineering community, and the computer science education community. Current projects include:<br />
<br />
1. Experimental Embedded Networking Platform. Creation of laboratory infrastructure and software for research and education in the area of embedded networking appliances, particularly wireless routers and IP telephony. Collaboration with Cisco Systems Advanced Research Division.<br />
<br />
2. Experimental Embedded Operating System Laboratory. Creation of laboratory infrastructure and software for research and education in area of embedded operating systems. Collaboration with University of Buffalo and University of Mississippi, with funding from the National Science Founcation.<br />
<br />
3. Embedded Software Transactional Memory. Exploration of an innovative transactional memory model for guaranteeing process synchronization in embedded operating systems. Collaboration with Intel Research.<br />
<br />
The Systems Lab will host three undergraduate [http://acm.mscs.mu.edu/reu REU] (Research Experience for Undergraduates) students in summer 2010, funded by the MU's College of Arts and Sciences. They will be working on ports of the Embedded Xinu operating system to new embedded platforms, embedded network emulation, and multicore embedded systems.<br />
<br />
See the MSCS [http://www.mscs.mu.edu/mscs/faculty/research_labs.html Research Labs] page for more research laboratories in our department.<br />
<br />
== Publications ==<br />
<br />
=== Conference Proceedings and Journals ===<br />
<li>Dennis Brylow and Bina Ramamurthy. Nexos: A Next Generation Embedded<br />
Systems Laboratory, In <i>Proceedings of WESE 2008: 4th Workshop on Embedded<br />
Systems Education</i>, pages 10-17, Atlanta, Georgia, October 2008.<br />
[http://www.lulu.com/content/3613764 (link)]<br /><br />
Extended version in <i>SIGBED Review</i>, Volume 6, Number 1, January 2009.<br />
[http://www.cs.virginia.edu/sigbed/archives/2009-01/j-7-wese-journal-p18-final-brylow.pdf (link)]<br />
<br />
<li>Dennis Brylow. An Experimental Laboratory Environment for Teaching Embedded <br />
Operating Systems, In <i>Proceedings of [http://www.cs.duke.edu/sigcse08/ SIGCSE 2008]: The 39th ACM Technical Symposium on Computer Science Education</i>, pages 192-196, Portland, Oregon, March 2008. [http://doi.acm.org/10.1145/1352322.1352201 (link)]<br />
<br />
<li>Dennis Brylow. An Experimental Laboratory Environment for Teaching Embedded Hardware Systems, In <i>Proceedings of<br />
[http://www.ncsu.edu/wcae/ISCA2007/FinalProgram.html WCAE 2007]:<br />
Workshop on Computer Architecture Education</i>,<br />
pages 44-51, San Diego, California, June 2007.<br />
[http://www.mscs.mu.edu/~brylow/papers/Brylow-WCAE2007.pdf (link)]<br />
<br />
=== Posters and Undergraduate Research ===<br />
<br />
<li> Kyle Thurow and Dennis Brylow. A Network Emulator on Embedded Xinu.<br />
Poster presentation and research talk presented at [http://www.sigcse.org/sigcse2010/ SIGCSE 2010]<br />
[http://src.acm.org/ ACM Student Research Competition], undergraduate division, Milwaukee, Wisconsin, March 2010. Kyle placed in the top five and advanced to the semi-finals round.<br />
<br />
<li> Gabe Van Eyck and Dennis Brylow. Xinu as a Multi-Core Operating<br />
System on the PlayStation 3. Poster presentation at [http://www.sigcse.org/sigcse2010/ SIGCSE 2010]<br />
[http://src.acm.org/ ACM Student Research Competition], undergraduate division, Milwaukee, Wisconsin, March 2010.<br />
<br />
<li> Aaron Gember and Dennis Brylow. Real-Time TCP Extensions. Poster<br />
presentation and research talk presented at [http://www.cs.arizona.edu/groups/sigcse09/ SIGCSE 2009]<br />
[http://src.acm.org/ ACM Student Research Competition], undergraduate division, Chattanooga, Tennessee. Aaron advanced to<br />
semi-finals, placed in top<br />
three finalists, and advanced to the grand finals.<br />
<br />
<li>Dennis Brylow. Experimental Operating System Lab On A Dime.<br />
[http://www.cs.potsdam.edu/sigcse07/ SIGCSE 2007]: Technical Symposium on Computer Science Education, Covington, Kentucky,<br />
March 2007. [http://www.mscs.mu.edu/~brylow/papers/Brylow-SIGCSE2007.pdf (link)].<br />
<br />
=== Workshops ===<br />
<br />
<li> Paul Ruth and Dennis Brylow. Teaching With Embedded Xinu. Workshop<br />
accepted at [http://www.cs.olemiss.edu/acmse2010/Home.htm ACMSE 2010]:<br />
The 48th ACM Southeast Conference, Oxford, Mississippi, April 2010.<br />
<br />
<li>Dennis Brylow and Paul Ruth. Teaching With Embedded Xinu. Workshop<br />
accepted at [http://www.sigcse.org/sigcse2010/ SIGCSE 2010]:<br />
The 41st ACM Technical Symposium on Computer Science Education, Milwaukee,<br />
Wisconsin, March 2010.<br />
<br />
== Lab Equipment ==<br />
<br />
The [[Systems Laboratory]] is populated with dual-headed Linux boxes running the latest version of [http://fedoraproject.org/ Fedora Linux].<br />
Other workstations in the lab include a dual-core Apple G5 running OS X, and several multi-core boxes for higher-end computation.<br />
<br />
The Xinu Laboratory component of the Systems Lab includes a pool of 24 WRT54GL wireless routers organized into a managed embedded<br />
backend pool, as well as smaller quantities of half a dozen other router types. Embedded development kits available include<br />
the Freescale/Motorola [http://www.evbplus.com/hcs12.html 68HC12 Dragon12] board,<br />
the Atmel [http://www.atmel.com/dyn/products/tools_card.asp?tool_id=2717 AT91 Series ARM Thumb] AT91EB40A board,<br />
the [http://www.atmel.com/products/AVR/butterfly ATmega169 Butterfly],<br />
a Zilog [http://www.zilog.com/docs/z8/devtools/z86ccp01zem.pdf Z86 Emulator Z86CCP01ZEM],<br />
and the Zilog [http://www.zilog.com/index.php?option=com_product&Itemid=26&mode=showProdDet&businessLine=1&familyId=6&productId=Z8F04A28100KIT Z8 Encore XP Dev Kit Z8F04A28100KIT-C].<br />
<br />
The Systems Lab includes both a private research network with our own gateway and firewall, and connections to each of the MSCS department production networks.<br />
The Lab also hosts Subversion, Trac, and Web service for the Marquette Student [http://acm.mscs.mu.edu/ ACM Chapter], the [http://mulug.mscs.mu.edu/ Marquette University<br />
Linux Users Group], and a stratum 2 NTP server for campus.<br />
<br />
== Lab Personnel ==<br />
<br />
=== Current Students ===<br />
<br />
[[File:XINU-summer2009.png|800px|thumb]] The Xinu Team in Summer 2009.<br />
<br />
From left,<br />
Kyle Thurow, [http://www.mscs.mu.edu/~dmahoney/ Dan Mahoney],<br />
[http://www.gemberdesign.com/ Aaron Gember],<br />
[http://www.mscs.mu.edu/~mschul/ Mike Schultz],<br />
[http://www.zacintosh.com/ Zachary Lund],<br />
[http://www.mscs.mu.edu/~brylow/ Dr. Dennis Brylow],<br />
[http://www.mscs.mu.edu/~rberg/ Ryan Berg], and<br />
[http://pintozzi.com/ Joe Pintozzi].<br />
Not pictured: <br />
[http://www.mscs.mu.edu/~akoehler/ Adam Koehler] and<br />
Paul Spillane.<br />
<br />
<br />
=== Alumni ===<br />
<br />
Mike Schultz, M.S. 2009. Now at [http://www.wustl.edu/ Washington University in St. Louis] doctoral program.<br />
<br />
Tim Blattner, B.S. 2009. Now at [http://www.umbc.edu/ University of Maryland - Baltimore County] doctoral program.<br />
<br />
Aaron Gember, B.S. 2009. Now at [http://www.cs.wisc.edu/ University of Wisconsin] doctoral program.</div>Brylowhttps://xinu.cs.mu.edu/index.php?title=File:XINU-summer2009.png&diff=3602File:XINU-summer2009.png2010-04-02T22:50:03Z<p>Brylow: </p>
<hr />
<div></div>Brylowhttps://xinu.cs.mu.edu/index.php?title=Systems_Laboratory&diff=3600Systems Laboratory2010-04-02T13:26:03Z<p>Brylow: /* Director: Dennis Brylow */</p>
<hr />
<div>== Director: Dennis Brylow ==<br />
<br />
<br />
The lab creates new tools and methods for building and studying complex computer systems. Our emphasis is on embedded, real-time, and network systems, with strong ties to the electrical and computer engineering community, and the computer science education community. Current projects include:<br />
<br />
1. Experimental Embedded Networking Platform. Creation of laboratory infrastructure and software for research and education in the area of embedded networking appliances, particularly wireless routers and IP telephony. Collaboration with Cisco Systems Advanced Research Division.<br />
<br />
2. Experimental Embedded Operating System Laboratory. Creation of laboratory infrastructure and software for research and education in area of embedded operating systems. Collaboration with University of Buffalo and University of Mississippi, with funding from the National Science Founcation.<br />
<br />
3. Embedded Software Transactional Memory. Exploration of an innovative transactional memory model for guaranteeing process synchronization in embedded operating systems. Collaboration with Intel Research.<br />
<br />
4. Embedded IP Telephony. Creation of an inexpensive, open embedded VoIP (Voice over Internet Protocol) phone for research and teaching.<br />
<br />
The Systems Lab will host three undergraduate REU (Research Experience for Undergraduates) students in summer 2010, funded by the MU's College of Arts and Sciences. They will be working on<br />
ports of the Embedded Xinu operating system to new embedded platforms, embedded network emulation, and multicore embedded systems.<br />
<br />
See the MSCS [http://www.mscs.mu.edu/mscs/faculty/research_labs.html Research Labs] page for more research laboratories in our department.</div>Brylowhttps://xinu.cs.mu.edu/index.php?title=Systems_Laboratory&diff=3599Systems Laboratory2010-04-02T13:19:04Z<p>Brylow: Created page with '== Director: Dennis Brylow == The lab creates new tools and methods for building and studying complex computer systems. Our emphasis is on embedded, real-time, and network syst...'</p>
<hr />
<div>== Director: Dennis Brylow ==<br />
<br />
<br />
The lab creates new tools and methods for building and studying complex computer systems. Our emphasis is on embedded, real-time, and network systems, with strong ties to the electrical and computer engineering community, and the computer science education community. Current projects include:<br />
<br />
1. Experimental Embedded Networking Platform. Creation of laboratory infrastructure and software for research and education in the area of embedded networking appliances, particularly wireless routers and IP telephony. Collaboration with Cisco Systems Advanced Research Division.<br />
<br />
2. Experimental Embedded Operating System Laboratory. Creation of laboratory infrastructure and software for research and education in area of embedded operating systems. Collaboration with University of Buffalo and University of Mississippi, with funding from the National Science Founcation.<br />
<br />
3. Embedded Software Transactional Memory. Exploration of an innovative transactional memory model for guaranteeing process synchronization in embedded operating systems. Collaboration with Intel Research.<br />
<br />
4. Embedded IP Telephony. Creation of an inexpensive, open embedded VoIP (Voice over Internet Protocol) phone for research and teaching.<br />
<br />
See the MSCS [http://www.mscs.mu.edu/mscs/faculty/research_labs.html Research Labs] page for more research laboratories in our department.</div>Brylowhttps://xinu.cs.mu.edu/index.php?title=Main_Page&diff=3598Main Page2010-04-02T13:13:45Z<p>Brylow: </p>
<hr />
<div>Embedded Xinu is an ongoing research and implementation project in the area of Operating Systems and Embedded Systems. Its goal is to port the [[Xinu|Xinu Operating System]] to the embedded MIPS platform. The current release supports Linksys WRT54GL and WRT160NL routers, as well as the Qemu virtual machine. While this project is still in progress, our laboratory environment and curriculum materials are already in use for courses in Operating Systems, Hardware Systems, Embedded Systems, Networking and Compilers.<br />
<br />
The Embedded Xinu project was conceived and is supervised by [http://www.mscs.mu.edu/~brylow/ Dr. Dennis Brylow] and is being conducted by both graduate and undergraduate students in the [[Systems Laboratory]] in the [http://www.mscs.mu.edu/ Math, Statistics, & Computer Science] department of [http://www.mu.edu/ Marquette University] in Milwaukee, Wisconsin. The first major phase of work on Embedded Xinu began in the Summer of 2006.<br />
<br />
Our project partners include [http://www.cse.buffalo.edu/~bina/ Dr. Bina Ramamurthy] at University of Buffalo (with whom we shared an [http://www.nsf.gov/pubs/2009/nsf09529/nsf09529.html NSF CCLI] grant), [http://cs.olemiss.edu/~ruth/wiki/doku.php Dr. Paul Ruth] at University of Mississippi, and [http://www.cs.purdue.edu/people/comer Dr. Doug Comer] (father of Xinu) at Purdue University.<br />
<br />
== Teaching With Embedded Xinu ==<br />
<br />
* Join us for the [http://www.cs.olemiss.edu/acmse2010/pdf/xinu.pdf Teaching With Embedded Xinu Workshop] at [http://www.cs.olemiss.edu/acmse2010/Home.htm ACMSE 2010] in Oxford, Mississippi (Ole Miss campus) April 15. This workshop will share ready-made curriculum resources that have been used successfully to teach hardware systems, operating systems, realtime/embedded systems, networking, and compilers with the Embedded Xinu platform at several colleges/universities. Commodity wireless router hardware or equivalent virtual machines, combined with freely-available software and tools, make for a powerful and flexible learning platform without having to fake any components. Come see what Nexos has to offer for your program.<br />
<br />
* For curriculum guidance on adopting or adapting Embedded Xinu for undergraduate coursework, see [[Teaching With Xinu]].<br />
<br />
== Building an Embedded Xinu Laboratory ==<br />
<br />
In this section we are developing instructions so that other groups can benefit from the work we are doing. These guides can be followed more or less in order to create a relatively inexpensive platform for a custom operating system. As our work develops further, there will be more Xinu-specific information.<br />
<br />
# Obtain a [[List of supported platforms|supported platform]].<br />
# [[HOWTO:Modify the Linksys hardware|Modify the Linksys hardware]]<br />
# [[HOWTO:Connect to a modified router|Connect to a modified router]]<br />
# [[HOWTO:Build Xinu|Build Xinu]]<br />
# [[HOWTO:Deploy Xinu|Deploy Xinu]]<br />
# (Optional) [[HOWTO:Build Backend Pool|Build a pool of backends]]<br />
<br />
== Other Embedded Xinu Information ==<br />
<br />
* MIPS [[processor]]<br />
* Main [[memory]]<br />
* [[Exception and Interrupt Handling]]<br />
* [[UART driver]]<br />
* [[TTY driver]]<br />
* [[Switch driver]]<br />
* [[Flash memory]]<br />
* [[EJTAG|Enhanced Joint Test Action Group]] debugger<br />
* [[Standard library]]<br />
<br />
----<br />
<br />
<small><small><small>The Xinu Lab is brought to you in part by [[XMMS|M&M's]].</small></small></small><br />
<!--<br />
-->__NOTOC__<!-- Disable "Contents" box from showing --><!--<br />
-->__NOEDITSECTION__<!-- Disable [edit] from appearing --><!--<br />
--></div>Brylowhttps://xinu.cs.mu.edu/index.php?title=Main_Page&diff=3597Main Page2010-03-18T18:42:04Z<p>Brylow: </p>
<hr />
<div>Embedded Xinu is an ongoing research and implementation project in the area of Operating Systems and Embedded Systems. Its goal is to port the [[Xinu|Xinu Operating System]] to the embedded MIPS platform. The current release supports Linksys WRT54GL and WRT160NL routers, as well as the Qemu virtual machine. While this project is still in progress, our laboratory environment and curriculum materials are already in use for courses in Operating Systems, Hardware Systems, Embedded Systems, Networking and Compilers.<br />
<br />
The Embedded Xinu project was conceived and is supervised by [http://www.mscs.mu.edu/~brylow/ Dr. Dennis Brylow] and is being conducted by both graduate and undergraduate students in the [http://www.mscs.mu.edu/ Math, Statistics, & Computer Science] department of [http://www.mu.edu/ Marquette University] in Milwaukee, Wisconsin. The first major phase of work on Embedded Xinu began in the Summer of 2006.<br />
<br />
Our project partners include [http://www.cse.buffalo.edu/~bina/ Dr. Bina Ramamurthy] at University of Buffalo (with whom we shared an [http://www.nsf.gov/pubs/2009/nsf09529/nsf09529.html NSF CCLI] grant), [http://cs.olemiss.edu/~ruth/wiki/doku.php Dr. Paul Ruth] at University of Mississippi, and [http://www.cs.purdue.edu/people/comer Dr. Doug Comer] (father of Xinu) at Purdue University.<br />
<br />
== Teaching With Embedded Xinu ==<br />
<br />
* Join us for the [http://www.cs.olemiss.edu/acmse2010/pdf/xinu.pdf Teaching With Embedded Xinu Workshop] at [http://www.cs.olemiss.edu/acmse2010/Home.htm ACMSE 2010] in Oxford, Mississippi (Ole Miss campus) April 15. This workshop will share ready-made curriculum resources that have been used successfully to teach hardware systems, operating systems, realtime/embedded systems, networking, and compilers with the Embedded Xinu platform at several colleges/universities. Commodity wireless router hardware or equivalent virtual machines, combined with freely-available software and tools, make for a powerful and flexible learning platform without having to fake any components. Come see what Nexos has to offer for your program.<br />
<br />
* For curriculum guidance on adopting or adapting Embedded Xinu for undergraduate coursework, see [[Teaching With Xinu]].<br />
<br />
== Building an Embedded Xinu Laboratory ==<br />
<br />
In this section we are developing instructions so that other groups can benefit from the work we are doing. These guides can be followed more or less in order to create a relatively inexpensive platform for a custom operating system. As our work develops further, there will be more Xinu-specific information.<br />
<br />
# Obtain a [[List of supported platforms|supported platform]].<br />
# [[HOWTO:Modify the Linksys hardware|Modify the Linksys hardware]]<br />
# [[HOWTO:Connect to a modified router|Connect to a modified router]]<br />
# [[HOWTO:Build Xinu|Build Xinu]]<br />
# [[HOWTO:Deploy Xinu|Deploy Xinu]]<br />
# (Optional) [[HOWTO:Build Backend Pool|Build a pool of backends]]<br />
<br />
== Other Embedded Xinu Information ==<br />
<br />
* MIPS [[processor]]<br />
* Main [[memory]]<br />
* [[Exception and Interrupt Handling]]<br />
* [[UART driver]]<br />
* [[TTY driver]]<br />
* [[Switch driver]]<br />
* [[Flash memory]]<br />
* [[EJTAG|Enhanced Joint Test Action Group]] debugger<br />
* [[Standard library]]<br />
<br />
----<br />
<br />
<small><small><small>The Xinu Lab is brought to you in part by [[XMMS|M&M's]].</small></small></small><br />
<!--<br />
-->__NOTOC__<!-- Disable "Contents" box from showing --><!--<br />
-->__NOEDITSECTION__<!-- Disable [edit] from appearing --><!--<br />
--></div>Brylowhttps://xinu.cs.mu.edu/index.php?title=Teaching_With_Xinu&diff=3559Teaching With Xinu2010-01-24T22:13:54Z<p>Brylow: /* Overview */</p>
<hr />
<div>[[Category:HOWTO]]<br />
[[Category:Teaching With Xinu]]<br />
[[Category:Student Built Xinu]]<br />
[[Category:Student Extended Xinu]]<br />
[[Category:Networking With Xinu]]<br />
== Overview ==<br />
Several [[:Category:HOWTO|'How To' pages]] on this wiki allow instructors to develop and build a classroom or laboratory setting enabling the modification and use of [[Embedded Xinu]].<br />
<br />
The set of pages found under the [[:Category:Teaching With Xinu|Teaching With Xinu]] category help an instructor understand how to incorporate Embedded Xinu into a course for his or her department's curriculum. Each of the models is based on an existing course that has been run at Marquette or one of our partner schools.<br />
<br />
== Operating Systems Tracks ==<br />
==== [[Student Built Xinu]] ====<br />
A student built operating system puts the student in the trenches of operating system development. The student will become intimately involved with the inner workings of an operating system. This will give the student a better understanding of the various systems that work together behind the scenes while an operating system is running. Operating systems topics that can be incorporated in a student built Xinu course include: memory management, scheduling, concurrent processing, device management, file systems and others.<br />
<br />
==== [[Student Extended Xinu]] ====<br />
Students will learn to extend an operating system by adding kernel level and user level applications. Given a functional Embedded Xinu operating system the students will have to understand and manipulate existing operating system code to create additional operating system features. To add more applications to the operating system students will have to understand the interactions between the program in design and the operating system's device and kernel interaction calls. Programming for embedded devices allows students to engage in development on small resource constrained environments. Through extending the existing Embedded Xinu operating system a student learns to use and understand code not written by the student and develops advanced operating system concepts.<br />
<br />
== Networking ==<br />
==== [[Networking With Xinu]] ====<br />
A networking course incorporating Embedded Xinu can have students build networking functionality into Embedded Xinu over the period of the course. Courses may vary in starting point; some choosing to use a core Embedded Xinu release and having students build the entire network stack and ethernet driver. While others may choose an Embedded Xinu release with the ethernet driver available so that the students can concentrate on other parts of the network stack. Network stack implementation assignments for students can parallel various networking lectures that traverse the stack over the course of the semester, terminating in the students implementing an application that uses the developed network stack.<br />
<br />
----<br />
<br />
<small><small>This work funded in part by NSF grant DUE-CCLI-0737476.</small></small></div>Brylowhttps://xinu.cs.mu.edu/index.php?title=Main_Page&diff=3558Main Page2010-01-24T22:11:35Z<p>Brylow: </p>
<hr />
<div>Embedded Xinu is an ongoing research and implementation project in the area of Operating Systems and Embedded Systems. Its goal is to port the [[Xinu|Xinu Operating System]] to the embedded MIPS platform. The current release supports Linksys WRT54GL and WRT160NL routers, as well as the Qemu virtual machine. While this project is still in progress, our laboratory environment and curriculum materials are already in use for courses in Operating Systems, Hardware Systems, Embedded Systems, Networking and Compilers.<br />
<br />
The Embedded Xinu project was conceived and is supervised by [http://www.mscs.mu.edu/~brylow/ Dr. Dennis Brylow] and is being conducted by both graduate and undergraduate students in the [http://www.mscs.mu.edu/ Math, Statistics, & Computer Science] department of [http://www.mu.edu/ Marquette University] in Milwaukee, Wisconsin. The first major phase of work on Embedded Xinu began in the Summer of 2006.<br />
<br />
Our project partners include [http://www.cse.buffalo.edu/~bina/ Dr. Bina Ramamurthy] at University of Buffalo (with whom we shared an [http://www.nsf.gov/pubs/2009/nsf09529/nsf09529.html NSF CCLI] grant), [http://cs.olemiss.edu/~ruth/wiki/doku.php Dr. Paul Ruth] at University of Mississippi, and [http://www.cs.purdue.edu/people/comer Dr. Doug Comer] (father of Xinu) at Purdue University.<br />
<br />
== Teaching With Embedded Xinu ==<br />
<br />
* Join us for the [http://db.grinnell.edu/sigcse/sigcse2010/Program/viewAcceptedDayTime.asp?timeID=25264 Teaching With Embedded Xinu Workshop] at [http://www.sigcse.org/sigcse2010/ SIGCSE 2010] in Milwaukee, WI, March 10. (Early registration ends Jan 31!) This workshop will share ready-made curriculum resources that have been used successfully to teach hardware systems, operating systems, realtime/embedded systems, networking, and compilers with the Embedded Xinu platform at several colleges/universities. Commodity wireless router hardware or equivalent virtual machines, combined with freely-available software and tools, make for a powerful and flexible learning platform without having to fake any components. Come see what Nexos has to offer for your program.<br />
<br />
* For curriculum guidance on adopting or adapting Embedded Xinu for undergraduate coursework, see [[Teaching With Xinu]].<br />
<br />
== Building an Embedded Xinu Laboratory ==<br />
<br />
In this section we are developing instructions so that other groups can benefit from the work we are doing. These guides can be followed more or less in order to create a relatively inexpensive platform for a custom operating system. As our work develops further, there will be more Xinu-specific information.<br />
<br />
# Obtain a [[List of supported platforms|supported platform]].<br />
# [[HOWTO:Modify the Linksys hardware|Modify the Linksys hardware]]<br />
# [[HOWTO:Connect to a modified router|Connect to a modified router]]<br />
# [[HOWTO:Build Xinu|Build Xinu]]<br />
# [[HOWTO:Deploy Xinu|Deploy Xinu]]<br />
# (Optional) [[HOWTO:Build Backend Pool|Build a pool of backends]]<br />
<br />
== Other Embedded Xinu Information ==<br />
<br />
* MIPS [[processor]]<br />
* Main [[memory]]<br />
* [[Exception and Interrupt Handling]]<br />
* [[UART driver]]<br />
* [[TTY driver]]<br />
* [[Switch driver]]<br />
* [[Flash memory]]<br />
* [[EJTAG|Enhanced Joint Test Action Group]] debugger<br />
* [[Standard library]]<br />
<br />
----<br />
<br />
<small><small><small>The Xinu Lab is brought to you in part by [[XMMS|M&M's]].</small></small></small><br />
<!--<br />
-->__NOTOC__<!-- Disable "Contents" box from showing --><!--<br />
-->__NOEDITSECTION__<!-- Disable [edit] from appearing --><!--<br />
--></div>Brylowhttps://xinu.cs.mu.edu/index.php?title=Teaching_With_Xinu&diff=3557Teaching With Xinu2010-01-24T22:07:19Z<p>Brylow: /* Tracks */</p>
<hr />
<div>[[Category:HOWTO]]<br />
[[Category:Teaching With Xinu]]<br />
[[Category:Student Built Xinu]]<br />
[[Category:Student Extended Xinu]]<br />
[[Category:Networking With Xinu]]<br />
== Overview ==<br />
Several [[:Category:HOWTO|'How To' pages]] on this wiki allow professors and assistants to develop and build a classroom or laboratory setting enabling the modification and use of [[Embedded Xinu]].<br />
<br />
The set of pages found under the [[:Category:Teaching With Xinu|Teaching With Xinu]] category help a professor understand how to incorporate Embedded Xinu into a course for his or her department's curriculum. A professor can integrate Xinu into many different courses. The Embedded Xinu team at Marquette University has defined several potential course tracks as guidelines for professors. The provided course tracks should not be considered the only possibilities, but merely a few potential tracks of the many that can be developed to let a professor incorporate Embedded Xinu into a curriculum.<br />
<br />
== Operating Systems Tracks ==<br />
==== [[Student Built Xinu]] ====<br />
A student built operating system puts the student in the trenches of operating system development. The student will become intimately involved with the inner workings of an operating system. This will give the student a better understanding of the various systems that work together behind the scenes while an operating system is running. Operating systems topics that can be incorporated in a student built Xinu course include: memory management, scheduling, concurrent processing, device management, file systems and others.<br />
<br />
==== [[Student Extended Xinu]] ====<br />
Students will learn to extend an operating system by adding kernel level and user level applications. Given a functional Embedded Xinu operating system the students will have to understand and manipulate existing operating system code to create additional operating system features. To add more applications to the operating system students will have to understand the interactions between the program in design and the operating system's device and kernel interaction calls. Programming for embedded devices allows students to engage in development on small resource constrained environments. Through extending the existing Embedded Xinu operating system a student learns to use and understand code not written by the student and develops advanced operating system concepts.<br />
<br />
== Networking ==<br />
==== [[Networking With Xinu]] ====<br />
A networking course incorporating Embedded Xinu can have students build networking functionality into Embedded Xinu over the period of the course. Courses may vary in starting point; some choosing to use a core Embedded Xinu release and having students build the entire network stack and ethernet driver. While others may choose an Embedded Xinu release with the ethernet driver available so that the students can concentrate on other parts of the network stack. Network stack implementation assignments for students can parallel various networking lectures that traverse the stack over the course of the semester, terminating in the students implementing an application that uses the developed network stack.<br />
<br />
----<br />
<br />
<small><small>This work funded in part by NSF grant DUE-CCLI-0737476.</small></small></div>Brylowhttps://xinu.cs.mu.edu/index.php?title=Main_Page&diff=3556Main Page2010-01-24T22:02:18Z<p>Brylow: </p>
<hr />
<div>Embedded Xinu is an ongoing research and implementation project in the area of Operating Systems and Embedded Systems. Its goal is to port the [[Xinu|Xinu Operating System]] to the embedded MIPS platform. The current release supports Linksys WRT54GL and WRT160NL routers, as well as the Qemu virtual machine. While this project is still in progress, our laboratory environment and curriculum materials are already in use for courses in Operating Systems, Hardware Systems, Embedded Systems, Networking and Compilers.<br />
<br />
The Embedded Xinu project was conceived and is supervised by [http://www.mscs.mu.edu/~brylow/ Dr. Dennis Brylow] and is being conducted by both graduate and undergraduate students in the [http://www.mscs.mu.edu/ Math, Statistics, & Computer Science] department of [http://www.mu.edu/ Marquette University] in Milwaukee, Wisconsin. The first major phase of work on Embedded Xinu began in the Summer of 2006.<br />
<br />
Our project partners include [http://www.cse.buffalo.edu/~bina/ Dr. Bina Ramamurthy] at University of Buffalo (with whom we shared an [http://www.nsf.gov/pubs/2009/nsf09529/nsf09529.html NSF CCLI] grant), [http://cs.olemiss.edu/~ruth/wiki/doku.php Dr. Paul Ruth] at University of Mississippi, and [http://www.cs.purdue.edu/people/comer Dr. Doug Comer] (father of Xinu) at Purdue University.<br />
<br />
== Teaching With Embedded Xinu ==<br />
<br />
Join us for the [http://db.grinnell.edu/sigcse/sigcse2010/Program/viewAcceptedDayTime.asp?timeID=25264 Teaching With Embedded Xinu Workshop] at [http://www.sigcse.org/sigcse2010/ SIGCSE 2010] in Milwaukee, WI, March 10. (Early registration ends Jan 31!) This workshop will share ready-made curriculum resources that have been used successfully to teach hardware systems, operating systems, realtime/embedded systems, networking, and compilers with the Embedded Xinu platform at several colleges/universities. Commodity wireless router hardware or equivalent virtual machines, combined with freely-available software and tools, make for a powerful and flexible learning platform without having to fake any components. Come see what Nexos has to offer for your program.<br />
<br />
<br />
<br />
== Building an Embedded Xinu Laboratory ==<br />
<br />
In this section we are developing instructions so that other groups can benefit from the work we are doing. These guides can be followed more or less in order to create a relatively inexpensive platform for a custom operating system. As our work develops further, there will be more Xinu-specific information.<br />
<br />
# Obtain a [[List of supported platforms|supported platform]].<br />
# [[HOWTO:Modify the Linksys hardware|Modify the Linksys hardware]]<br />
# [[HOWTO:Connect to a modified router|Connect to a modified router]]<br />
# [[HOWTO:Build Xinu|Build Xinu]]<br />
# [[HOWTO:Deploy Xinu|Deploy Xinu]]<br />
# (Optional) [[HOWTO:Build Backend Pool|Build a pool of backends]]<br />
<br />
== Other Embedded Xinu Information ==<br />
<br />
* MIPS [[processor]]<br />
* Main [[memory]]<br />
* [[Exception and Interrupt Handling]]<br />
* [[UART driver]]<br />
* [[TTY driver]]<br />
* [[Switch driver]]<br />
* [[Flash memory]]<br />
* [[EJTAG|Enhanced Joint Test Action Group]] debugger<br />
* [[Standard library]]<br />
<br />
----<br />
<br />
<small><small><small>The Xinu Lab is brought to you in part by [[XMMS|M&M's]].</small></small></small><br />
<!--<br />
-->__NOTOC__<!-- Disable "Contents" box from showing --><!--<br />
-->__NOEDITSECTION__<!-- Disable [edit] from appearing --><!--<br />
--></div>Brylowhttps://xinu.cs.mu.edu/index.php?title=Main_Page&diff=3555Main Page2010-01-24T21:56:34Z<p>Brylow: </p>
<hr />
<div>Embedded Xinu is an ongoing research and implementation project in the area of Operating Systems and Embedded Systems. Its goal is to port the [[Xinu|Xinu Operating System]] to the embedded MIPS platform. The current release supports Linksys WRT54GL and WRT160NL routers, as well as the Qemu virtual machine. While this project is still in progress, our laboratory environment and curriculum materials are already in use for courses in Operating Systems, Hardware Systems, Embedded Systems, Networking and Compilers.<br />
<br />
The Embedded Xinu project was conceived and is supervised by [http://www.mscs.mu.edu/~brylow/ Dr. Dennis Brylow] and is being conducted by both graduate and undergraduate students in the [http://www.mscs.mu.edu/ Math, Statistics, & Computer Science] department of [http://www.mu.edu/ Marquette University] in Milwaukee, Wisconsin. The first major phase of work on Embedded Xinu began in the Summer of 2006.<br />
<br />
Our project partners include [http://www.cse.buffalo.edu/~bina/ Dr. Bina Ramamurthy] at University of Buffalo (with whom we shared an [http://www.nsf.gov/pubs/2009/nsf09529/nsf09529.html NSF CCLI] grant), [http://cs.olemiss.edu/~ruth/wiki/doku.php Dr. Paul Ruth] at University of Mississippi, and [http://www.cs.purdue.edu/people/comer Dr. Doug Comer] (father of Xinu) at Purdue University.<br />
<br />
== Building an Embedded Xinu Laboratory ==<br />
<br />
In this section we are developing instructions so that other groups can benefit from the work we are doing. These guides can be followed more or less in order to create a relatively inexpensive platform for a custom operating system. As our work develops further, there will be more Xinu-specific information.<br />
<br />
# Obtain a [[List of supported platforms|supported platform]].<br />
# [[HOWTO:Modify the Linksys hardware|Modify the Linksys hardware]]<br />
# [[HOWTO:Connect to a modified router|Connect to a modified router]]<br />
# [[HOWTO:Build Xinu|Build Xinu]]<br />
# [[HOWTO:Deploy Xinu|Deploy Xinu]]<br />
# (Optional) [[HOWTO:Build Backend Pool|Build a pool of backends]]<br />
<br />
== Other Embedded Xinu Information ==<br />
<br />
* MIPS [[processor]]<br />
* Main [[memory]]<br />
* [[Exception and Interrupt Handling]]<br />
* [[UART driver]]<br />
* [[TTY driver]]<br />
* [[Switch driver]]<br />
* [[Flash memory]]<br />
* [[EJTAG|Enhanced Joint Test Action Group]] debugger<br />
* [[Standard library]]<br />
<br />
----<br />
<br />
<small><small><small>The Xinu Lab is brought to you in part by [[XMMS|M&M's]].</small></small></small><br />
<!--<br />
-->__NOTOC__<!-- Disable "Contents" box from showing --><!--<br />
-->__NOEDITSECTION__<!-- Disable [edit] from appearing --><!--<br />
--></div>Brylowhttps://xinu.cs.mu.edu/index.php?title=Standard_library&diff=3554Standard library2010-01-24T21:37:03Z<p>Brylow: </p>
<hr />
<div>The Embedded XINU standard library contains a portion of the functions defined by the ANSI standard. The functions parallel the ANSI standard C library as closely as possible.<br />
<br />
== Input and Output <stdio.h> ==<br />
<br />
=== Formatted output ===<br />
&nbsp;&nbsp;&nbsp;'''fprintf''' - print output to <code>dev</code> formatted according to the format string <code>fmt</code><br />
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<code>int fprintf(int dev, char *fmt, ...)</code><br />
<br />
&nbsp;&nbsp;&nbsp;'''printf''' - same as <code>fprintf (CONSOLE, ...)</code><br />
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<code>int printf(...)</code><br />
<br />
&nbsp;&nbsp;&nbsp;'''sprintf''' - same as <code>printf</code> except output is written to the string <code>str</code><br />
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<code>int sprintf(char *str, char *fmt, ...)</code><br />
<br />
=== Formatted input ===<br />
''This portion of the library is still unstable.''<br />
<br />
=== Character input and output ===<br />
&nbsp;&nbsp;&nbsp;'''fgetc''' - read the next character from device <code>dev</code>; return EOF if end of file or an error occurs<br />
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<code>int fgetc(int dev)</code><br />
<br />
&nbsp;&nbsp;&nbsp;'''fputc''' - write a character <code>c</code> to device <code>dev</code>; return EOF if an error occurs<br />
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<code>int fputc(int c, int dev)</code><br />
<br />
&nbsp;&nbsp;&nbsp;'''fgets''' - return a newline-terminated string <code>s</code> of maximum length <code>n</code> from device <code>dev</code>; return NULL if end of file or an error occurs<br />
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<code>char *fgets(char *s, int n, int dev)</code><br />
<br />
&nbsp;&nbsp;&nbsp;'''fputs''' - write a string <code>s</code> to device <code>dev</code>; return EOF if an error occurs<br />
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<code>int fputs(char *s, int dev)</code><br />
<br />
&nbsp;&nbsp;&nbsp;'''getchar''' - same as <code>fgetc(CONSOLE)</code><br />
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<code>int getchar()</code><br />
<br />
&nbsp;&nbsp;&nbsp;'''putchar''' - same as <code>fputc(c,CONSOLE</code><br />
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<code>int putchar(int c)</code><br />
<br />
== Character Class Tests <ctype.h> ==<br />
Most of the macros defined in the <code>ctype.h</code> header are used to identify properties of specific ASCII characters. The macros return <code>TRUE</code> if a character is a member of a particular category, otherwise the macro returns <code>FALSE</code>. The following macros are defined to determine if a character has the listed property:<br />
* <code>isalpha</code> - letter<br />
* <code>isupper</code> - uppercase letter<br />
* <code>islower</code> - lowercase letter<br />
* <code>isdigit</code> - digit<br />
* <code>isxdigit</code> - hexadecimal digit<br />
* <code>ishexnumber</code> - hexadecimal digit<br />
* <code>isspace</code> - white space<br />
* <code>ispunct</code> - punctuation<br />
* <code>isalnum</code> - alphanumeric<br />
* <code>isprshort</code> - printable character that is not a letter, digit, or white space<br />
* <code>isprint</code> - printable character<br />
* <code>iscntrl</code> - control character<br />
* <code>isascii</code><br />
<br />
A few macros in the <code>ctype.h</code> header convert characters. These macros convert characters as follows:<br />
* <code>toupper</code> - convert letter to uppercase<br />
* <code>tolower</code> - convert letter to lowercase<br />
* <code>toascii</code><br />
<br />
== String Functions <string.h> ==<br />
The header <code>string.h</code> consists of functions used to compare and manipulate strings. <br />
<br />
=== Str functions ===<br />
The main string functions consist of:<br />
<br />
&nbsp;&nbsp;&nbsp;'''String copy''' - copies string <code>s2</code> to string <code>s1</code>; return <code>s1</code><br />
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<code>char *strcpy(char *s1, const char *s2)</code><br />
<br />
&nbsp;&nbsp;&nbsp;'''String concatenate''' - concatenate <code>s2</code> on the end of <code>s1</code>, <code>s1</code>'s space must be large enough; return <code>s1</code><br />
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<code>char *strcat(char *s1, const char *s2)</code><br />
<br />
&nbsp;&nbsp;&nbsp;'''String compare''' - compares <code>s1</code> and <code>s2</code>; return <code>s1>s2</code>: >0 <code>s1==s2</code>: 0 <code>s1<s2</code>: <0<br />
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<code>int strcmp(const char *s1, const char *s2)</code><br />
<br />
&nbsp;&nbsp;&nbsp;'''Character search''' - returns a pointer to the location in <code>s</code> at which which <code>c</code> appears<br />
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<code>char *strchr (const char *s, int c)</code><br />
<br />
&nbsp;&nbsp;&nbsp;'''Reverse character search''' - returns a pointer to the location in s at which which <code>c</code> last appears<br />
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<code>char *strrchr(const char *s, int c)</code><br />
<br />
&nbsp;&nbsp;&nbsp;'''String length''' - returns the length of <code>s</code><br />
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<code>int strlen(const char *s)</code><br />
<br />
&nbsp;&nbsp;&nbsp;'''String search''' - returns a pointer to the location in <code>cs</code> at which <code>ct</code> appears<br />
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<code>char *strstr (const char *cs, const char *ct)</code><br />
<br />
=== Strn functions ===<br />
<br />
Some string functions are also defined with the option to specify length limitations:<br />
<br />
&nbsp;&nbsp;&nbsp;'''String n copy''' - copies string <code>s2</code> to string <code>s1</code>, truncating or null padding to always copy <code>n</code> bytes; return <code>s1</code><br />
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<code>char *strncpy(char *s1, const char *s2, int n)</code><br />
<br />
&nbsp;&nbsp;&nbsp;'''String n concatenate''' - concatenate at most <code>n</code> bytes of <code>s2</code> on the end of <code>s1</code>, <code>s1</code>'s space must be large enough; return <code>s1</code><br />
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<code>char *strncat(char *s1, const char *s2, int n)</code><br />
<br />
&nbsp;&nbsp;&nbsp;'''String n compare''' - compares at most <code>n</code> bytes of <code>s1</code> and <code>s2</code>; return <code>s1>s2</code>: >0 <code>s1==s2</code>: 0 <code>s1<s2</code>: <0<br />
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<code>int strncmp(const char *s1, const char *s2, int n)</code><br />
<br />
=== Mem functions ===<br />
The string library also includes functions for manipulating objects as character arrays:<br />
<br />
&nbsp;&nbsp;&nbsp;'''Memory copy''' - copy <code>n</code> bytes of memory from <code>cs</code> to <code>ct</code><br />
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<code>void *memcpy(void *s, const void *ct, int n)</code><br />
<br />
&nbsp;&nbsp;&nbsp;'''Memory compare''' - compare <code>n</code> bytes of memory at locations <code>cs</code> and <code>ct</code><br />
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<code>int memcmp (const void *s1, const void *s2, int n)</code><br />
<br />
&nbsp;&nbsp;&nbsp;'''Memory search''' - returns a pointer to the location in memory at which which a <code>c</code> appears, starting at <code>cs</code> and searching at most <code>n</code> bytes<br />
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<code>void *memchr (const void *cs, int c, int n)</code><br />
<br />
&nbsp;&nbsp;&nbsp;'''Memory set''' - fill <code>n</code> bytes of memory with <code>c</code> starting at <code>n</code><br />
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<code>void *memset (void *s, int c, int n)</code><br />
<br />
== Utility Functions <stdlib.h> ==<br />
The <code>stdlib.h</code> header contains a wide array of utility functions for number conversion, memory allocation, and sorting.<br />
<br />
=== Number conversion ===<br />
&nbsp;&nbsp;&nbsp;'''ASCII to integer''' - converts and ASCII value <code>p</code> to an integer<br />
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<code>int atoi(char *p)</code><br />
<br />
&nbsp;&nbsp;&nbsp;'''ASCII to long''' - converts and ASCII value <code>p</code> to a long<br />
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<code>long atol(char *p)</code><br />
<br />
&nbsp;&nbsp;&nbsp;'''Absolute value''' - returns the absolute value of the integer <code>arg</code><br />
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<code>int abs(int arg)</code><br />
<br />
&nbsp;&nbsp;&nbsp;'''Long absolute value''' - returns the absolute value of the long <code>arg</code><br />
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<code>long abs(long arg)</code><br />
<br />
=== Memory allocation ===<br />
&nbsp;&nbsp;&nbsp;'''Calloc''' - returns a pointer to a memory location with space for <code>nobj</code> objects each of size <code>size</code><br />
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<code>void *calloc(ulong nobj, ulong size)</code><br />
<br />
&nbsp;&nbsp;&nbsp;'''Malloc''' - returns a pointer to a memory location with space for <code>size</code> bytes<br />
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<code>void *malloc(ulong size)</code><br />
<br />
&nbsp;&nbsp;&nbsp;'''Free''' - deallocates a portion of memory starting at <code>p</code><br />
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<code>long free(void *p)</code><br />
<br />
=== Miscellaneous ===<br />
<br />
&nbsp;&nbsp;&nbsp;'''Zero memory''' - zeroes <code>len</code> bytes of memory starting at <code>p</code><br />
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<code>void bzero(void *p, int len)</code><br />
<br />
&nbsp;&nbsp;&nbsp;'''Random number''' - generates a random long<br />
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<code>unsigned long rand(void)</code><br />
<br />
== Diagnostics <assert.h> ==<br />
A macro <code>ASSERT(int ''expression'')</code> is defined in <code>kernel.h</code>. The <code>ASSERT</code> macro verifies the specified expression is true, otherwise the function containing the assert will return <code>SYSERR</code>. No <code>assert.h</code> header file is included in the Embedded XINU standard library.<br />
<br />
== Variable Argument Lists <stdarg.h> ==<br />
Functions with a variable number of unknown type arguments rely on functions in the <code>stdarg.h</code> header to obtain the arguments provided to the function. A variable of type <code>va_list</code> must be defined within the function to hold the variable argument list. The variable holding the variable argument list must be initialized using the <code>va_start(va_list ap, ''lastarg'')</code> function, where <code>''lastarg''</code> is the name of the argument prior to the variable argument list in the function signature. Arguments are obtained from the variable argument list using <code>va_arg(va_list ap, ''type'')</code>, where <code>''type''</code> specifies the expected type of the next argument in the list. When argument reading is complete, the function <code>va_end(va_list ap)</code> is called, providing the variable argument list as an argument.<br />
<br />
== Implementation-defined Limits <limits.h> ==<br />
The header <code>limits.h</code> defines maximum and minimum values for the integral C types. The constants defined are set according to the 32-bit Mips architecture of the [[List_of_supported_platforms | supported platforms]].<br />
<br />
=== Char ===<br />
* Bits in a character = 8<br />
* Maximum value of a <code>char</code> = +127<br />
* Minimum value of a <code>char</code> = -128<br />
* Maximum value of a <code>signed char</code> = +127<br />
* Minimum value of a <code>signed char</code> = -128<br />
* Maximum value of an <code>unsigned char</code> (<code>uchar</code>) = 255<br />
<br />
=== Int ===<br />
* Maximum value of an <code>int</code> = +2147483647<br />
* Minimum value of an <code>int</code> = -2147483648<br />
* Maximum value of an <code>unsigned int</code> = 4294967295<br />
<br />
=== Long ===<br />
* Maximum value of a <code>long</code> = +2147483647<br />
* Minimum value of a <code>long</code> = -2147483648<br />
* Maximum value of an <code>unsigned long</code> (<code>ulong</code>) = 4294967295<br />
<br />
=== Short ===<br />
* Maximum value of a <code>short</code> = +32767<br />
* Minimum value of a <code>short</code> = -32768<br />
* Maximum value of an <code>unsigned short</code> (<code>ushort</code>) = 65535<br />
<br />
== Not Implemented Headers ==<br />
Some of the ANSI standard library headers are not included in the XINU standard library. Some headers have been noted as possible later additions:<br />
* <code>signal.h</code> - provides functionality for handling conditions that arise during execution including termination and error conditions<br />
* <code>time.h</code> - provides functions for date and time formatting and determining current date and time; dates and times are not currently used in Embedded XINU, but would be more useful after the network driver is complete and Embedded XINU is able to synchronize with an time server.<br />
<br />
The following headers have been excluded due to architectural limitations and lack of feasibility:<br />
* <code>math.h</code><br />
* <code>float.h</code><br />
* <code>setjmp.h</code><br />
* <code>locale.h</code><br />
* <code>errno.h</code><br />
* <code>stddef.h</code><br />
<br />
== References ==<br />
# Brian Kernighan and Dennis Ritchie. ''The C Programming Language'', second edition. Prentice Hall.</div>Brylowhttps://xinu.cs.mu.edu/index.php?title=Downloads&diff=3552Downloads2010-01-19T00:54:30Z<p>Brylow: /* Embedded Xinu */</p>
<hr />
<div>== Embedded Xinu ==<br />
<br />
The venerable [[Xinu|Xinu operating system]] has been used in classrooms, research labs, and commercial development firms for nearly a quarter of a century. Reimplemented in ANSI standard C, targeted to a modern RISC architecture, and optimized for resource-scarce embedded systems, Embedded Xinu is rested, relaxed, and ready to go for the next quarter century.<br />
<br />
The current version includes (2.01 features in '''bold'''):<br />
* Process management primitives<br />
* Preemptive multitasking<br />
* Priority-based scheduling<br />
* Semaphore synchronization<br />
* Message-passing interprocess communication<br />
* Sleep and wake<br />
* Dynamic memory allocation<br />
* Synchronous and asynchronous serial drivers<br />
* Buffered I/O<br />
* Device-independent I/O layer <br />
* Embedded MIPS32 loader<br />
* Interactive shell with basic commands<br />
* Wired network driver<br />
* Programmable network switch (Using [[w:IEEE 802.1Q|IEEE 802.1Q]])<br />
* '''Thread-per-packet TCP/IP Stack'''<br />
* '''Qemu virtual machine support'''<br />
* '''Support for the new WRT160NL router'''<br />
<br />
=== Downloads ===<br />
<br />
{|cellpadding="2"<br />
! Version<br />
! Download Link<br />
! Checksum (SHA1)<br />
|-style="background-color: #efefef"<br />
| rowspan="2" | Embedded Xinu 2.01 (latest)<br />
| style="text-align:center" | [http://www.mscs.mu.edu/~brylow/xinu/xinu_mips-latest.tar.gz gzip]<br />
| 112289d9b8be65b3ae0f382975aa36860c891cc7<br />
|-style="background-color: #efefef"<br />
| style="text-align:center" | [http://www.mscs.mu.edu/~brylow/xinu/xinu_mips-latest.tar.bz2 bzip2]<br />
| a1c0c81cda30cb05421c7c9ec1e2af5699470e7e<br />
|-style="background-color: #fdfdfd"<br />
| rowspan="2" | Embedded Xinu 1.5<br />
| style="text-align:center" | [http://www.mscs.mu.edu/~brylow/xinu/xinu_mips-1.5.tar.gz gzip]<br />
| f9cb6020367352afde13c8cfa81eead0105bab04<br />
|-style="background-color: #fdfdfd"<br />
| style="text-align:center" | [http://www.mscs.mu.edu/~brylow/xinu/xinu_mips-1.5.tar.bz2 bzip2]<br />
| d98102ada671aab7dbc98035466ee309f7416c60<br />
|-style="background-color: #fdfdfd"<br />
| rowspan="2" | Embedded Xinu 1.0.2<br />
| style="text-align:center" | [http://www.mscs.mu.edu/~brylow/xinu/xinu_mips-1.0.2.tar.gz gzip]<br />
| cec8a3ce0ca444b65a81342f38c636edf31ec6f0<br />
|-style="background-color: #fdfdfd"<br />
| style="text-align:center" | [http://www.mscs.mu.edu/~brylow/xinu/xinu_mips-1.0.2.tar.bz2 bzip2]<br />
| 145c96f7ed8a9a9095b357e8c5e40b2645e33f7a<br />
|}<br />
<br />
== Xinu Console Tools ==<br />
<br />
The XINU Console Daemon and various associated utilities provide network clients with connectivity to backend consoles that are really only connected directly to the console host. The xinu-console software package is now freely available for UNIX console hosts and front end clients.<br />
<br />
(''Note: Information about the Windows version of the console tools can be found on the [[WinXINU]] page.'')<br />
<br />
=== Downloads ===<br />
<br />
{|<br />
! Version<br />
! Download Link<br />
|-<br />
| Xinu Console Tools 2.06 (Linux/Unix version)<br />
| [http://www.mscs.mu.edu/~brylow/xinu/xinu-console-latest.tar.gz gz] [http://www.mscs.mu.edu/~brylow/xinu/xinu-console-latest.src.rpm RPM]<br />
|-<br />
| Xinu Console Tools (Windows)<br />
| [[WinXINU/Installation|Installation]]<br />
|}</div>Brylowhttps://xinu.cs.mu.edu/index.php?title=Downloads&diff=3551Downloads2010-01-19T00:52:37Z<p>Brylow: /* Downloads */</p>
<hr />
<div>== Embedded Xinu ==<br />
<br />
The venerable [[Xinu|Xinu operating system]] has been used in classrooms, research labs, and commercial development firms for nearly a quarter of a century. Reimplemented in ANSI standard C, targeted to a modern RISC architecture, and optimized for resource-scarce embedded systems, Embedded Xinu is rested, relaxed, and ready to go for the next quarter century.<br />
<br />
The current version includes (1.5 features in '''bold'''):<br />
* Process management primitives<br />
* Preemptive multitasking<br />
* Priority-based scheduling<br />
* Semaphore synchronization<br />
* Message-passing interprocess communication<br />
* Sleep and wake<br />
* Dynamic memory allocation<br />
* Synchronous and asynchronous serial drivers<br />
* Buffered I/O<br />
* Device-independent I/O layer <br />
* Embedded MIPS32 loader<br />
* Interactive shell with basic commands<br />
* '''Wired network driver'''<br />
* '''Programmable network switch (Using [[w:IEEE 802.1Q|IEEE 802.1Q]])'''<br />
<br />
=== Downloads ===<br />
<br />
{|cellpadding="2"<br />
! Version<br />
! Download Link<br />
! Checksum (SHA1)<br />
|-style="background-color: #efefef"<br />
| rowspan="2" | Embedded Xinu 2.01 (latest)<br />
| style="text-align:center" | [http://www.mscs.mu.edu/~brylow/xinu/xinu_mips-latest.tar.gz gzip]<br />
| 112289d9b8be65b3ae0f382975aa36860c891cc7<br />
|-style="background-color: #efefef"<br />
| style="text-align:center" | [http://www.mscs.mu.edu/~brylow/xinu/xinu_mips-latest.tar.bz2 bzip2]<br />
| a1c0c81cda30cb05421c7c9ec1e2af5699470e7e<br />
|-style="background-color: #fdfdfd"<br />
| rowspan="2" | Embedded Xinu 1.5<br />
| style="text-align:center" | [http://www.mscs.mu.edu/~brylow/xinu/xinu_mips-1.5.tar.gz gzip]<br />
| f9cb6020367352afde13c8cfa81eead0105bab04<br />
|-style="background-color: #fdfdfd"<br />
| style="text-align:center" | [http://www.mscs.mu.edu/~brylow/xinu/xinu_mips-1.5.tar.bz2 bzip2]<br />
| d98102ada671aab7dbc98035466ee309f7416c60<br />
|-style="background-color: #fdfdfd"<br />
| rowspan="2" | Embedded Xinu 1.0.2<br />
| style="text-align:center" | [http://www.mscs.mu.edu/~brylow/xinu/xinu_mips-1.0.2.tar.gz gzip]<br />
| cec8a3ce0ca444b65a81342f38c636edf31ec6f0<br />
|-style="background-color: #fdfdfd"<br />
| style="text-align:center" | [http://www.mscs.mu.edu/~brylow/xinu/xinu_mips-1.0.2.tar.bz2 bzip2]<br />
| 145c96f7ed8a9a9095b357e8c5e40b2645e33f7a<br />
|}<br />
<br />
== Xinu Console Tools ==<br />
<br />
The XINU Console Daemon and various associated utilities provide network clients with connectivity to backend consoles that are really only connected directly to the console host. The xinu-console software package is now freely available for UNIX console hosts and front end clients.<br />
<br />
(''Note: Information about the Windows version of the console tools can be found on the [[WinXINU]] page.'')<br />
<br />
=== Downloads ===<br />
<br />
{|<br />
! Version<br />
! Download Link<br />
|-<br />
| Xinu Console Tools 2.06 (Linux/Unix version)<br />
| [http://www.mscs.mu.edu/~brylow/xinu/xinu-console-latest.tar.gz gz] [http://www.mscs.mu.edu/~brylow/xinu/xinu-console-latest.src.rpm RPM]<br />
|-<br />
| Xinu Console Tools (Windows)<br />
| [[WinXINU/Installation|Installation]]<br />
|}</div>Brylowhttps://xinu.cs.mu.edu/index.php?title=Downloads&diff=3550Downloads2010-01-19T00:50:36Z<p>Brylow: /* Downloads */</p>
<hr />
<div>== Embedded Xinu ==<br />
<br />
The venerable [[Xinu|Xinu operating system]] has been used in classrooms, research labs, and commercial development firms for nearly a quarter of a century. Reimplemented in ANSI standard C, targeted to a modern RISC architecture, and optimized for resource-scarce embedded systems, Embedded Xinu is rested, relaxed, and ready to go for the next quarter century.<br />
<br />
The current version includes (1.5 features in '''bold'''):<br />
* Process management primitives<br />
* Preemptive multitasking<br />
* Priority-based scheduling<br />
* Semaphore synchronization<br />
* Message-passing interprocess communication<br />
* Sleep and wake<br />
* Dynamic memory allocation<br />
* Synchronous and asynchronous serial drivers<br />
* Buffered I/O<br />
* Device-independent I/O layer <br />
* Embedded MIPS32 loader<br />
* Interactive shell with basic commands<br />
* '''Wired network driver'''<br />
* '''Programmable network switch (Using [[w:IEEE 802.1Q|IEEE 802.1Q]])'''<br />
<br />
=== Downloads ===<br />
<br />
{|cellpadding="2"<br />
! Version<br />
! Download Link<br />
! Checksum (SHA1)<br />
|-style="background-color: #efefef"<br />
| rowspan="2" | Embedded Xinu 2.01 (latest)<br />
| style="text-align:center" | [http://www.mscs.mu.edu/~brylow/xinu/xinu_mips-latest.tar.gz gzip]<br />
| 112289d9b8be65b3ae0f382975aa36860c891cc7<br />
|-style="background-color: #efefef"<br />
| style="text-align:center" | [http://www.mscs.mu.edu/~brylow/xinu/xinu_mips-latest.tar.bz2 bzip2]<br />
| a1c0c81cda30cb05421c7c9ec1e2af5699470e7e<br />
| rowspan="2" | Embedded Xinu 1.5<br />
|-style="background-color: #fdfdfd"<br />
| rowspan="2" | Embedded Xinu 1.0.2<br />
| style="text-align:center" | [http://www.mscs.mu.edu/~brylow/xinu/xinu_mips-1.5.tar.gz gzip]<br />
| f9cb6020367352afde13c8cfa81eead0105bab04<br />
|-style="background-color: #fdfdfd"<br />
| style="text-align:center" | [http://www.mscs.mu.edu/~brylow/xinu/xinu_mips-1.5.tar.bz2 bzip2]<br />
| d98102ada671aab7dbc98035466ee309f7416c60<br />
|-style="background-color: #fdfdfd"<br />
| rowspan="2" | Embedded Xinu 1.0.2<br />
| style="text-align:center" | [http://www.mscs.mu.edu/~brylow/xinu/xinu_mips-1.0.2.tar.gz gzip]<br />
| cec8a3ce0ca444b65a81342f38c636edf31ec6f0<br />
|-style="background-color: #fdfdfd"<br />
| style="text-align:center" | [http://www.mscs.mu.edu/~brylow/xinu/xinu_mips-1.0.2.tar.bz2 bzip2]<br />
| 145c96f7ed8a9a9095b357e8c5e40b2645e33f7a<br />
|}<br />
<br />
== Xinu Console Tools ==<br />
<br />
The XINU Console Daemon and various associated utilities provide network clients with connectivity to backend consoles that are really only connected directly to the console host. The xinu-console software package is now freely available for UNIX console hosts and front end clients.<br />
<br />
(''Note: Information about the Windows version of the console tools can be found on the [[WinXINU]] page.'')<br />
<br />
=== Downloads ===<br />
<br />
{|<br />
! Version<br />
! Download Link<br />
|-<br />
| Xinu Console Tools 2.06 (Linux/Unix version)<br />
| [http://www.mscs.mu.edu/~brylow/xinu/xinu-console-latest.tar.gz gz] [http://www.mscs.mu.edu/~brylow/xinu/xinu-console-latest.src.rpm RPM]<br />
|-<br />
| Xinu Console Tools (Windows)<br />
| [[WinXINU/Installation|Installation]]<br />
|}</div>Brylowhttps://xinu.cs.mu.edu/index.php?title=List_of_supported_platforms&diff=3549List of supported platforms2010-01-19T00:29:05Z<p>Brylow: /* Supported Platforms */</p>
<hr />
<div>== Summary ==<br />
This page lists the platforms currently supported by the Embedded Xinu operating system.<br />
<br />
== Supported Platforms ==<br />
{|border="1" cellpadding="5" cellspacing="0"<br />
|-<br />
!width="18%"|Platform<br />
!width="15%"|Status<br />
!Comments<br />
|-<br />
|[[WRT54GL|LinkSys WRT54GL]] [http://www.linksys.com/servlet/Satellite?c=L_Product_C2&childpagename=US%2FLayout&cid=1133202177241&pagename=Linksys%2FCommon%2FVisitorWrapper]<br />
|Supported<br />
|This is our primary development platform, on which Xinu has been tested thoroughly.<br />
|-<br />
|[[WRT54G|Linksys WRT54G]] v8 [http://www.linksys.com/servlet/Satellite?c=L_Product_C2&childpagename=US%2FLayout&cid=1149562300349&pagename=Linksys%2FCommon%2FVisitorWrapper] <br />
|Supported<br />
|Tested and running at the Embedded Xinu Lab.<br />
|-<br />
|[[WRT54G|Linksys WRT54G]] v4 [http://www.linksys.com/servlet/Satellite?c=L_Product_C2&childpagename=US%2FLayout&cid=1149562300349&pagename=Linksys%2FCommon%2FVisitorWrapper]<br />
|Probably Supported<br />
|The v4 is apparently the version on which WRT54GL is based, and so although the Embedded Xinu Lab has not explicitly tested it, it probably works.<br />
|-<br />
|[[WRT350N|LinkSys WRT350N]] [http://www.linksys.com/servlet/Satellite?c=L_Product_C2&childpagename=US%2FLayout&cid=1162354643512&pagename=Linksys%2FCommon%2FVisitorWrapper]<br />
|[[WRT350N|Under Development]]<br />
|Currently the synchronous [[UART Driver]] works.<br />
|-<br />
|[[WRT160NL|Linksys WRT160NL]] [http://www.linksys.com/servlet/Satellite?c=L_Product_C2&childpagename=US%2FLayout&cid=1149562300349&pagename=Linksys%2FCommon%2FVisitorWrapper]<br />
|Supported<br />
|Newer model of router. Full O/S teaching core functioning, including wired network interface.<br />
|-<br />
|[[Qemu|Qemu-mipsel]] [http://www.qemu.org/]<br />
|Supported<br />
|Full O/S teaching core functioning, network support in progress.<br />
|}</div>Brylowhttps://xinu.cs.mu.edu/index.php?title=Quotes&diff=3263Quotes2009-05-19T21:48:33Z<p>Brylow: /* Spring 2009 */</p>
<hr />
<div>== Summer 2009 ==<br />
<br />
* AM: "Isn't holy water hard to come by?"<br />
* DB: [Speaking about AM's meeting with CS] "We also don't recognize him as a valid commitment."<br />
<br />
== Spring 2009 ==<br />
<br />
* AM: "Do you really want me in charge of something that affects another human being?"<br />
* TB: "Sleep sounds amazing right now." / AM: "Oh my god...does it ever!"<br />
* ZL: "I'm all about making fun of people while they're in the room."<br />
* DB: "The Internet is a vast wasteland of sewage."<br />
* DB: "I won't say it's fixed, but I have now intervened on your behalf."<br />
* Zachary's Girlfriend: "Darn. I am taking on Brylow traits."<br />
* DB: "You can think of them as ornaments hung on a syntax tree."<br />
* AK: "purged Tim from nvram"<br />
* AK: "If you want some sort of base for how sick I still feel just insert a burst of coughing after each sentence while reading this email."<br />
* DB: "The rat gets nothing!"<br />
* AG: "My brain operates at 10,000 Gemberflops per second."<br />
* AG: "I'm not saying it's my opinion. I'm just saying its Adolph's opinion."<br />
* DB: "He's celebrating the month of feasting."<br />
* DB: "There's a special travel dispensation for pretzels."<br />
* CS: "I'm not very quotable."<br />
* AM: "Oh, it's travelling up in my butt."<br />
* AK: "I shut off Slayer while we are gone." / MS: "I'm sure Mawdryn will turn itself off, too."<br />
* AM: "My room mate never plays with me."<br />
* MS: "I just made a mess on the seat."<br />
* TB: "I don't need a haircut - I am representing myself at this conference."<br />
* AM: [Referring to high performance gum] "It is just like high performance computing: it's really really good for a really really short period of time."<br />
* AK: [Speaking to Brylow] "We just got out of Cracker Barrel and you are already eating pretzels."<br />
* AM: "Oh my God - Dinosaur World. We are skipping SIGCSE."<br />
* TB: "Yeah, my life is a joke sometimes."<br />
* TB: "One of these days I'll get English right."<br />
* Presenter at SIGCSE 2009: "I mean, it's kind of fun to trash your operating system."<br />
* TB: "I like to let my hair air-dry. It poofs better."<br />
* ZL: "I would not want Tim on my team for a game of telephone."<br />
* DB: "They're not pretzel rods, they're fuel rods."<br />
* DB: "But that's non-linear board usage. I never do that."<br />
* AK: "There's a lot more TODOs where those came from."<br />
* DB: [Said to an almost empty lab] "Aren't I paying a bunch of students to work for me?"<br />
* AM: "Aww we all got laser pointers! This is gonna rule!"<br />
* TB: "I thought I fixed everything doing nothing. It happens so many times."<br />
* [A discussion on going to the bar in a lab of all guys] / AG: "We're probably not as good looking as Victoria." / AM: "Yeah, and she has a boyfriend...but none of you have boyfriends."<br />
* DB: "Just for funsies."<br />
* TB: [As AM points a laser pointer at TB] "I feel like I'm being snipped."<br />
* Ryan Feil: [Speaking in the lab of an operating systems assignment] "Shouldn't there be more people here scrambling to get this done."<br />
* MS: [As DB writes "IP Stack" on the board] "Ha ha. He pees stack. IP urine."<br />
* ZL: "Really all we have right now are questions."<br />
* MS: [On a sheet of paper hidden among AM's homework] "#6. Thm: Adam sucks! Ha ha. / Pf: trivial."<br />
* ZL: "I should just source control my...everything."<br />
* DB: "English is not sufficient for teaching compilers."<br />
* TB: "That's it. It's 100 percent done."<br />
* TB: "We were 100 percent done. We just need to get more speed-up."<br />
* AG: "So, Tim, when you are 30, will you say your life is 100 percent done?"<br />
* AG: "make tim: now compiling nonsense.c"<br />
* DB: "Oh, here we go: proof by rant. That's a new one."<br />
* AM: "Do you really want me representing this school." / DB: [Out of context] "No."<br />
* AG: "If I leave the lab, I feel like I'm leaving civilization behind."<br />
* AG: [Browsing through Mike's wedding gift registry] "Xinu only has 50 threads. The sheets Mike wants have 410, but they don't have memory protection."<br />
* AK: "Oh good Brylow left. Now I can leave."<br />
* AK: [First commit message] "modified some ifthenelse stuff to look a little more like class" / [Second commit message] "removed the code I added to ifthenelse, it made no sense and didn't compile"<br />
* DB: [To a prospective student touring the System's Lab] "Ignore the rat."<br />
* MS: [Discussing DB's tests] "Why would you study for his test? You are either screwed or not screwed...it's fairly binary."<br />
* MS: [Left a message for AG] "I hax0rd your boxor!"<br />
* AM: "Oh look. She dumped me on Facebook. Awesome!"<br />
* DB: "Don't stroke the yeast colony."<br />
* MS: [Speaking of his yeast colony] "It's free!" / DB: "Don't release it!"<br />
* MS: "If I just get really offensive and harsh with what I say then I won't get quoted any more."<br />
* DB: "Alright, I'm going home. See you in the morning." / ZL: "The morning. Really?" / DB: "Well no."<br />
* MS: [Anticipating DB's response to new advisees] "You want to be my advisee. Kiss the clock."<br />
* MS: "It is much more important to see me being reamed up the ass."<br />
* JA: [Discussing potential names of Dan Mahoney's future son] "Name him your last name backwards so he can be a palindrome."<br />
* AK: "Big setup no follow through." / AG: "I'm all about that." / MS: "That's what she said."<br />
* DB: "That's not an algorithm; that's a sweatshop."<br />
* Lyndsie: "High school cheer leading is even on ESPN." / MS: "That is really sweet!"<br />
* AM: "I always assume that everyone in the world is just listening to me to talk. I also assume that people just follow me around just to listen to me."<br />
* AM: "Every time Tim opens his mouth to say something about the poster, you just close your eyes and pray."<br />
* DB: "This will all work out right? Induction through hand-waving."<br />
* DB: "Except it's like fake adoption, where it turns out the child is actually yours."<br />
* "If you're concerned about that you're probably in the wrong major, because we're going to build skynet."<br />
* DB: "So we are selling you to indentured servitude now?" / AM: "I hope so, then I get free passage to the new world."<br />
* DB: "Why do you work here?"<br />
* AM: "I have three desks worth of space just taken up with garbage and shit."<br />
* Anonymous: "You know, pretty soon that relationship will be 100% done."<br />
<br />
== Fall 2008 ==<br />
<br />
* MN: [Talking about the large rubber rat] "I don't get paid enough to have this thing look at me."<br />
* AK: "Now that grading's done, I deserve a pretzel."<br />
* AG: "I haven't even started, and I already feel defeated." / MS: "Welcome to graduate school."<br />
* ''RFC 793: Transmission Control Protocol'': "When the original SYN (pun intended) finally arrives at line 6, the synchronization proceeds normally."<br />
* AM: "If I think more than 30 seconds into my own future I start to panic."<br />
* AM: "Once again, I've solved the problem, but the computer has failed to see my genius."<br />
* DB: "It takes many years of sucky teaching to learn how to teach well. You have to start sucking somewhere."<br />
* TB: "When you get the packet it is all going to be out of order."<br />
* MS: "I was going to ask you what they stood for, but I knew the answer was: 'Get the hell out of my office Mike.'"<br />
* DB: "You have the plague now too?"<br />
* AK: "It was like Tim's brain on a piece of paper."<br />
* AK: "His abstract was words in a paint can and all he did was throw it on a poster."<br />
* TB: "Yeah, how did we get sidetracked." / AM: "I started talking."<br />
* DB: "Now US-41 through Terre Haute, that's the corridor of hell."<br />
* Zachary's Sister: [Upon visiting the Systems Lab] "It's like having six zacs."<br />
<br />
== Summer 2008 ==<br />
* linux-2.6.25.9/lib/iomap.c: Ugly macros are a way of life.<br />
* ../net/tcp/tcpTimer.c:101: error: ‘rum’ undeclared (first use in this function)<br />
* BH: "Vim has a learning curve." / MS: "No, it's a line."<br />
* MS: "[re: Firefox Plushie] Wow, that look more like a raccoon to me. And wouldn't that just make people position Linux Tux and Firefox Fux is various explicit positions? Or is that just me?" / DB: "Yes, Michael. It is just you. And I don't think the Firefox mascot's proper name is 'Fux.'"<br />
* JP: "I'm laughing because my nose itches."<br />
* JP: "I'm not going to start my own business. For a business to work, the owner has to care."<br />
* MS: "''Broken Beyond Syntax'', that's going to be the title of my autobiography."<br />
<br />
== Spring 2008 ==<br />
* JP: "I'm not saying it's my opinion, I'm just saying it's an opinion."<br />
* JP: "Yeah, that's just fool complicated."<br />
* AG: "Even Tim's pictures have bugs in them."<br />
* AK: "Warnings mean you are smarter than the compiler!"<br />
* AG: "Do you use text messaging?" / JP: "What's that?"<br />
* AG: "I feel like doing something. What should I do?" / PH: "Go home."<br />
* DB: "Any questions? What else have I forgotten to tell you?" (email to lab) / Response: "The XINU lab notes that you forgot to tell us that you love us."<br />
* DB: "Traditionally, graduate students get a bed to themselves in this situation."<br />
* PH: "I'm really going to enjoy watching the commits to this branch."<br />
* ZL: "Voc and Supervoc joined at the UART"<br />
* George Corliss: "Verbose. Minus 5."<br />
* Steve Merrill: "Publish! Publish! Publish!" (walking down the hall past junior faculty offices)<br />
* JP: "I am just participating cause I'm standing here."<br />
* JP: "New commands are silly."<br />
* JP: "I've solved all kinds of problems in my life that no one's ever solved before."<br />
* AG: "You know scheme. I know scheme. We all scheme for ice cream."<br />
* DB: "I like StarTrek, but that would be less a hobby and more an investment."<br />
* MS: "Subtract two." / MN: "Why?" / MS: "...because I said so." / MN: "...alright..." / MS: "...and then when that doesn't work subtract four. But two should work." / MN: "Two didn't work." / MS: "Damnit! Subtract four." (Conversation continues in a similar fashion until Matt ends up subtracting eight.)<br />
* DB: "So they basically made a hammer and went after everything that could be a nail."<br />
* JP: "This is so unfair to us petty criminals."<br />
* DB: "We'll all be getting eye transplants soon."<br />
* DB: "''I'' am somehow derived from C." (on the ubiquity of the C programming language)<br />
* JP: "First you have to get the $3,000 license for the whizbang that does all the work."<br />
* DB: "I don't remember what the silly window is, but it must be important."<br />
* AK: "[UML is] just a bunch of boxes on paper."<br />
* DB: "Java has corrupted you all."<br />
* KJ: "There are some fonts that ''really'' spread out a paper." (discussing parameters for COSC 198 term paper)<br />
* DB: "You're telling me to put in less work. I'm not going to argue with you."<br />
* ''See MIPS Run, 2nd Ed.'': "When we finally make contact with aliens, their wheelbarrows will have round wheels and their computers will probably use fixed-size pages."<br />
* ''RFC 826: An Ethernet Address Resolution Protocol'': "The world is a jungle in general, and the networking game contributes many animals."<br />
<br />
== XINU Pith ==<br />
* XINU Cometh.<br />
* XINU Returneth.<br />
* XINU Calls.<br />
* XINU Returns.<br />
* XINU Creates.<br />
* XINU Reschedules.<br />
* XINU Saves and Restores.<br />
* XINU Preempts.<br />
* XINU Comes Not to JUDGE, But to EXECUTE...<br />
* XINU Knows Your Inmost Firmware.<br />
* XINU Brings New Life to Old Hardware.<br />
* XINU Waits.<br />
* XINU Allocates.<br />
* XINU Deallocates Away.<br />
* XINU Tastes Great.<br />
* XINU Has Less Filling.<br />
* XINU Runs FOREVER.<br />
* XINU Eschews Obfuscation.<br />
* XINU Does Not Do Windows.<br />
* XINU Brings ORDER out of CHAOS.<br />
* XINU Brings CHAOS from ORDER.<br />
* He Whoever Believes in XINU Shall Have Eternal Processing.<br />
* XINU Shall Run Again.<br />
* XINU Is Not UNIX.<br />
* XINU. It's What's For Dinner.<br />
* No XINU and No Mips Make Homer Something Something...<br />
* See XINU. See XINU Run. Run XINU Run.<br />
* XINU Allocateth, XINU Deallocateth Away.<br />
<br />
== Abbreviations ==<br />
{|<br />
|-<br />
! Abbreviation || Name<br />
|-<br />
| AG || Aaron Gember<br />
|-<br />
| AK || Adam Koehler<br />
|-<br />
| AM || Adam Mallen<br />
|-<br />
| BH || Brandon Hahn<br />
|-<br />
| CS || Craig Struble<br />
|-<br />
| DB || Dennis (or Dr.) Brylow<br />
|-<br />
| JP || Justin Picotte<br />
|-<br />
| JA || Joe Pintozee<br />
|-<br />
| KJ || Kyle Jackson<br />
|-<br />
| MN || Matt Netkow<br />
|-<br />
| MS || Michael Schultz<br />
|-<br />
| PH || Paul Hinze<br />
|-<br />
| TB || Tim Blattner<br />
|-<br />
| ZL || Zachary Lund<br />
|-<br />
|}</div>Brylowhttps://xinu.cs.mu.edu/index.php?title=Quotes&diff=3262Quotes2009-05-19T21:47:48Z<p>Brylow: Spellchecking</p>
<hr />
<div>== Summer 2009 ==<br />
<br />
* AM: "Isn't holy water hard to come by?"<br />
* DB: [Speaking about AM's meeting with CS] "We also don't recognize him as a valid commitment."<br />
<br />
== Spring 2009 ==<br />
<br />
* AM: "Do you really want me in charge of something that affects another human being?"<br />
* TB: "Sleep sounds amazing right now." / AM: "Oh my god...does it ever!"<br />
* ZL: "I'm all about making fun of people while they're in the room."<br />
* DB: "The Internet is a vast wasteland of sewage."<br />
* DB: "I won't say it's fixed, but I have now intervened on your behalf."<br />
* Zachary's Girlfriend: "Darn. I am taking on Brylow traits."<br />
* DB: "You can think of them as ornaments hung on a syntax tree."<br />
* AK: "purged Tim from nvram"<br />
* AK: "If you want some sort of base for how sick I still feel just insert a burst of coughing after each sentence while reading this email."<br />
* DB: "The rat gets nothing!"<br />
* AG: "My brain operates at 10,000 Gemberflops per second."<br />
* AG: "I'm not saying it's my opinion. I'm just saying its Adolph's opinion."<br />
* DB: "He's celebrating the month of feasting."<br />
* DB: "There's a special travel dispensation for pretzels."<br />
* CS: "I'm not very quotable."<br />
* AM: "Oh, it's travelling up in my butt."<br />
* AK: "I shut off Slayer while we are gone." / MS: "I'm sure Mawdryn will turn itself off, too."<br />
* AM: "My room mate never plays with me."<br />
* MS: "I just made a mess on the seat."<br />
* TB: "I don't need a haircut - I am representing myself at this conference."<br />
* AM: [Referring to high performance gum] "It is just like high performance computing: it's really really good for a really really short period of time."<br />
* AK: [Speaking to Brylow] "We just got out of Cracker Barrel and you are already eating pretzels."<br />
* AM: "Oh my God - Dinosaur World. We are skipping SIGCSE."<br />
* TB: "Yeah, my life is a joke sometimes."<br />
* TB: "One of these days I'll get English right."<br />
* Presenter at SIGCSE 2009: "I mean, it's kind of fun to trash your operating system."<br />
* TB: "I like to let my hair air-dry. It poofs better."<br />
* ZL: "I would not want Tim on my team for a game of telephone."<br />
* DB: "They're not pretzel rods, they're fuel rods."<br />
* DB: "But that's non-linear board usage. I never do that."<br />
* AK: "There's a lot more TODOs where those came from."<br />
* DB: [Said to an almost empty lab] "Aren't I paying a bunch of students to work for me?"<br />
* AM: "Aww we all got laser pointers! This is gonna rule!"<br />
* TB: "I thought I fixed everything doing nothing. It happens so many times."<br />
* [A discussion on going to the bar in a lab of all guys] / AG: "We're probably not as good looking as Victoria." / AM: "Yeah, and she has a boyfriend...but none of you have boyfriends."<br />
* DB: "Just for funsies."<br />
* TB: [As AM points a laser pointer at TB] "I feel like I'm being snipped."<br />
* Ryan Feil: [Speaking in the lab of an operating systems assignment] "Shouldn't there be more people here scrambling to get this done."<br />
* MS: [As DB writes "IP Stack" on the board] "Ha ha. He pees stack. IP urine."<br />
* ZL: "Really all we have right now are questions."<br />
* MS: [On a sheet of paper hidden among AM's homework] "#6. Thm: Adam sucks! Ha ha. / Pf: trivial."<br />
* ZL: "I should just source control my...everything."<br />
* DB: "English is not sufficient for teaching compilers."<br />
* TB: "That's it. It's 100 percent done."<br />
* TB: "We were 100 percent done. We just need to get more speed-up."<br />
* AG: "So, Tim, when you are 30, will you say your life is 100 percent done?"<br />
* AG: "make tim: now compiling nonsense.c"<br />
* DB: "Oh, here we go: proof by rant. That's a new one."<br />
* AM: "Do you really want me representing this school." / DB: [Out of context] "No."<br />
* AG: "If I leave the lab, I feel like I'm leaving civilization behind."<br />
* AG: [Browsing through Mike's wedding gift registry] "Xinu only has 50 threads. The sheets Mike wants have 410, but they don't have memory protection."<br />
* AK: "Oh good Brylow left. Now I can leave."<br />
* AK: [First commit message] "modified some ifthenelse stuff to look a little more like class" / [Second commit message] "removed the code I added to ifthenelse, it made no sense and didn't compile"<br />
* DB: [To a prospective student touring the System's Lab] "Ignore the rat."<br />
* MS: [Discussing DB's tests] "Why would you study for his test? You are either screwed or not screwed...it's fairly binary."<br />
* MS: [Left a message for AG] "I hax0rd your boxor!"<br />
* AM: "Oh look. She dumped me on Facebook. Awesome!"<br />
* DB: "Don't stroke the yeast colony."<br />
* DB: "Does it taste like it was peed in?"<br />
* MS: [Speaking of his yeast colony] "It's free!" / DB: "Don't release it!"<br />
* MS: "If I just get really offensive and harsh with what I say then I won't get quoted any more."<br />
* DB: "Alright, I'm going home. See you in the morning." / ZL: "The morning. Really?" / DB: "Well no."<br />
* MS: [Anticipating DB's response to new advisees] "You want to be my advisee. Kiss the clock."<br />
* MS: "It is much more important to see me being reamed up the ass."<br />
* JA: [Discussing potential names of Dan Mahoney's future son] "Name him your last name backwards so he can be a palindrome."<br />
* AK: "Big setup no follow through." / AG: "I'm all about that." / MS: "That's what she said."<br />
* DB: "That's not an algorithm; that's a sweatshop."<br />
* Lyndsie: "High school cheer leading is even on ESPN." / MS: "That is really sweet!"<br />
* AM: "I always assume that everyone in the world is just listening to me to talk. I also assume that people just follow me around just to listen to me."<br />
* AM: "Every time Tim opens his mouth to say something about the poster, you just close your eyes and pray."<br />
* DB: "This will all work out right? Induction through hand-waving."<br />
* DB: "Except it's like fake adoption, where it turns out the child is actually yours."<br />
* "If you're concerned about that you're probably in the wrong major, because we're going to build skynet."<br />
* DB: "So we are selling you to indentured servitude now?" / AM: "I hope so, then I get free passage to the new world."<br />
* DB: "Why do you work here?"<br />
* AM: "I have three desks worth of space just taken up with garbage and shit."<br />
* Anonymous: "You know, pretty soon that relationship will be 100% done."<br />
<br />
== Fall 2008 ==<br />
<br />
* MN: [Talking about the large rubber rat] "I don't get paid enough to have this thing look at me."<br />
* AK: "Now that grading's done, I deserve a pretzel."<br />
* AG: "I haven't even started, and I already feel defeated." / MS: "Welcome to graduate school."<br />
* ''RFC 793: Transmission Control Protocol'': "When the original SYN (pun intended) finally arrives at line 6, the synchronization proceeds normally."<br />
* AM: "If I think more than 30 seconds into my own future I start to panic."<br />
* AM: "Once again, I've solved the problem, but the computer has failed to see my genius."<br />
* DB: "It takes many years of sucky teaching to learn how to teach well. You have to start sucking somewhere."<br />
* TB: "When you get the packet it is all going to be out of order."<br />
* MS: "I was going to ask you what they stood for, but I knew the answer was: 'Get the hell out of my office Mike.'"<br />
* DB: "You have the plague now too?"<br />
* AK: "It was like Tim's brain on a piece of paper."<br />
* AK: "His abstract was words in a paint can and all he did was throw it on a poster."<br />
* TB: "Yeah, how did we get sidetracked." / AM: "I started talking."<br />
* DB: "Now US-41 through Terre Haute, that's the corridor of hell."<br />
* Zachary's Sister: [Upon visiting the Systems Lab] "It's like having six zacs."<br />
<br />
== Summer 2008 ==<br />
* linux-2.6.25.9/lib/iomap.c: Ugly macros are a way of life.<br />
* ../net/tcp/tcpTimer.c:101: error: ‘rum’ undeclared (first use in this function)<br />
* BH: "Vim has a learning curve." / MS: "No, it's a line."<br />
* MS: "[re: Firefox Plushie] Wow, that look more like a raccoon to me. And wouldn't that just make people position Linux Tux and Firefox Fux is various explicit positions? Or is that just me?" / DB: "Yes, Michael. It is just you. And I don't think the Firefox mascot's proper name is 'Fux.'"<br />
* JP: "I'm laughing because my nose itches."<br />
* JP: "I'm not going to start my own business. For a business to work, the owner has to care."<br />
* MS: "''Broken Beyond Syntax'', that's going to be the title of my autobiography."<br />
<br />
== Spring 2008 ==<br />
* JP: "I'm not saying it's my opinion, I'm just saying it's an opinion."<br />
* JP: "Yeah, that's just fool complicated."<br />
* AG: "Even Tim's pictures have bugs in them."<br />
* AK: "Warnings mean you are smarter than the compiler!"<br />
* AG: "Do you use text messaging?" / JP: "What's that?"<br />
* AG: "I feel like doing something. What should I do?" / PH: "Go home."<br />
* DB: "Any questions? What else have I forgotten to tell you?" (email to lab) / Response: "The XINU lab notes that you forgot to tell us that you love us."<br />
* DB: "Traditionally, graduate students get a bed to themselves in this situation."<br />
* PH: "I'm really going to enjoy watching the commits to this branch."<br />
* ZL: "Voc and Supervoc joined at the UART"<br />
* George Corliss: "Verbose. Minus 5."<br />
* Steve Merrill: "Publish! Publish! Publish!" (walking down the hall past junior faculty offices)<br />
* JP: "I am just participating cause I'm standing here."<br />
* JP: "New commands are silly."<br />
* JP: "I've solved all kinds of problems in my life that no one's ever solved before."<br />
* AG: "You know scheme. I know scheme. We all scheme for ice cream."<br />
* DB: "I like StarTrek, but that would be less a hobby and more an investment."<br />
* MS: "Subtract two." / MN: "Why?" / MS: "...because I said so." / MN: "...alright..." / MS: "...and then when that doesn't work subtract four. But two should work." / MN: "Two didn't work." / MS: "Damnit! Subtract four." (Conversation continues in a similar fashion until Matt ends up subtracting eight.)<br />
* DB: "So they basically made a hammer and went after everything that could be a nail."<br />
* JP: "This is so unfair to us petty criminals."<br />
* DB: "We'll all be getting eye transplants soon."<br />
* DB: "''I'' am somehow derived from C." (on the ubiquity of the C programming language)<br />
* JP: "First you have to get the $3,000 license for the whizbang that does all the work."<br />
* DB: "I don't remember what the silly window is, but it must be important."<br />
* AK: "[UML is] just a bunch of boxes on paper."<br />
* DB: "Java has corrupted you all."<br />
* KJ: "There are some fonts that ''really'' spread out a paper." (discussing parameters for COSC 198 term paper)<br />
* DB: "You're telling me to put in less work. I'm not going to argue with you."<br />
* ''See MIPS Run, 2nd Ed.'': "When we finally make contact with aliens, their wheelbarrows will have round wheels and their computers will probably use fixed-size pages."<br />
* ''RFC 826: An Ethernet Address Resolution Protocol'': "The world is a jungle in general, and the networking game contributes many animals."<br />
<br />
== XINU Pith ==<br />
* XINU Cometh.<br />
* XINU Returneth.<br />
* XINU Calls.<br />
* XINU Returns.<br />
* XINU Creates.<br />
* XINU Reschedules.<br />
* XINU Saves and Restores.<br />
* XINU Preempts.<br />
* XINU Comes Not to JUDGE, But to EXECUTE...<br />
* XINU Knows Your Inmost Firmware.<br />
* XINU Brings New Life to Old Hardware.<br />
* XINU Waits.<br />
* XINU Allocates.<br />
* XINU Deallocates Away.<br />
* XINU Tastes Great.<br />
* XINU Has Less Filling.<br />
* XINU Runs FOREVER.<br />
* XINU Eschews Obfuscation.<br />
* XINU Does Not Do Windows.<br />
* XINU Brings ORDER out of CHAOS.<br />
* XINU Brings CHAOS from ORDER.<br />
* He Whoever Believes in XINU Shall Have Eternal Processing.<br />
* XINU Shall Run Again.<br />
* XINU Is Not UNIX.<br />
* XINU. It's What's For Dinner.<br />
* No XINU and No Mips Make Homer Something Something...<br />
* See XINU. See XINU Run. Run XINU Run.<br />
* XINU Allocateth, XINU Deallocateth Away.<br />
<br />
== Abbreviations ==<br />
{|<br />
|-<br />
! Abbreviation || Name<br />
|-<br />
| AG || Aaron Gember<br />
|-<br />
| AK || Adam Koehler<br />
|-<br />
| AM || Adam Mallen<br />
|-<br />
| BH || Brandon Hahn<br />
|-<br />
| CS || Craig Struble<br />
|-<br />
| DB || Dennis (or Dr.) Brylow<br />
|-<br />
| JP || Justin Picotte<br />
|-<br />
| JA || Joe Pintozee<br />
|-<br />
| KJ || Kyle Jackson<br />
|-<br />
| MN || Matt Netkow<br />
|-<br />
| MS || Michael Schultz<br />
|-<br />
| PH || Paul Hinze<br />
|-<br />
| TB || Tim Blattner<br />
|-<br />
| ZL || Zachary Lund<br />
|-<br />
|}</div>Brylowhttps://xinu.cs.mu.edu/index.php?title=Modify_the_Linksys_hardware&diff=3110Modify the Linksys hardware2009-02-01T23:38:48Z<p>Brylow: /* Before Starting */</p>
<hr />
<div>[[Category:HOWTO]]<br />
== Summary ==<br />
<br />
This will walk through adding hardware to a [http://www.linksys.com Linksys] [[WRT54GL]] wireless router that will take advantage of existing connections on the PCB for two UART connections, which will be exposed as DB9 serial port connectors mounted to the faceplate of the router. These connections can be used to communicate with the serial console for [[XINU]] and also to interact with the [[Common Firmware Environment]]'s command line interface. Gaining direct access to [[CFE]] is a key step towards being able to run [[XINU]] on the router.<br />
<br />
== Before Starting ==<br />
<br />
'''NOTE:''' The following lists all the ''necessary'' parts. However, the following tutorial describes assembling the transceiver on one of our custom transceiver boards. One could assemble the parts of the entire transceiver properly without the board, but with more difficulty. Our transceiver board design is freely available for public use.<br />
[http://www.mscs.mu.edu/~brylow/xinu/Xinu-Transceiver.ps Transceiver schematic] is in postscript format, suitable for [http://opencircuitdesign.com/xcircuit/ XCircuit].<br />
[http://www.mscs.mu.edu/~brylow/xinu/Xinu-Transceiver.pcb Transceiver PCB layout] is in [http://pcb.sourceforge.net/ PCB format].<br />
[http://www.mscs.mu.edu/~brylow/xinu/Xinu-Transceiver.tgz Transceiver fabrication tarball] contains Gerber photoplotter and CNC drill files suitable for professional fabrication.<br />
(No warranty express or implied, obviously.)<br />
<br />
=== Parts List ===<br />
{| border="1" cellspacing="0" cellpadding="5" align="center"<br />
! Quantity<br />
! Part Name<br />
! Details<br />
! Part / Model Number<br />
! Price<br />
|- <br />
| 1<br />
| LinkSys [[WRT54GL]] Router<br />
| 802.11b/g wireless broadband router<br />
| [http://www.linksys.com/servlet/Satellite?c=L_Product_C2&childpagename=US%2FLayout&cid=1133202177241&pagename=Linksys%2FCommon%2FVisitorWrapper Linksys WRT54GL]<br />
| ~$65.00<br />
|-<br />
| 1<br />
| Ribbon cable<br />
| 28 AWG, 10 conductor, 25'<br />
| Jameco 643508CM<br />
| $4.99<br />
|-<br />
| 2<br />
| IDC socket connector<br />
| 0.1”, 10 conductor <br />
| Jameco 32491CM<br />
| $0.25<br />
|-<br />
| 2<br />
| IDC shrouded double header<br />
| 0.1”, 10 conductor<br />
| Jameco 67811CM<br />
| $0.33<br />
|-<br />
| 1<br />
| ADM202 Transceiver Chip<br />
| Serial Transceiver ADM202EAN<br />
| Jameco 1800464<br />
| $1.60<br />
|-<br />
| 2<br />
| Capacitor 220 nF<br />
| Tantalum,.22uF,35V,10%<br />
| Jameco 33507<br />
| $0.18<br />
|-<br />
| 3<br />
| Capacitor 100 nF<br />
| Tantalum,.1uF,35V,10%<br />
| Jameco 33488<br />
| $0.22<br />
|-<br />
| 1<br />
| DB9 Female<br />
| 22AWG,SOLDER CUP<br />
| Jameco 15771CM<br />
| $0.59<br />
|-<br />
| 1<br />
| DB9 Male<br />
| 22AWG,SOLDER CUP<br />
| Jameco 15747CM<br />
| $0.59<br />
|-<br />
|}<br />
<br />
(We provide this parts list as a data point; we offer no guarantees about current prices, and it is not our intent to endorse any particular vendor.)<br />
<br />
=== Tools List ===<br />
* Soldering Iron<br />
* Dremel tool (for cutting holes in plastic case)<br />
* Continuity Tester (Multimeter, or some other way of checking for proper connections)<br />
* Voltmeter (Multimeter will work for this, too)<br />
<br />
== Steps to Modify the Hardware ==<br />
<br />
=== Task One: Open the Router ===<br />
<br />
[[Image:Opening-linksys.jpg|thumb|400px|center|It's really very easy.]]<br />
<br />
There are no screws or tools needed to open the router, just pop open the front with your thumbs as shown in the picture. Some nice [http://voidmain.is-a-geek.net/redhat/wrt54g_revival.html illustrated opening instructions] can be found for a more detailed explanation of this step.<br />
<br />
'''DO NOTE: This is where the warranty on the router is voided!'''<br />
<br />
=== Task Two: Attach the Serial Header ===<br />
<br />
[[Image:Wrt54gl-layout.jpg|thumb|250px|left|An overhead view to get your bearings. The serial header is (D) here.]]<br />
<br />
First you need to unscrew the two screws keeping the router's board attached to the case. Once the PCB has been removed from the case, locate the serial header holes provided by LinkSys. This would be a grid of 10 holes (5x2) located on the bottom-right corner of the board when the antennae stubs are on top (see the top-down photo for clarification). These ten holes hold all of the input and output for the two serial interfaces--UART0, and UART1--on the device.<br />
<br />
[[Image:Serial.jpg|thumb|250px|right|A closer look at our attached serial header.]]<br />
<br />
<br />
Now, we could just solder wires right onto these holes, but a by placing a nice 10-pin header on the board we can easily attach and detach a 10 connection cable. Here you will use your '''soldering iron''' to solder the '''IDC shrouded double header''' onto the board. Make sure to note where the 1 pin is on the board (marked with a square around the hole instead of a circle) and where the 1 pin is located on the header (on ours it was marked with a triangle). Make sure that these two line up when soldering the header into the board.<br />
<h3 style="clear:both;"> Task Three: Create the ADM202 Transceiver Circuit Board </h3><br />
<br />
[[Image:Transceiver schematic.JPG|thumb|400px|left|Schematic showing the connections between the components of the ADM202 transceiver circuit board and between the board and the DB9 serial ports.]]<br />
[[Image:Transceiver board.jpg|thumb|150px|right|Blank transceiver board before adding components.]]<br />
[[Image:Complete transceiver board.jpg|thumb|150px|right|Transceiver board with all components in place except ribbon cables.]]<br />
[[Image:Completed transceiver.jpg|thumb|400px|left|Complete transceiver board with all components in place.]]<br />
<br />
The next step is to build the transceiver circuit, which converts the 3.3 volt serial signals from the router to conventional RS-232 serial voltages. The circuit includes only a handful of components, so it can be assembled using a small square of "perf board", or a variety of other inexpensive circuit prototyping techniques. We use a custom-made printed circuit board to simplify assembly, as shown here. (Link to page with PCB specs, and directions.) Again, you'll need your '''soldering iron''' to secure the different pieces in the transceiver board.<br />
<br />
Using the diagram on the left, solder the '''shrouded double header''', the '''socket''', and the '''capacitors''' into the board in the appropriate places. '''NOTE:''' the positions of the components on the physical board are not represented in the diagram, but the silkscreen on the board indicates placement and orientation. '''FURTHER NOTE:''' each component has a proper polarity or pin marking -- direction matters!<br />
<br />
The pictures to the right show the transceiver board in various stages of completion. The top one shows the blank board on which the other components will be added. The bottom one shows the '''shrouded double header''', the '''socket''', and the '''capacitors''' soldered in place. It also shows the actual ADM202 chip inserted into the socket, however, before inserting the chip it is a good idea to test what you've completed so far. <br />
<br />
Use a '''continuity tester''' to check the connection between the header soldered into the router's board and the socket on your transceiver board. The next step we recommend for testing your work is to plug in the router and use a '''voltmeter''' to check that the ''ground'' and ''power'' pins on the socket (pins 15 and 16) are registering at 3.3 volts. Now, actually insert the ADM202 chip into the socket and power up the router again, making sure that the lights turn on and nothing shorts out.<br />
<br />
The next step is to get six wires from a chopped up piece of the ribbon cable (or any six spare wires) and solder them into place in the six holes (two sets of three) at the bottom of the transceiver board. The resulting completed transceiver board should look something like the picture below the diagram.<br />
<br />
<h3 style="clear:both;"> Task Four: Attach Tranceiver Board to the Router</h3><br />
<br />
[[Image:Tranceiver attached.jpg|thumb|200px|left|Transceiver board attached via ribbon cable to the serial header soldered into the router's board.]]<br />
[[Image:Front sticker.jpg|thumb|75px|right]]<br />
[[Image:Front.jpg|thumb|75px|right]]<br />
[[Image:Drilled front.jpg|thumb|75px|right]]<br />
<br />
First take a piece of ribbon cable and attach each end to one of your IDC socket connectors. Notice the marker on the connector that signifies where pin 1 of the header will connect to. Make sure that the same side of the ribbon cable is attached to the marked side of both connectors. In other words make sure that the same wire will line up with pin 1 on both headers when the connectors are eventually attached to the headers. The next step is to actually plug in the connectors to the headers. Attach one connector to the header we soldered into the router's board and the other connector to the header we soldered into the transceiver board. The result should look something like the picture to the left. Now is a good time to reattach the router's board to its case by screwing the two screws into place and then closing up both black pieces of the back part of the router's case.<br />
<br />
=== Task Five: Attach Transceiver Board to DB9 Serial Ports ===<br />
<br />
Before soldering the wires from the transceiver board to the serial ports, it is a good idea to drill two holes in the front of the router's casing to use for the serial ports and also two small holes on each side of the bigger ones to use for screws or bolts to keep the '''DB9 Serial Ports''' in place. The three pictures to the right show how to take off the front sticker and what the case should look like after you've drilled two holes in the front for the serial ports. It is also a good idea to cut the sticker and place the left part back on to cover up the remaining holes in the casing.<br />
<br />
[[Image:Serial ports diagram.JPG|thumb|300px|left|Diagram of wiring to connect the two DB9 serial ports to the transceiver board.]]<br />
<br />
Next, feed the six wires coming from the transceiver board through the two holes you just drilled. Make sure that the three wires soldered into the holes marked '''J1''' on the transceiver board go through the hole on the left of the front of the router and the three wires soldered into the holes marked '''J2''' on the transceiver board go through the hole on the right of the front of the router. <br />
<br />
Following the diagram to the left, solder some spare wires or chopped pieces of ribbon cable into the two DB9 serial ports. Notice that solder cups 1, 4, and 6 are connected to each other and solder cups 7 and 8 are connected to each other on both the '''DB9 Female''' and '''DB9 Male''' serial ports. Then, again following the diagram, solder in the wires coming from '''J1''' into the appropriate solder cups of the '''DB9 Female''' and the wires coming from '''J2''' into the appropriate solder cups of the '''DB9 Male'''. <br />
<br />
Notice that in the case of the '''DB9 Female''' the ''T1OUT'' pin of the ADM202 transceiver chip needs to be connected to solder cup 2, the ''R1IN'' pin of the ADM202 transceiver chip needs to be connected to solder cup 3, and the ''ground'' needs to be connected to solder cup 5.<br />
<br />
Also, notice that in the case of the '''DB9 Male''' the ''R2IN'' pin of the ADM202 transceiver chip needs to be connected to solder cup 2, the ''T2OUT'' pin of the ADM202 transceiver chip needs to be connected to solder cup 3, and the ''ground'' needs to be connected to solder cup 5.<br />
<br />
Feeding the wires through the holes and connecting the serial ports in this way ensures that the router's primary serial device will be connected to the '''DB9 Female''' serial port and will be located on the left side while the router's secondary serial device will be connected to the '''DB9 Male''' serial port and will be located on the right side of the front of the router.<br />
<br />
After all the soldering is done it is a good idea to use a '''continuity tester''' to make sure that all the connections are good and no wires or solder cups may be accidentally touching. Your result should look something like the pictures below. Now is a good time to tape the transceiver board down to the front of the case. It would be extremely bad for the transceiver board to rub up against the router's circuit board when it was plugged in.<br />
<br />
<br />
<br />
[[Image:Serial ports done1.jpg|thumb|300px|right|Overhead picture of what the router will look like after the DB9 serial ports are correctly soldered into place, but before they have been screwed and secured into the router's case.]]<br />
[[Image:Serial ports done.jpg|thumb|300px|left|Front view of what the router will look like after the DB9 serial ports are correctly soldered into place, but before they have been screwed and secured into the router's case.]]<br />
<br />
<h3 style="clear:both;"> Task Six: Close the Router </h3><br />
<br />
This final task is best described in photos:<br />
{|align="center"<br />
|-<br />
| [[Image:Attach Back.jpg|thumb|350px|Now that everything is connected we can re-assemble it. First you put on the back/top half. Keyed ribbon cable is plugged in to serial port header on circuit board.]]<br />
| [[Image:Attach Front.jpg|thumb|350px|Next you can carefully install the front half (making sure not to break any of the wires we have).]]<br />
|-<br />
|}<br />
<br />
=== Task Seven: Rejoice ===<br />
<br />
[[Image:Complete.jpg|thumb|500px|center|Now you have a WRT54GL with two serial ports installed and ready to run your own operating system.]]<br />
<br />
== What to do next? ==<br />
<br />
Connect UART0 (the DB9 Female serial port) to a computer and follow the next HOWTO on using a PC to [[HOWTO:Connect to a modified router|connect to a modified router]].<br />
<br />
<br />
<hr/><br />
''This work is supported in part by NSF grant DUE-CCLI-0737476.''</div>Brylowhttps://xinu.cs.mu.edu/index.php?title=Modify_the_Linksys_hardware&diff=3109Modify the Linksys hardware2009-02-01T23:31:52Z<p>Brylow: Updated fabrication info.</p>
<hr />
<div>[[Category:HOWTO]]<br />
== Summary ==<br />
<br />
This will walk through adding hardware to a [http://www.linksys.com Linksys] [[WRT54GL]] wireless router that will take advantage of existing connections on the PCB for two UART connections, which will be exposed as DB9 serial port connectors mounted to the faceplate of the router. These connections can be used to communicate with the serial console for [[XINU]] and also to interact with the [[Common Firmware Environment]]'s command line interface. Gaining direct access to [[CFE]] is a key step towards being able to run [[XINU]] on the router.<br />
<br />
== Before Starting ==<br />
<br />
'''NOTE:''' The following lists all the ''necessary'' parts. However, the following tutorial describes assembling the transceiver on one of our custom transceiver boards. One could assemble the parts of the entire transceiver properly without the board, but with more difficulty. Our transceiver board design is freely available for public use.<br />
[http://www.mscs.mu.edu/~brylow/xinu/Xinu-Transceiver.ps Transceiver schematic] is in postscript format, suitable for [http://opencircuitdesign.com/xcircuit/ XCircuit].<br />
[http://www.mscs.mu.edu/~brylow/xinu/Xinu-Transceiver.pcb Transceiver PCB layout] is in [http://pcb.sourceforge.net/ PCB format].<br />
[http://www.mscs.mu.edu/~brylow/xinu/Xinu-Transceiver.tgz Transceiver fabrication tarball] contains Gerber photoplotter and CNC drill files suitable for professional fabrication.<br />
<br />
=== Parts List ===<br />
{| border="1" cellspacing="0" cellpadding="5" align="center"<br />
! Quantity<br />
! Part Name<br />
! Details<br />
! Part / Model Number<br />
! Price<br />
|- <br />
| 1<br />
| LinkSys [[WRT54GL]] Router<br />
| 802.11b/g wireless broadband router<br />
| [http://www.linksys.com/servlet/Satellite?c=L_Product_C2&childpagename=US%2FLayout&cid=1133202177241&pagename=Linksys%2FCommon%2FVisitorWrapper Linksys WRT54GL]<br />
| ~$65.00<br />
|-<br />
| 1<br />
| Ribbon cable<br />
| 28 AWG, 10 conductor, 25'<br />
| Jameco 643508CM<br />
| $4.99<br />
|-<br />
| 2<br />
| IDC socket connector<br />
| 0.1”, 10 conductor <br />
| Jameco 32491CM<br />
| $0.25<br />
|-<br />
| 2<br />
| IDC shrouded double header<br />
| 0.1”, 10 conductor<br />
| Jameco 67811CM<br />
| $0.33<br />
|-<br />
| 1<br />
| ADM202 Transceiver Chip<br />
| Serial Transceiver ADM202EAN<br />
| Jameco 1800464<br />
| $1.60<br />
|-<br />
| 2<br />
| Capacitor 220 nF<br />
| Tantalum,.22uF,35V,10%<br />
| Jameco 33507<br />
| $0.18<br />
|-<br />
| 3<br />
| Capacitor 100 nF<br />
| Tantalum,.1uF,35V,10%<br />
| Jameco 33488<br />
| $0.22<br />
|-<br />
| 1<br />
| DB9 Female<br />
| 22AWG,SOLDER CUP<br />
| Jameco 15771CM<br />
| $0.59<br />
|-<br />
| 1<br />
| DB9 Male<br />
| 22AWG,SOLDER CUP<br />
| Jameco 15747CM<br />
| $0.59<br />
|-<br />
|}<br />
<br />
(We provide this parts list as a data point; we offer no guarantees about current prices, and it is not our intent to endorse any particular vendor.)<br />
<br />
=== Tools List ===<br />
* Soldering Iron<br />
* Dremel tool (for cutting holes in plastic case)<br />
* Continuity Tester (Multimeter, or some other way of checking for proper connections)<br />
* Voltmeter (Multimeter will work for this, too)<br />
<br />
== Steps to Modify the Hardware ==<br />
<br />
=== Task One: Open the Router ===<br />
<br />
[[Image:Opening-linksys.jpg|thumb|400px|center|It's really very easy.]]<br />
<br />
There are no screws or tools needed to open the router, just pop open the front with your thumbs as shown in the picture. Some nice [http://voidmain.is-a-geek.net/redhat/wrt54g_revival.html illustrated opening instructions] can be found for a more detailed explanation of this step.<br />
<br />
'''DO NOTE: This is where the warranty on the router is voided!'''<br />
<br />
=== Task Two: Attach the Serial Header ===<br />
<br />
[[Image:Wrt54gl-layout.jpg|thumb|250px|left|An overhead view to get your bearings. The serial header is (D) here.]]<br />
<br />
First you need to unscrew the two screws keeping the router's board attached to the case. Once the PCB has been removed from the case, locate the serial header holes provided by LinkSys. This would be a grid of 10 holes (5x2) located on the bottom-right corner of the board when the antennae stubs are on top (see the top-down photo for clarification). These ten holes hold all of the input and output for the two serial interfaces--UART0, and UART1--on the device.<br />
<br />
[[Image:Serial.jpg|thumb|250px|right|A closer look at our attached serial header.]]<br />
<br />
<br />
Now, we could just solder wires right onto these holes, but a by placing a nice 10-pin header on the board we can easily attach and detach a 10 connection cable. Here you will use your '''soldering iron''' to solder the '''IDC shrouded double header''' onto the board. Make sure to note where the 1 pin is on the board (marked with a square around the hole instead of a circle) and where the 1 pin is located on the header (on ours it was marked with a triangle). Make sure that these two line up when soldering the header into the board.<br />
<h3 style="clear:both;"> Task Three: Create the ADM202 Transceiver Circuit Board </h3><br />
<br />
[[Image:Transceiver schematic.JPG|thumb|400px|left|Schematic showing the connections between the components of the ADM202 transceiver circuit board and between the board and the DB9 serial ports.]]<br />
[[Image:Transceiver board.jpg|thumb|150px|right|Blank transceiver board before adding components.]]<br />
[[Image:Complete transceiver board.jpg|thumb|150px|right|Transceiver board with all components in place except ribbon cables.]]<br />
[[Image:Completed transceiver.jpg|thumb|400px|left|Complete transceiver board with all components in place.]]<br />
<br />
The next step is to build the transceiver circuit, which converts the 3.3 volt serial signals from the router to conventional RS-232 serial voltages. The circuit includes only a handful of components, so it can be assembled using a small square of "perf board", or a variety of other inexpensive circuit prototyping techniques. We use a custom-made printed circuit board to simplify assembly, as shown here. (Link to page with PCB specs, and directions.) Again, you'll need your '''soldering iron''' to secure the different pieces in the transceiver board.<br />
<br />
Using the diagram on the left, solder the '''shrouded double header''', the '''socket''', and the '''capacitors''' into the board in the appropriate places. '''NOTE:''' the positions of the components on the physical board are not represented in the diagram, but the silkscreen on the board indicates placement and orientation. '''FURTHER NOTE:''' each component has a proper polarity or pin marking -- direction matters!<br />
<br />
The pictures to the right show the transceiver board in various stages of completion. The top one shows the blank board on which the other components will be added. The bottom one shows the '''shrouded double header''', the '''socket''', and the '''capacitors''' soldered in place. It also shows the actual ADM202 chip inserted into the socket, however, before inserting the chip it is a good idea to test what you've completed so far. <br />
<br />
Use a '''continuity tester''' to check the connection between the header soldered into the router's board and the socket on your transceiver board. The next step we recommend for testing your work is to plug in the router and use a '''voltmeter''' to check that the ''ground'' and ''power'' pins on the socket (pins 15 and 16) are registering at 3.3 volts. Now, actually insert the ADM202 chip into the socket and power up the router again, making sure that the lights turn on and nothing shorts out.<br />
<br />
The next step is to get six wires from a chopped up piece of the ribbon cable (or any six spare wires) and solder them into place in the six holes (two sets of three) at the bottom of the transceiver board. The resulting completed transceiver board should look something like the picture below the diagram.<br />
<br />
<h3 style="clear:both;"> Task Four: Attach Tranceiver Board to the Router</h3><br />
<br />
[[Image:Tranceiver attached.jpg|thumb|200px|left|Transceiver board attached via ribbon cable to the serial header soldered into the router's board.]]<br />
[[Image:Front sticker.jpg|thumb|75px|right]]<br />
[[Image:Front.jpg|thumb|75px|right]]<br />
[[Image:Drilled front.jpg|thumb|75px|right]]<br />
<br />
First take a piece of ribbon cable and attach each end to one of your IDC socket connectors. Notice the marker on the connector that signifies where pin 1 of the header will connect to. Make sure that the same side of the ribbon cable is attached to the marked side of both connectors. In other words make sure that the same wire will line up with pin 1 on both headers when the connectors are eventually attached to the headers. The next step is to actually plug in the connectors to the headers. Attach one connector to the header we soldered into the router's board and the other connector to the header we soldered into the transceiver board. The result should look something like the picture to the left. Now is a good time to reattach the router's board to its case by screwing the two screws into place and then closing up both black pieces of the back part of the router's case.<br />
<br />
=== Task Five: Attach Transceiver Board to DB9 Serial Ports ===<br />
<br />
Before soldering the wires from the transceiver board to the serial ports, it is a good idea to drill two holes in the front of the router's casing to use for the serial ports and also two small holes on each side of the bigger ones to use for screws or bolts to keep the '''DB9 Serial Ports''' in place. The three pictures to the right show how to take off the front sticker and what the case should look like after you've drilled two holes in the front for the serial ports. It is also a good idea to cut the sticker and place the left part back on to cover up the remaining holes in the casing.<br />
<br />
[[Image:Serial ports diagram.JPG|thumb|300px|left|Diagram of wiring to connect the two DB9 serial ports to the transceiver board.]]<br />
<br />
Next, feed the six wires coming from the transceiver board through the two holes you just drilled. Make sure that the three wires soldered into the holes marked '''J1''' on the transceiver board go through the hole on the left of the front of the router and the three wires soldered into the holes marked '''J2''' on the transceiver board go through the hole on the right of the front of the router. <br />
<br />
Following the diagram to the left, solder some spare wires or chopped pieces of ribbon cable into the two DB9 serial ports. Notice that solder cups 1, 4, and 6 are connected to each other and solder cups 7 and 8 are connected to each other on both the '''DB9 Female''' and '''DB9 Male''' serial ports. Then, again following the diagram, solder in the wires coming from '''J1''' into the appropriate solder cups of the '''DB9 Female''' and the wires coming from '''J2''' into the appropriate solder cups of the '''DB9 Male'''. <br />
<br />
Notice that in the case of the '''DB9 Female''' the ''T1OUT'' pin of the ADM202 transceiver chip needs to be connected to solder cup 2, the ''R1IN'' pin of the ADM202 transceiver chip needs to be connected to solder cup 3, and the ''ground'' needs to be connected to solder cup 5.<br />
<br />
Also, notice that in the case of the '''DB9 Male''' the ''R2IN'' pin of the ADM202 transceiver chip needs to be connected to solder cup 2, the ''T2OUT'' pin of the ADM202 transceiver chip needs to be connected to solder cup 3, and the ''ground'' needs to be connected to solder cup 5.<br />
<br />
Feeding the wires through the holes and connecting the serial ports in this way ensures that the router's primary serial device will be connected to the '''DB9 Female''' serial port and will be located on the left side while the router's secondary serial device will be connected to the '''DB9 Male''' serial port and will be located on the right side of the front of the router.<br />
<br />
After all the soldering is done it is a good idea to use a '''continuity tester''' to make sure that all the connections are good and no wires or solder cups may be accidentally touching. Your result should look something like the pictures below. Now is a good time to tape the transceiver board down to the front of the case. It would be extremely bad for the transceiver board to rub up against the router's circuit board when it was plugged in.<br />
<br />
<br />
<br />
[[Image:Serial ports done1.jpg|thumb|300px|right|Overhead picture of what the router will look like after the DB9 serial ports are correctly soldered into place, but before they have been screwed and secured into the router's case.]]<br />
[[Image:Serial ports done.jpg|thumb|300px|left|Front view of what the router will look like after the DB9 serial ports are correctly soldered into place, but before they have been screwed and secured into the router's case.]]<br />
<br />
<h3 style="clear:both;"> Task Six: Close the Router </h3><br />
<br />
This final task is best described in photos:<br />
{|align="center"<br />
|-<br />
| [[Image:Attach Back.jpg|thumb|350px|Now that everything is connected we can re-assemble it. First you put on the back/top half. Keyed ribbon cable is plugged in to serial port header on circuit board.]]<br />
| [[Image:Attach Front.jpg|thumb|350px|Next you can carefully install the front half (making sure not to break any of the wires we have).]]<br />
|-<br />
|}<br />
<br />
=== Task Seven: Rejoice ===<br />
<br />
[[Image:Complete.jpg|thumb|500px|center|Now you have a WRT54GL with two serial ports installed and ready to run your own operating system.]]<br />
<br />
== What to do next? ==<br />
<br />
Connect UART0 (the DB9 Female serial port) to a computer and follow the next HOWTO on using a PC to [[HOWTO:Connect to a modified router|connect to a modified router]].<br />
<br />
<br />
<hr/><br />
''This work is supported in part by NSF grant DUE-CCLI-0737476.''</div>Brylowhttps://xinu.cs.mu.edu/index.php?title=Modify_the_Linksys_hardware&diff=3108Modify the Linksys hardware2009-02-01T22:59:40Z<p>Brylow: Added some missing parts info.</p>
<hr />
<div>[[Category:HOWTO]]<br />
== Summary ==<br />
<br />
This will walk through adding hardware to a [http://www.linksys.com Linksys] [[WRT54GL]] wireless router that will take advantage of existing connections on the PCB for two UART connections, which will be exposed as DB9 serial port connectors mounted to the faceplate of the router. These connections can be used to communicate with the serial console for [[XINU]] and also to interact with the [[Common Firmware Environment]]'s command line interface. Gaining direct access to [[CFE]] is a key step towards being able to run [[XINU]] on the router.<br />
<br />
== Before Starting ==<br />
<br />
'''NOTE:''' The following lists all the ''necessary'' parts. However, the following tutorial describes assembling the transceiver on one of our custom transceiver boards. One could assemble the parts of the entire transceiver properly without the board, but with more difficulty. Here is some more information on our custom [[something|transceiver boards]].<br />
<br />
=== Parts List ===<br />
{| border="1" cellspacing="0" cellpadding="5" align="center"<br />
! Quantity<br />
! Part Name<br />
! Details<br />
! Part / Model Number<br />
! Price<br />
|- <br />
| 1<br />
| LinkSys [[WRT54GL]] Router<br />
| 802.11b/g wireless broadband router<br />
| [http://www.linksys.com/servlet/Satellite?c=L_Product_C2&childpagename=US%2FLayout&cid=1133202177241&pagename=Linksys%2FCommon%2FVisitorWrapper Linksys WRT54GL]<br />
| ~$65.00<br />
|-<br />
| 1<br />
| Ribbon cable<br />
| 28 AWG, 10 conductor, 25'<br />
| Jameco 643508CM<br />
| $4.99<br />
|-<br />
| 2<br />
| IDC socket connector<br />
| 0.1”, 10 conductor <br />
| Jameco 32491CM<br />
| $0.25<br />
|-<br />
| 2<br />
| IDC shrouded double header<br />
| 0.1”, 10 conductor<br />
| Jameco 67811CM<br />
| $0.33<br />
|-<br />
| 1<br />
| ADM202 Transceiver Chip<br />
| Serial Transceiver ADM202EAN<br />
| Jameco 1800464<br />
| $1.60<br />
|-<br />
| 2<br />
| Capacitor 220 nF<br />
| Tantalum,.22uF,35V,10%<br />
| Jameco 33507<br />
| $0.18<br />
|-<br />
| 3<br />
| Capacitor 100 nF<br />
| Tantalum,.1uF,35V,10%<br />
| Jameco 33488<br />
| $0.22<br />
|-<br />
| 1<br />
| DB9 Female<br />
| 22AWG,SOLDER CUP<br />
| Jameco 15771CM<br />
| $0.59<br />
|-<br />
| 1<br />
| DB9 Male<br />
| 22AWG,SOLDER CUP<br />
| Jameco 15747CM<br />
| $0.59<br />
|-<br />
|}<br />
<br />
(We provide this parts list as a data point; we offer no guarantees about current prices, and it is not our intent to endorse any particular vendor.)<br />
<br />
=== Tools List ===<br />
* Soldering Iron<br />
* Dremel tool (for cutting holes in plastic case)<br />
* Continuity Tester (Multimeter, or some other way of checking for proper connections)<br />
* Voltmeter (Multimeter will work for this, too)<br />
<br />
== Steps to Modify the Hardware ==<br />
<br />
=== Task One: Open the Router ===<br />
<br />
[[Image:Opening-linksys.jpg|thumb|400px|center|It's really very easy.]]<br />
<br />
There are no screws or tools needed to open the router, just pop open the front with your thumbs as shown in the picture. Some nice [http://voidmain.is-a-geek.net/redhat/wrt54g_revival.html illustrated opening instructions] can be found for a more detailed explanation of this step.<br />
<br />
'''DO NOTE: This is where the warranty on the router is voided!'''<br />
<br />
=== Task Two: Attach the Serial Header ===<br />
<br />
[[Image:Wrt54gl-layout.jpg|thumb|250px|left|An overhead view to get your bearings. The serial header is (D) here.]]<br />
<br />
First you need to unscrew the two screws keeping the router's board attached to the case. Once the PCB has been removed from the case, locate the serial header holes provided by LinkSys. This would be a grid of 10 holes (5x2) located on the bottom-right corner of the board when the antennae stubs are on top (see the top-down photo for clarification). These ten holes hold all of the input and output for the two serial interfaces--UART0, and UART1--on the device.<br />
<br />
[[Image:Serial.jpg|thumb|250px|right|A closer look at our attached serial header.]]<br />
<br />
<br />
Now, we could just solder wires right onto these holes, but a by placing a nice 10-pin header on the board we can easily attach and detach a 10 connection cable. Here you will use your '''soldering iron''' to solder the '''IDC shrouded double header''' onto the board. Make sure to note where the 1 pin is on the board (marked with a square around the hole instead of a circle) and where the 1 pin is located on the header (on ours it was marked with a triangle). Make sure that these two line up when soldering the header into the board.<br />
<h3 style="clear:both;"> Task Three: Create the ADM202 Transceiver Circuit Board </h3><br />
<br />
[[Image:Transceiver schematic.JPG|thumb|400px|left|Schematic showing the connections between the components of the ADM202 transceiver circuit board and between the board and the DB9 serial ports.]]<br />
[[Image:Transceiver board.jpg|thumb|150px|right|Blank transceiver board before adding components.]]<br />
[[Image:Complete transceiver board.jpg|thumb|150px|right|Transceiver board with all components in place except ribbon cables.]]<br />
[[Image:Completed transceiver.jpg|thumb|400px|left|Complete transceiver board with all components in place.]]<br />
<br />
The next step is to build the transceiver circuit, which converts the 3.3 volt serial signals from the router to conventional RS-232 serial voltages. The circuit includes only a handful of components, so it can be assembled using a small square of "perf board", or a variety of other inexpensive circuit prototyping techniques. We use a custom-made printed circuit board to simplify assembly, as shown here. (Link to page with PCB specs, and directions.) Again, you'll need your '''soldering iron''' to secure the different pieces in the transceiver board.<br />
<br />
Using the diagram on the left, solder the '''shrouded double header''', the '''socket''', and the '''capacitors''' into the board in the appropriate places. '''NOTE:''' the positions of the components on the physical board are not represented in the diagram, but the silkscreen on the board indicates placement and orientation. '''FURTHER NOTE:''' each component has a proper polarity or pin marking -- direction matters!<br />
<br />
The pictures to the right show the transceiver board in various stages of completion. The top one shows the blank board on which the other components will be added. The bottom one shows the '''shrouded double header''', the '''socket''', and the '''capacitors''' soldered in place. It also shows the actual ADM202 chip inserted into the socket, however, before inserting the chip it is a good idea to test what you've completed so far. <br />
<br />
Use a '''continuity tester''' to check the connection between the header soldered into the router's board and the socket on your transceiver board. The next step we recommend for testing your work is to plug in the router and use a '''voltmeter''' to check that the ''ground'' and ''power'' pins on the socket (pins 15 and 16) are registering at 3.3 volts. Now, actually insert the ADM202 chip into the socket and power up the router again, making sure that the lights turn on and nothing shorts out.<br />
<br />
The next step is to get six wires from a chopped up piece of the ribbon cable (or any six spare wires) and solder them into place in the six holes (two sets of three) at the bottom of the transceiver board. The resulting completed transceiver board should look something like the picture below the diagram.<br />
<br />
<h3 style="clear:both;"> Task Four: Attach Tranceiver Board to the Router</h3><br />
<br />
[[Image:Tranceiver attached.jpg|thumb|200px|left|Transceiver board attached via ribbon cable to the serial header soldered into the router's board.]]<br />
[[Image:Front sticker.jpg|thumb|75px|right]]<br />
[[Image:Front.jpg|thumb|75px|right]]<br />
[[Image:Drilled front.jpg|thumb|75px|right]]<br />
<br />
First take a piece of ribbon cable and attach each end to one of your IDC socket connectors. Notice the marker on the connector that signifies where pin 1 of the header will connect to. Make sure that the same side of the ribbon cable is attached to the marked side of both connectors. In other words make sure that the same wire will line up with pin 1 on both headers when the connectors are eventually attached to the headers. The next step is to actually plug in the connectors to the headers. Attach one connector to the header we soldered into the router's board and the other connector to the header we soldered into the transceiver board. The result should look something like the picture to the left. Now is a good time to reattach the router's board to its case by screwing the two screws into place and then closing up both black pieces of the back part of the router's case.<br />
<br />
=== Task Five: Attach Transceiver Board to DB9 Serial Ports ===<br />
<br />
Before soldering the wires from the transceiver board to the serial ports, it is a good idea to drill two holes in the front of the router's casing to use for the serial ports and also two small holes on each side of the bigger ones to use for screws or bolts to keep the '''DB9 Serial Ports''' in place. The three pictures to the right show how to take off the front sticker and what the case should look like after you've drilled two holes in the front for the serial ports. It is also a good idea to cut the sticker and place the left part back on to cover up the remaining holes in the casing.<br />
<br />
[[Image:Serial ports diagram.JPG|thumb|300px|left|Diagram of wiring to connect the two DB9 serial ports to the transceiver board.]]<br />
<br />
Next, feed the six wires coming from the transceiver board through the two holes you just drilled. Make sure that the three wires soldered into the holes marked '''J1''' on the transceiver board go through the hole on the left of the front of the router and the three wires soldered into the holes marked '''J2''' on the transceiver board go through the hole on the right of the front of the router. <br />
<br />
Following the diagram to the left, solder some spare wires or chopped pieces of ribbon cable into the two DB9 serial ports. Notice that solder cups 1, 4, and 6 are connected to each other and solder cups 7 and 8 are connected to each other on both the '''DB9 Female''' and '''DB9 Male''' serial ports. Then, again following the diagram, solder in the wires coming from '''J1''' into the appropriate solder cups of the '''DB9 Female''' and the wires coming from '''J2''' into the appropriate solder cups of the '''DB9 Male'''. <br />
<br />
Notice that in the case of the '''DB9 Female''' the ''T1OUT'' pin of the ADM202 transceiver chip needs to be connected to solder cup 2, the ''R1IN'' pin of the ADM202 transceiver chip needs to be connected to solder cup 3, and the ''ground'' needs to be connected to solder cup 5.<br />
<br />
Also, notice that in the case of the '''DB9 Male''' the ''R2IN'' pin of the ADM202 transceiver chip needs to be connected to solder cup 2, the ''T2OUT'' pin of the ADM202 transceiver chip needs to be connected to solder cup 3, and the ''ground'' needs to be connected to solder cup 5.<br />
<br />
Feeding the wires through the holes and connecting the serial ports in this way ensures that the router's primary serial device will be connected to the '''DB9 Female''' serial port and will be located on the left side while the router's secondary serial device will be connected to the '''DB9 Male''' serial port and will be located on the right side of the front of the router.<br />
<br />
After all the soldering is done it is a good idea to use a '''continuity tester''' to make sure that all the connections are good and no wires or solder cups may be accidentally touching. Your result should look something like the pictures below. Now is a good time to tape the transceiver board down to the front of the case. It would be extremely bad for the transceiver board to rub up against the router's circuit board when it was plugged in.<br />
<br />
<br />
<br />
[[Image:Serial ports done1.jpg|thumb|300px|right|Overhead picture of what the router will look like after the DB9 serial ports are correctly soldered into place, but before they have been screwed and secured into the router's case.]]<br />
[[Image:Serial ports done.jpg|thumb|300px|left|Front view of what the router will look like after the DB9 serial ports are correctly soldered into place, but before they have been screwed and secured into the router's case.]]<br />
<br />
<h3 style="clear:both;"> Task Six: Close the Router </h3><br />
<br />
This final task is best described in photos:<br />
{|align="center"<br />
|-<br />
| [[Image:Attach Back.jpg|thumb|350px|Now that everything is connected we can re-assemble it. First you put on the back/top half. Keyed ribbon cable is plugged in to serial port header on circuit board.]]<br />
| [[Image:Attach Front.jpg|thumb|350px|Next you can carefully install the front half (making sure not to break any of the wires we have).]]<br />
|-<br />
|}<br />
<br />
=== Task Seven: Rejoice ===<br />
<br />
[[Image:Complete.jpg|thumb|500px|center|Now you have a WRT54GL with two serial ports installed and ready to run your own operating system.]]<br />
<br />
== What to do next? ==<br />
<br />
Connect UART0 (the DB9 Female serial port) to a computer and follow the next HOWTO on using a PC to [[HOWTO:Connect to a modified router|connect to a modified router]].<br />
<br />
<br />
<hr/><br />
''This work is supported in part by NSF grant DUE-CCLI-0737476.''</div>Brylowhttps://xinu.cs.mu.edu/index.php?title=Downloads&diff=2873Downloads2008-09-23T20:16:46Z<p>Brylow: Bump version of xinu-console tools.</p>
<hr />
<div>== Embedded XINU 1.0 ==<br />
<br />
The venerable [[XINU|XINU operating system]] has been used in classrooms, research labs, and commercial development firms for nearly a quarter of a century. Reimplemented in ANSI standard C, targeted to a modern RISC architecture, and optimized for resource-scarce embedded systems, Embedded XINU is rested, relaxed, and ready to go for the next quarter century.<br />
<br />
The current version includes:<br />
* Process management primitives<br />
* Preemptive multitasking<br />
* Priority-based scheduling<br />
* Semaphore synchronization<br />
* Message-passing interprocess communication<br />
* Sleep and wake<br />
* Dynamic memory allocation<br />
* Synchronous and asynchronous serial drivers<br />
* Buffered I/O<br />
* Device-independent I/O layer <br />
* Embedded MIPS32 loader<br />
* Interactive shell with basic commands<br />
<br />
=== Downloads ===<br />
<br />
{|<br />
! Version<br />
! Download Link<br />
|-<br />
| Embedded Xinu 1.0.2 (latest release)<br />
| [http://www.mscs.mu.edu/~brylow/xinu/xinu_mips-latest.tar.gz gz] [http://www.mscs.mu.edu/~brylow/xinu/xinu_mips-latest.tar.bz2 bz2]<br />
|}<br />
<br />
== Xinu Console Tools ==<br />
<br />
The XINU Console Daemon and various associated utilities provide network clients with connectivity to backend consoles that are really only connected directly to the console host. The xinu-console software package is now freely available for UNIX console hosts and front end clients.<br />
<br />
(''Note: Information about the Windows version of the console tools can be found on the [[WinXINU]] page.'')<br />
<br />
=== Downloads ===<br />
<br />
{|<br />
! Version<br />
! Download Link<br />
|-<br />
| Xinu Console Tools 2.06 (Linux/Unix version)<br />
| [http://www.mscs.mu.edu/~brylow/xinu/xinu-console-latest.tar.gz gz] [http://www.mscs.mu.edu/~brylow/xinu/xinu-console-latest.src.rpm RPM]<br />
|-<br />
| Xinu Console Tools (Windows)<br />
| [[WinXINU/Installation|Installation]]<br />
|}</div>Brylowhttps://xinu.cs.mu.edu/index.php?title=Shell&diff=2796Shell2008-07-09T21:06:42Z<p>Brylow: /* Add the file to the Makefile */</p>
<hr />
<div>The XINU shell is a [[Modules | subsystem]] designed as an interface for interacting with the operating system. <br />
<br />
== How it works ==<br />
The shell relies on the [[TTY_Driver | TTY driver]] to receive user input and provide output to the user. When XINU starts, a shell process is spawned for each [[UART_Driver | serial port]] (or TTY). When a user enters a command the [http://xinu.mscs.mu.edu/docs/lexan_8c.html <code>lexan</code>] function divides the string of input into tokens. Command name, arguments, quoted strings, backgrounding, and redirection tokens are all recognized and divided by <code>lexan</code>.<br />
<br />
After the command is parsed, the shell uses the tokens to properly execute the given command. The shell first checks for the backgrounding ampersand ('&'), which should only appear as the last token. The shell is designed to handle redirection, but does not currently do so since XINU's file system is in development. <br />
<br />
Next, the command is looked up in the command table defined at the top of <code>[http://xinu.mscs.mu.edu/docs/shell_8c.html shell/shell.c]</code>. Each entry in the command table follows the format of command name, is the command built-in (ie can the command run in the background), and the function that executes the command: <code>{"command_name", TRUE / FALSE, xsh_function},</code>. <br />
<br />
Built-in commands are executed by calling the function that implements the command. All other commands are executed by creating a new process. If the user did not include the backgrounding flag in the input, the shell waits until the command process has completed before asking for more input.<br />
<br />
== Running commands ==<br />
The current distribution of the XINU shell is equipped with some basic commands. The majority of the commands provide information about the current state of the system including its processes, memory, and hardware. A full list of commands can be obtained from the shell by using the <code>help</code> command. Help on a specific command can be obtained using <code>COMMAND --help</code> or <code>help COMMAND</code>.<br />
<br />
* <code>clear</code>: clears the shell<br />
* <code>exit</code>: quits the XINU shell<br />
* <code>gpiostat</code>: displays the current status of the [[GPIO]] pins<br />
* <code>help</code>: displays a list of commands in the XINU shell<br />
* <code>kill PID</code>: kills a process number <code>PID</code><br />
* <code>led DESCRIPTOR STATUS</code>: turns an led on or off<br />
* <code>memstat</code>: displays the current memory usage and prints the free list<br />
* <code>memdump</code>: dumps a region of memory<br />
* <code>ps</code>: displays a table of running processes<br />
* <code>reset</code>: soft powercycles the backend<br />
* <code>sleep DELAY</code>: sleep for <code>DELAY</code> seconds<br />
* <code>test</code>: can be used for building test programs, all builds should simply return <code>OK</code><br />
* <code>testsuite</code>: run a series of tests to see if the system is functioning properly<br />
* <code>uartstat UARTNUM</code>: displays statistics for [[UART | uart]] <code>UARTNUM</code><br />
<br />
== Adding commands ==<br />
The shell is designed to be expandable, allowing users to add their own commands. The code that runs the shell (<code>shell/shell.c</code>) and the command parser (<code>shell/lexan.c</code>) do not need to change when a new command is added. The majority of the work goes into writing the actual command. After the command is written, three items must be added to the system:<br />
* the function prototype needs to be added to the header file (<code>include/shell.h</code>),<br />
* the command table (<code>shell/shell.c</code>) must be updated, and <br />
* the make file (<code>shell/Makerules</code>) must build the file containing the function.<br />
<br />
=== Writing the function ===<br />
The command should be given its own C source file in the <code>shell</code> directory, following the naming convention <code>xsh_command.c</code>. All command files should include <code>kernel.h</code> and <code>shell.h</code>, along with any other headers necessary for the command. Function names for commands follow the same naming convention as the source file: <code>xsh_command</code>. The method signature for a command is:<br />
command xsh_command(ushort stdin, ushort stdout, ushort stderr, ushort nargs, char *args[])<br />
<br />
Within the command, arguments are accessed via the <code>args</code> array. The command name is located in <code>arg[0]</code>. Subsequent arguments, up to <code>nargs</code> are accessed via <code>arg[n]</code>. Error checking of arguments is the responsibility of the command function. It is good practice to check for the correct number of arguments; remember the command name is counted in <code>nargs</code>, so a command without any arguments should have <code>nargs == 1</code>. Although not required, command functions should also allow for an argument of <code>--help</code> as <code>arg[1]</code>. This argument should cause the command to print out usage information. When a user types <code>help COMMAND</code> in the shell, the <code>COMMAND</code> is called with the <code>--help</code> argument.<br />
<br />
Additional code within the command function depends on what the command does. After the command is completed it should return <code>OK</code>.<br />
<br />
=== Add to command table ===<br />
After the command function is written, the command needs to be added to the command table so the shell is aware of the command. The command table is an array of <code>centry</code> (command entry) structures defined in <code>shell/shell.c</code>. Each entry in the command table follows the format of command name, is the command built-in (ie can the command run in the background), and the function that executes the command: <code>{"command_name", TRUE / FALSE, xsh_function},</code>.<br />
<br />
=== Add to header and makefile ===<br />
To complete the process, add the function prototype to the shell header file <code>include/shell.h</code>: <br />
command xsh_command( ushort, ushort, ushort, ushort, char *[]);<br />
Lastly, add the command function source file to the makefile (<code>shell/Makerules</code>) under the <code>C_FILES</code> group to ensure the command is compiled into the XINU boot image.<br />
<br />
=== Example ===<br />
We will run through a brief implementation of adding an echo command to the system.<br />
<br />
==== Write the function ====<br />
Begin by creating the source file in <code>shell/xsh_echo.c</code>. Since all commands take the same arguments (as passed by the shell), we get:<br />
/**<br />
* @file xsh_echo.c<br />
* @provides xsh_echo<br />
*<br />
* $Id$<br />
*/<br />
/* Embedded XINU, Copyright (C) 2007. All rights reserved. */<br />
<br />
#include <kernel.h><br />
#include <stdio.h><br />
#include <string.h><br />
<br />
/**<br />
* Shell command echos input text to standard out.<br />
* @param stdin descriptor of input device<br />
* @param stdout descriptor of output device<br />
* @param stderr descriptor of error device<br />
* @param args array of arguments<br />
* @return OK for success, SYSERR for syntax error<br />
*/<br />
command xsh_echo(ushort stdin, ushort stdout, ushort stderr, ushort nargs, char *args[])<br />
{<br />
int i; /* counter for looping through arguments */<br />
<br />
/* Output help, if '--help' argument was supplied */<br />
if (nargs == 2 && strncmp(args[1],"--help",6) == 0)<br />
{<br />
fprintf(stdout, "Usage: clear\n");<br />
fprintf(stdout, "Clears the terminal.\n");<br />
fprintf(stdout, "\t--help\t display this help and exit\n");<br />
return SYSERR;<br />
}<br />
<br />
/* loop through the arguments printing each as it is displayed */<br />
for ( i = 1; i < nargs; i++ )<br />
{<br />
fprintf(stdout, "%s ", args[i]);<br />
}<br />
<br />
/* Just so the next prompt doesn't run on to this line */<br />
fprintf(stdout, "\n");<br />
<br />
/* there were no errors so, return OK */<br />
return OK;<br />
}<br />
<br />
==== Add the function to the command table ====<br />
While we are in the <code>shell/</code> directory, we'll modify the command table found at the top of <code>shell/shell.c</code>. Since we are adding the echo command, we'll most likely want the user input at the shell to be "<code>echo</code>," this is not a builtin function (FALSE), and the function that supports this is xsh_echo. Giving us the entry:<br />
{ "echo", FALSE, xsh_echo }<br />
<br />
==== Add the function prototype to the include file ====<br />
Next we must add the prototype of the function to the shell include file in <code>include/shell.h</code>. This is simply done by adding the line:<br />
command xsh_echo(ushort, ushort, ushort, ushort, char *[]);<br />
<br />
==== Add the file to the Makefile ====<br />
Finally (and most importantly) we add the function to the Makefile to make sure that it is built by the compiler. We do this by finding the line beginning with "<code>C_FILES =</code>" in <code>shell/Makerules</code> and adding<br />
xsh_echo.c<br />
to the end of it.<br />
<br />
Compile and run, and you should now have a working implementation of the <code>echo</code> command on your XINU system!</div>Brylowhttps://xinu.cs.mu.edu/index.php?title=Shell&diff=2795Shell2008-07-09T21:06:07Z<p>Brylow: /* Add the file to the Makefile */</p>
<hr />
<div>The XINU shell is a [[Modules | subsystem]] designed as an interface for interacting with the operating system. <br />
<br />
== How it works ==<br />
The shell relies on the [[TTY_Driver | TTY driver]] to receive user input and provide output to the user. When XINU starts, a shell process is spawned for each [[UART_Driver | serial port]] (or TTY). When a user enters a command the [http://xinu.mscs.mu.edu/docs/lexan_8c.html <code>lexan</code>] function divides the string of input into tokens. Command name, arguments, quoted strings, backgrounding, and redirection tokens are all recognized and divided by <code>lexan</code>.<br />
<br />
After the command is parsed, the shell uses the tokens to properly execute the given command. The shell first checks for the backgrounding ampersand ('&'), which should only appear as the last token. The shell is designed to handle redirection, but does not currently do so since XINU's file system is in development. <br />
<br />
Next, the command is looked up in the command table defined at the top of <code>[http://xinu.mscs.mu.edu/docs/shell_8c.html shell/shell.c]</code>. Each entry in the command table follows the format of command name, is the command built-in (ie can the command run in the background), and the function that executes the command: <code>{"command_name", TRUE / FALSE, xsh_function},</code>. <br />
<br />
Built-in commands are executed by calling the function that implements the command. All other commands are executed by creating a new process. If the user did not include the backgrounding flag in the input, the shell waits until the command process has completed before asking for more input.<br />
<br />
== Running commands ==<br />
The current distribution of the XINU shell is equipped with some basic commands. The majority of the commands provide information about the current state of the system including its processes, memory, and hardware. A full list of commands can be obtained from the shell by using the <code>help</code> command. Help on a specific command can be obtained using <code>COMMAND --help</code> or <code>help COMMAND</code>.<br />
<br />
* <code>clear</code>: clears the shell<br />
* <code>exit</code>: quits the XINU shell<br />
* <code>gpiostat</code>: displays the current status of the [[GPIO]] pins<br />
* <code>help</code>: displays a list of commands in the XINU shell<br />
* <code>kill PID</code>: kills a process number <code>PID</code><br />
* <code>led DESCRIPTOR STATUS</code>: turns an led on or off<br />
* <code>memstat</code>: displays the current memory usage and prints the free list<br />
* <code>memdump</code>: dumps a region of memory<br />
* <code>ps</code>: displays a table of running processes<br />
* <code>reset</code>: soft powercycles the backend<br />
* <code>sleep DELAY</code>: sleep for <code>DELAY</code> seconds<br />
* <code>test</code>: can be used for building test programs, all builds should simply return <code>OK</code><br />
* <code>testsuite</code>: run a series of tests to see if the system is functioning properly<br />
* <code>uartstat UARTNUM</code>: displays statistics for [[UART | uart]] <code>UARTNUM</code><br />
<br />
== Adding commands ==<br />
The shell is designed to be expandable, allowing users to add their own commands. The code that runs the shell (<code>shell/shell.c</code>) and the command parser (<code>shell/lexan.c</code>) do not need to change when a new command is added. The majority of the work goes into writing the actual command. After the command is written, three items must be added to the system:<br />
* the function prototype needs to be added to the header file (<code>include/shell.h</code>),<br />
* the command table (<code>shell/shell.c</code>) must be updated, and <br />
* the make file (<code>shell/Makerules</code>) must build the file containing the function.<br />
<br />
=== Writing the function ===<br />
The command should be given its own C source file in the <code>shell</code> directory, following the naming convention <code>xsh_command.c</code>. All command files should include <code>kernel.h</code> and <code>shell.h</code>, along with any other headers necessary for the command. Function names for commands follow the same naming convention as the source file: <code>xsh_command</code>. The method signature for a command is:<br />
command xsh_command(ushort stdin, ushort stdout, ushort stderr, ushort nargs, char *args[])<br />
<br />
Within the command, arguments are accessed via the <code>args</code> array. The command name is located in <code>arg[0]</code>. Subsequent arguments, up to <code>nargs</code> are accessed via <code>arg[n]</code>. Error checking of arguments is the responsibility of the command function. It is good practice to check for the correct number of arguments; remember the command name is counted in <code>nargs</code>, so a command without any arguments should have <code>nargs == 1</code>. Although not required, command functions should also allow for an argument of <code>--help</code> as <code>arg[1]</code>. This argument should cause the command to print out usage information. When a user types <code>help COMMAND</code> in the shell, the <code>COMMAND</code> is called with the <code>--help</code> argument.<br />
<br />
Additional code within the command function depends on what the command does. After the command is completed it should return <code>OK</code>.<br />
<br />
=== Add to command table ===<br />
After the command function is written, the command needs to be added to the command table so the shell is aware of the command. The command table is an array of <code>centry</code> (command entry) structures defined in <code>shell/shell.c</code>. Each entry in the command table follows the format of command name, is the command built-in (ie can the command run in the background), and the function that executes the command: <code>{"command_name", TRUE / FALSE, xsh_function},</code>.<br />
<br />
=== Add to header and makefile ===<br />
To complete the process, add the function prototype to the shell header file <code>include/shell.h</code>: <br />
command xsh_command( ushort, ushort, ushort, ushort, char *[]);<br />
Lastly, add the command function source file to the makefile (<code>shell/Makerules</code>) under the <code>C_FILES</code> group to ensure the command is compiled into the XINU boot image.<br />
<br />
=== Example ===<br />
We will run through a brief implementation of adding an echo command to the system.<br />
<br />
==== Write the function ====<br />
Begin by creating the source file in <code>shell/xsh_echo.c</code>. Since all commands take the same arguments (as passed by the shell), we get:<br />
/**<br />
* @file xsh_echo.c<br />
* @provides xsh_echo<br />
*<br />
* $Id$<br />
*/<br />
/* Embedded XINU, Copyright (C) 2007. All rights reserved. */<br />
<br />
#include <kernel.h><br />
#include <stdio.h><br />
#include <string.h><br />
<br />
/**<br />
* Shell command echos input text to standard out.<br />
* @param stdin descriptor of input device<br />
* @param stdout descriptor of output device<br />
* @param stderr descriptor of error device<br />
* @param args array of arguments<br />
* @return OK for success, SYSERR for syntax error<br />
*/<br />
command xsh_echo(ushort stdin, ushort stdout, ushort stderr, ushort nargs, char *args[])<br />
{<br />
int i; /* counter for looping through arguments */<br />
<br />
/* Output help, if '--help' argument was supplied */<br />
if (nargs == 2 && strncmp(args[1],"--help",6) == 0)<br />
{<br />
fprintf(stdout, "Usage: clear\n");<br />
fprintf(stdout, "Clears the terminal.\n");<br />
fprintf(stdout, "\t--help\t display this help and exit\n");<br />
return SYSERR;<br />
}<br />
<br />
/* loop through the arguments printing each as it is displayed */<br />
for ( i = 1; i < nargs; i++ )<br />
{<br />
fprintf(stdout, "%s ", args[i]);<br />
}<br />
<br />
/* Just so the next prompt doesn't run on to this line */<br />
fprintf(stdout, "\n");<br />
<br />
/* there were no errors so, return OK */<br />
return OK;<br />
}<br />
<br />
==== Add the function to the command table ====<br />
While we are in the <code>shell/</code> directory, we'll modify the command table found at the top of <code>shell/shell.c</code>. Since we are adding the echo command, we'll most likely want the user input at the shell to be "<code>echo</code>," this is not a builtin function (FALSE), and the function that supports this is xsh_echo. Giving us the entry:<br />
{ "echo", FALSE, xsh_echo }<br />
<br />
==== Add the function prototype to the include file ====<br />
Next we must add the prototype of the function to the shell include file in <code>include/shell.h</code>. This is simply done by adding the line:<br />
command xsh_echo(ushort, ushort, ushort, ushort, char *[]);<br />
<br />
==== Add the file to the Makefile ====<br />
Finally (and most importantly) we add the function to the Makefile to make sure that it is built by the compiler. We do this by finding the line beginning with <code>C_FILES =</code> in <code>shell/Makerules</code> and adding<br />
xsh_echo.c<br />
to the end of it.<br />
<br />
Compile and run, and you should now have a working implementation of the <code>echo</code> command on your XINU system!</div>Brylowhttps://xinu.cs.mu.edu/index.php?title=Shell&diff=2794Shell2008-07-09T21:04:42Z<p>Brylow: New Makerules structure.</p>
<hr />
<div>The XINU shell is a [[Modules | subsystem]] designed as an interface for interacting with the operating system. <br />
<br />
== How it works ==<br />
The shell relies on the [[TTY_Driver | TTY driver]] to receive user input and provide output to the user. When XINU starts, a shell process is spawned for each [[UART_Driver | serial port]] (or TTY). When a user enters a command the [http://xinu.mscs.mu.edu/docs/lexan_8c.html <code>lexan</code>] function divides the string of input into tokens. Command name, arguments, quoted strings, backgrounding, and redirection tokens are all recognized and divided by <code>lexan</code>.<br />
<br />
After the command is parsed, the shell uses the tokens to properly execute the given command. The shell first checks for the backgrounding ampersand ('&'), which should only appear as the last token. The shell is designed to handle redirection, but does not currently do so since XINU's file system is in development. <br />
<br />
Next, the command is looked up in the command table defined at the top of <code>[http://xinu.mscs.mu.edu/docs/shell_8c.html shell/shell.c]</code>. Each entry in the command table follows the format of command name, is the command built-in (ie can the command run in the background), and the function that executes the command: <code>{"command_name", TRUE / FALSE, xsh_function},</code>. <br />
<br />
Built-in commands are executed by calling the function that implements the command. All other commands are executed by creating a new process. If the user did not include the backgrounding flag in the input, the shell waits until the command process has completed before asking for more input.<br />
<br />
== Running commands ==<br />
The current distribution of the XINU shell is equipped with some basic commands. The majority of the commands provide information about the current state of the system including its processes, memory, and hardware. A full list of commands can be obtained from the shell by using the <code>help</code> command. Help on a specific command can be obtained using <code>COMMAND --help</code> or <code>help COMMAND</code>.<br />
<br />
* <code>clear</code>: clears the shell<br />
* <code>exit</code>: quits the XINU shell<br />
* <code>gpiostat</code>: displays the current status of the [[GPIO]] pins<br />
* <code>help</code>: displays a list of commands in the XINU shell<br />
* <code>kill PID</code>: kills a process number <code>PID</code><br />
* <code>led DESCRIPTOR STATUS</code>: turns an led on or off<br />
* <code>memstat</code>: displays the current memory usage and prints the free list<br />
* <code>memdump</code>: dumps a region of memory<br />
* <code>ps</code>: displays a table of running processes<br />
* <code>reset</code>: soft powercycles the backend<br />
* <code>sleep DELAY</code>: sleep for <code>DELAY</code> seconds<br />
* <code>test</code>: can be used for building test programs, all builds should simply return <code>OK</code><br />
* <code>testsuite</code>: run a series of tests to see if the system is functioning properly<br />
* <code>uartstat UARTNUM</code>: displays statistics for [[UART | uart]] <code>UARTNUM</code><br />
<br />
== Adding commands ==<br />
The shell is designed to be expandable, allowing users to add their own commands. The code that runs the shell (<code>shell/shell.c</code>) and the command parser (<code>shell/lexan.c</code>) do not need to change when a new command is added. The majority of the work goes into writing the actual command. After the command is written, three items must be added to the system:<br />
* the function prototype needs to be added to the header file (<code>include/shell.h</code>),<br />
* the command table (<code>shell/shell.c</code>) must be updated, and <br />
* the make file (<code>shell/Makerules</code>) must build the file containing the function.<br />
<br />
=== Writing the function ===<br />
The command should be given its own C source file in the <code>shell</code> directory, following the naming convention <code>xsh_command.c</code>. All command files should include <code>kernel.h</code> and <code>shell.h</code>, along with any other headers necessary for the command. Function names for commands follow the same naming convention as the source file: <code>xsh_command</code>. The method signature for a command is:<br />
command xsh_command(ushort stdin, ushort stdout, ushort stderr, ushort nargs, char *args[])<br />
<br />
Within the command, arguments are accessed via the <code>args</code> array. The command name is located in <code>arg[0]</code>. Subsequent arguments, up to <code>nargs</code> are accessed via <code>arg[n]</code>. Error checking of arguments is the responsibility of the command function. It is good practice to check for the correct number of arguments; remember the command name is counted in <code>nargs</code>, so a command without any arguments should have <code>nargs == 1</code>. Although not required, command functions should also allow for an argument of <code>--help</code> as <code>arg[1]</code>. This argument should cause the command to print out usage information. When a user types <code>help COMMAND</code> in the shell, the <code>COMMAND</code> is called with the <code>--help</code> argument.<br />
<br />
Additional code within the command function depends on what the command does. After the command is completed it should return <code>OK</code>.<br />
<br />
=== Add to command table ===<br />
After the command function is written, the command needs to be added to the command table so the shell is aware of the command. The command table is an array of <code>centry</code> (command entry) structures defined in <code>shell/shell.c</code>. Each entry in the command table follows the format of command name, is the command built-in (ie can the command run in the background), and the function that executes the command: <code>{"command_name", TRUE / FALSE, xsh_function},</code>.<br />
<br />
=== Add to header and makefile ===<br />
To complete the process, add the function prototype to the shell header file <code>include/shell.h</code>: <br />
command xsh_command( ushort, ushort, ushort, ushort, char *[]);<br />
Lastly, add the command function source file to the makefile (<code>shell/Makerules</code>) under the <code>C_FILES</code> group to ensure the command is compiled into the XINU boot image.<br />
<br />
=== Example ===<br />
We will run through a brief implementation of adding an echo command to the system.<br />
<br />
==== Write the function ====<br />
Begin by creating the source file in <code>shell/xsh_echo.c</code>. Since all commands take the same arguments (as passed by the shell), we get:<br />
/**<br />
* @file xsh_echo.c<br />
* @provides xsh_echo<br />
*<br />
* $Id$<br />
*/<br />
/* Embedded XINU, Copyright (C) 2007. All rights reserved. */<br />
<br />
#include <kernel.h><br />
#include <stdio.h><br />
#include <string.h><br />
<br />
/**<br />
* Shell command echos input text to standard out.<br />
* @param stdin descriptor of input device<br />
* @param stdout descriptor of output device<br />
* @param stderr descriptor of error device<br />
* @param args array of arguments<br />
* @return OK for success, SYSERR for syntax error<br />
*/<br />
command xsh_echo(ushort stdin, ushort stdout, ushort stderr, ushort nargs, char *args[])<br />
{<br />
int i; /* counter for looping through arguments */<br />
<br />
/* Output help, if '--help' argument was supplied */<br />
if (nargs == 2 && strncmp(args[1],"--help",6) == 0)<br />
{<br />
fprintf(stdout, "Usage: clear\n");<br />
fprintf(stdout, "Clears the terminal.\n");<br />
fprintf(stdout, "\t--help\t display this help and exit\n");<br />
return SYSERR;<br />
}<br />
<br />
/* loop through the arguments printing each as it is displayed */<br />
for ( i = 1; i < nargs; i++ )<br />
{<br />
fprintf(stdout, "%s ", args[i]);<br />
}<br />
<br />
/* Just so the next prompt doesn't run on to this line */<br />
fprintf(stdout, "\n");<br />
<br />
/* there were no errors so, return OK */<br />
return OK;<br />
}<br />
<br />
==== Add the function to the command table ====<br />
While we are in the <code>shell/</code> directory, we'll modify the command table found at the top of <code>shell/shell.c</code>. Since we are adding the echo command, we'll most likely want the user input at the shell to be "<code>echo</code>," this is not a builtin function (FALSE), and the function that supports this is xsh_echo. Giving us the entry:<br />
{ "echo", FALSE, xsh_echo }<br />
<br />
==== Add the function prototype to the include file ====<br />
Next we must add the prototype of the function to the shell include file in <code>include/shell.h</code>. This is simply done by adding the line:<br />
command xsh_echo(ushort, ushort, ushort, ushort, char *[]);<br />
<br />
==== Add the file to the Makefile ====<br />
Finally (and most importantly) we add the function to the Makefile to make sure that it is built by the compiler. We do this by finding the line beginning with <code>SHL =</code> and adding<br />
xsh_echo.c<br />
to the end of it.<br />
<br />
You should now have a working implementation of the <code>echo</code> command on your XINU system!</div>Brylowhttps://xinu.cs.mu.edu/index.php?title=Deploy_Xinu&diff=2749Deploy Xinu2008-06-26T15:59:43Z<p>Brylow: Reverted edits by Brylow (Talk); changed back to last version by Amallen</p>
<hr />
<div>By this point it is assumed you have [[List_of_supported_platforms| obtained a supported router]] to use as a back end, have [[HOWTO:Modify_the_Linksys_hardware| made the necessary modifications]] to use the serial port, have [[HOWTO:Connect_to_a_modified_router| connected to your backend router]] using serial communication software (such as PICOCOM), and have [[HOWTO:Build XINU#Cross-Compiler| built a cross-compiler]] (from your host computer's architecture to MIPS) and used it to [[HOWTO:Build XINU#Building the XINU Image|build a XINU boot image]] to run on the back end (a file called <code> xinu.boot </code> should be in your <code> compile </code> directory). If you have not it is suggested you visit http://mulug.mscs.mu.edu/xinu/ to understand what you need and why.<br />
<br />
<br />
== TFTP Server ==<br />
<br />
=== Installing the TFTP Server Package ===<br />
The first step in running your XINU image is to run a '''TFTP Server''' on your front end so that it can transfer the boot image onto the back end via the network connection. Getting a '''TFTP Server''' running on your front end is a fairly simple process on Linux. Use your front end's package install commands to search for a tftp-server package and then install that package. Using Fedora 9 and the YUM package install command, we entered the command <code> yum list | grep tftp </code> and obtained the following output:<br />
<pre>[root@argolis compile]# yum list | grep tftp<br />
tftp.i386 0.48-6.fc9 mulugupdates <br />
tftp-server.i386 0.48-6.fc9 mulugupdates <br />
[root@argolis compile]#</pre><br />
<br />
This command tells the package installer to find any packages with "tftp" in the title. We want the package called ''tftp-server.i386'' because this will allow us to run a '''TFTP-Server''' on our front end machine. Next, we need to actually install the package. Again we use our package install command to install the package. Using Fedora 9 and the YUM package install command, we entered the command <code> yum install tftp-server </code> and obtained the following output:<br />
<pre>[root@argolis compile]# yum install tftp-server<br />
Loaded plugins: refresh-packagekit<br />
Setting up Install Process<br />
Parsing package install arguments<br />
Resolving Dependencies<br />
--> Running transaction check<br />
---> Package tftp-server.i386 0:0.48-6.fc9 set to be updated<br />
--> Finished Dependency Resolution<br />
<br />
Dependencies Resolved<br />
<br />
=============================================================================<br />
Package Arch Version Repository Size <br />
=============================================================================<br />
Installing:<br />
tftp-server i386 0.48-6.fc9 mulugupdates 35 k<br />
<br />
Transaction Summary<br />
=============================================================================<br />
Install 1 Package(s) <br />
Update 0 Package(s) <br />
Remove 0 Package(s) <br />
<br />
Total download size: 35 k<br />
Is this ok [y/N]: yes<br />
Downloading Packages:<br />
(1/1): tftp-server-0.48-6.fc9.i386.rpm | 35 kB 00:00 <br />
Running rpm_check_debug<br />
Running Transaction Test<br />
Finished Transaction Test<br />
Transaction Test Succeeded<br />
Running Transaction<br />
Installing: tftp-server ######################### [1/1] <br />
<br />
Installed: tftp-server.i386 0:0.48-6.fc9<br />
Complete!<br />
[root@argolis compile]#</pre><br />
<br />
=== Configuring the TFTP Server ===<br />
Now that your '''TFTP Server''' package is installed, you need to configure some settings to get it to run properly. First open the file <code> /etc/xinetd.d/tftp</code>. ''xinetd'' is a server daemon that can run many different types of servers. Here, though, we're only interested in running a '''TFTP Server''', so we open the tftp configuration file for ''xinetd'' and make the necessary changes. At first, the file should look something like this:<br />
<pre># default: off<br />
# description: The tftp server serves files using the trivial file transfer \<br />
# protocol. The tftp protocol is often used to boot diskless \<br />
# workstations, download configuration files to network-aware printers, \<br />
# and to start the installation process for some operating systems.<br />
service tftp<br />
{<br />
socket_type = dgram<br />
protocol = udp<br />
wait = yes<br />
user = root<br />
server = /usr/sbin/in.tftpd<br />
server_args = -s /var/lib/tftpboot<br />
disable = yes<br />
per_source = 11<br />
cps = 100 2<br />
flags = IPv4<br />
}</pre><br />
<br />
You need to change the values of the <code> disable </code> and <code> server_args </code> variables. Change the value of <code> disable </code> to "no" and the value of <code> server_args </code> to point to the directory that will contain files you wish to share on your '''TFTP Server'''. In our lab we use the directory <code> /tftpboot </code>. You need to remember this directory because this is where you will need to put your <code> xinu.boot </code> file that you want to run on the back end. After you've made the necessary changes to the file <code> /etc/xinetd.d/tftp </code>, it should look like this:<br />
<pre># default: off<br />
# description: The tftp server serves files using the trivial file transfer \<br />
# protocol. The tftp protocol is often used to boot diskless \<br />
# workstations, download configuration files to network-aware printers, \<br />
# and to start the installation process for some operating systems.<br />
service tftp<br />
{<br />
socket_type = dgram<br />
protocol = udp<br />
wait = yes<br />
user = root<br />
server = /usr/sbin/in.tftpd<br />
server_args = -s /tftpboot<br />
disable = no<br />
per_source = 11<br />
cps = 100 2<br />
flags = IPv4<br />
}</pre><br />
<br />
If you are going to use our approach you may need to create a <code> /tftpboot </code> directory. To do this execute the following command: <code> mkdir /tftpboot </code>. Then you'll want to check to make sure that the ''xinetd'' is running, and make sure that its running a '''TFTP Server'''. Execute the command <code> chkconfig --list </code>. You should get output that looks like this:<br />
<pre>[root@argolis compile]# chkconfig --list<br />
NetworkManager 0:off 1:off 2:off 3:off 4:off 5:off 6:off<br />
acpid 0:off 1:off 2:on 3:on 4:on 5:on 6:off<br />
anacron 0:off 1:off 2:on 3:on 4:on 5:on 6:off<br />
atd 0:off 1:off 2:off 3:on 4:on 5:on 6:off<br />
auditd 0:off 1:off 2:on 3:on 4:on 5:on 6:off<br />
avahi-daemon 0:off 1:off 2:off 3:on 4:on 5:on 6:off<br />
...<br />
...<br />
...<br />
winbind 0:off 1:off 2:off 3:off 4:off 5:off 6:off<br />
wpa_supplicant 0:off 1:off 2:off 3:off 4:off 5:off 6:off<br />
xinetd 0:off 1:off 2:off 3:on 4:on 5:on 6:off<br />
xinu-consoled 0:off 1:off 2:off 3:on 4:on 5:on 6:off<br />
ypbind 0:off 1:off 2:off 3:off 4:off 5:off 6:off<br />
yum-updatesd 0:off 1:off 2:on 3:on 4:on 5:on 6:off<br />
<br />
xinetd based services:<br />
chargen-dgram: off<br />
chargen-stream: off<br />
cvs: off<br />
daytime-dgram: off<br />
daytime-stream: off<br />
discard-dgram: off<br />
discard-stream: off<br />
echo-dgram: off<br />
echo-stream: off<br />
rsync: off<br />
tcpmux-server: off<br />
tftp: on<br />
time-dgram: off<br />
time-stream: off<br />
[root@argolis compile]# </pre><br />
<br />
The important lines in this output are the ''xinetd'' line in the list of services and the ''tftp'' line at the bottom section of xinetd based services. Make sure that the ''xinetd'' line says "on" for 3, 4, and 5. Also make sure that the ''tftp'' line says "on".<br />
<br />
There are a couple other configurations that you may need to set up in order to get your '''TFTP Server''' running. If your front end is running a ''SE Linux'' firewall (our front end with a fresh install of Fedora 9 came running this firewall by default) you may have to configure it to allow clients to access your front end's '''TFTP Server''' running through ''xinetd''. The simplest solution is to just tell the ''SE Linux'' firewall to allow any activity over the network connection your front end is using to connect to the back end. Our front end machine is set up with two network cards and configured so that <code>eth0</code> is our network connection to the outside world and <code>eth1</code> is our connection to our back end. To tell the firewall to accept all activity over our network connection with the backend we used the command <code> iptables -I INPUT -i eth1 -j ACCEPT</code>. '''NOTE:''' this could be very dangerous because the connection between your front end and back end is now '''insecure'''. This should only be done if you trust all possible users of the backend because they now have unchecked access to your frontend machine.<br />
<br />
Also, you may need to configure your frontend's IP address. If you are using a DHCP server for your frontend machine you can simply execute <code> ifconfig eth0 -auto </code> on your backend's CFE prompt to obtain an IP for your backend automatically. However, most likely this is not the case and you will have to make sure that the network connection that your front end machine is using to communicate with the backend is configured with a static IP address in the 192.168.1.[2-255] range because your backend router will have a default IP address of 192.168.1.1 when it reboots. If it is the case that the IP address of your frontend machine's network connection with the backend is set outside of this range, then click [[HOWTO:Change your Frontend's IP Address | here]] for a quick tutorial on changing the IP address of your network connection.<br />
<br />
The last step before actually trying to boot your backend with a XINU image, is to copy the actual <code>xinu.boot</code> file to the directory from which the '''TFTP Server''' allows clients to get files. This is the directory that the <code> /etc/xinetd.d/tftp </code> file's <code> server_args </code> variable points to. In our example we used the directory <code> /tftpboot</code>. This is the directory where you need to copy the <code> xinu.boot </code> file. This is easily done by using a command like <code> cp xinu.boot /tftpboot/xinu.boot</code>, assuming that your current working directory contains the <code> xinu.boot </code> file and that <code> /tftpboot </code> is the directory from which your '''TFTP Server''' allows clients to get files.<br />
<br />
== Booting XINU on your Backend ==<br />
<br />
By now your '''TFTP Server''' should be up and running correctly, your <code> xinu.boot </code> file should be in the correct directory so your backend can access it through the TFTP protocol, and your frontend machine should either be running as a DHCP server or (more likely) has a static IP address in the 192.168.1.[2-255] range on its network connection with the backend.<br />
<br />
To boot your backend router running XINU, first make sure you are connected to the backend with some serial communication software and are at the CFE prompt. If you are not looking at the backend router's CFE prompt follow the instructions on how to [[HOWTO:Connect_to_a_modified_router| connect to your backend router]]. In the CFE prompt type the command <code> boot -elf [host ip]:xinu.boot </code> where "[host ip]" is the IP address of the frontend machine's connection to the backend router. If all has gone correctly the router should now be running a XINU image and you will be greeted with a basic shell (xsh$ ). On our frontend machine running Fedora 9 with an IP address of <code> 192.168.1.2 </code> we optained the following output:<br />
<pre>CFE> boot -elf 192.168.1.2:xinu.boot<br />
Loader:elf Filesys:tftp Dev:eth0 File:192.168.1.2:xinu.boot Options:(null)<br />
Loading: 0x80001000/114724 0x8001d024/18480 Entry at 0x80001000<br />
Closing network.<br />
Starting program at 0x80001000<br />
(Mips XINU) #0 (root@argolis.mscs.mu.edu) Mon Jun 23 17:47:42 CDT 2008<br />
<br />
16777216 bytes physical memory.<br />
4096 bytes reserved system area.<br />
133204 bytes XINU code.<br />
32764 bytes stack space.<br />
16607152 bytes heap space.<br />
<br />
______________________________________<br />
_ _ _____ ______ _ _ <br />
\ \ / /(_____)| ___ \ | | | |<br />
\ \/ / _ | | | || | | |<br />
) ( | | | | | || | | |<br />
/ /\ \ _| |_ | | | || |___| |<br />
/_/ \_\(_____)|_| |_| \______|<br />
______________________________________<br />
<br />
Welcome to the wonderful world of XINU!<br />
xsh$ </pre><br />
<br />
Within the shell you have some basic commands: exit, gpiostat, help, kill, memstat, led, ps, reset, sleep, uartstat. Each can be described using [command] --help. <br />
<pre>xsh$ help<br />
Shell Commands:<br />
clear<br />
ethstat<br />
exit<br />
gpiostat<br />
help<br />
kill<br />
led<br />
memstat<br />
memdump<br />
ps<br />
reset<br />
sleep<br />
test<br />
testsuite<br />
uartstat<br />
nvram<br />
?<br />
xsh$ </pre><br />
<br />
Congratulations, You now have a working backend running XINU! You can now make changes to the XINU code, recompile it using the <code> make </code> command to get a new <code> xinu.boot </code> image, copy that file into the <code> /tftpboot </code> directory (or whatever directory your '''TFTP Server''' uses to share files), and use the same <code> boot -elf [host ip]:xinu.boot </code> command to run your very own, modified version of the XINU operating system.<br />
<br />
<br />
== What to do next? ==<br />
<br />
Now that you have successfully booted and ran XINU on your backend router, you might want to try to [[HOWTO:Build_Backend_Pool|build a pool of backends]] to allow multiple users to each run their own version of XINU on a different backend.<br />
<br />
For more information on the XINU operating system check out the Embedded XINU wiki [http://mulug.mscs.mu.edu/xinu/].<br />
<br />
<br />
<hr/><br />
''This work is supported in part by NSF grant DUE-CCLI-0737476.''</div>Brylowhttps://xinu.cs.mu.edu/index.php?title=Deploy_Xinu&diff=2748Deploy Xinu2008-06-26T15:59:17Z<p>Brylow: /* What to do next? */</p>
<hr />
<div>By this point it is assumed you have [[List_of_supported_platforms| obtained a supported router]] to use as a back end, have [[HOWTO:Modify_the_Linksys_hardware| made the necessary modifications]] to use the serial port, have [[HOWTO:Connect_to_a_modified_router| connected to your backend router]] using serial communication software (such as PICOCOM), and have [[HOWTO:Build XINU#Cross-Compiler| built a cross-compiler]] (from your host computer's architecture to MIPS) and used it to [[HOWTO:Build XINU#Building the XINU Image|build a XINU boot image]] to run on the back end (a file called <code> xinu.boot </code> should be in your <code> compile </code> directory). If you have not it is suggested you visit http://mulug.mscs.mu.edu/xinu/ to understand what you need and why.<br />
<br />
<br />
== TFTP Server ==<br />
<br />
=== Installing the TFTP Server Package ===<br />
The first step in running your XINU image is to run a '''TFTP Server''' on your front end so that it can transfer the boot image onto the back end via the network connection. Getting a '''TFTP Server''' running on your front end is a fairly simple process on Linux. Use your front end's package install commands to search for a tftp-server package and then install that package. Using Fedora 9 and the YUM package install command, we entered the command <code> yum list | grep tftp </code> and obtained the following output:<br />
<pre>[root@argolis compile]# yum list | grep tftp<br />
tftp.i386 0.48-6.fc9 mulugupdates <br />
tftp-server.i386 0.48-6.fc9 mulugupdates <br />
[root@argolis compile]#</pre><br />
<br />
This command tells the package installer to find any packages with "tftp" in the title. We want the package called ''tftp-server.i386'' because this will allow us to run a '''TFTP-Server''' on our front end machine. Next, we need to actually install the package. Again we use our package install command to install the package. Using Fedora 9 and the YUM package install command, we entered the command <code> yum install tftp-server </code> and obtained the following output:<br />
<pre>[root@argolis compile]# yum install tftp-server<br />
Loaded plugins: refresh-packagekit<br />
Setting up Install Process<br />
Parsing package install arguments<br />
Resolving Dependencies<br />
--> Running transaction check<br />
---> Package tftp-server.i386 0:0.48-6.fc9 set to be updated<br />
--> Finished Dependency Resolution<br />
<br />
Dependencies Resolved<br />
<br />
=============================================================================<br />
Package Arch Version Repository Size <br />
=============================================================================<br />
Installing:<br />
tftp-server i386 0.48-6.fc9 mulugupdates 35 k<br />
<br />
Transaction Summary<br />
== What to do next? ==<br />
<br />
Now that you have successfully booted and ran XINU on your backend router, you might want to try to [[HOWTO:Build_Backend_Pool|build a pool of backends]] to allow multiple users to each run their own version of XINU on a different backend.<br />
<br />
For more information on the XINU operating system check out the [[Main Page|Embedded XINU wiki]].<br />
<br />
<br />
<hr/><br />
''This work is supported in part by NSF grant DUE-CCLI-0737476.''<br />
<br />
=== Configuring the TFTP Server ===<br />
Now that your '''TFTP Server''' package is installed, you need to configure some settings to get it to run properly. First open the file <code> /etc/xinetd.d/tftp</code>. ''xinetd'' is a server daemon that can run many different types of servers. Here, though, we're only interested in running a '''TFTP Server''', so we open the tftp configuration file for ''xinetd'' and make the necessary changes. At first, the file should look something like this:<br />
<pre># default: off<br />
# description: The tftp server serves files using the trivial file transfer \<br />
# protocol. The tftp protocol is often used to boot diskless \<br />
# workstations, download configuration files to network-aware printers, \<br />
# and to start the installation process for some operating systems.<br />
service tftp<br />
{<br />
socket_type = dgram<br />
protocol = udp<br />
wait = yes<br />
user = root<br />
server = /usr/sbin/in.tftpd<br />
server_args = -s /var/lib/tftpboot<br />
disable = yes<br />
per_source = 11<br />
cps = 100 2<br />
flags = IPv4<br />
}</pre><br />
<br />
You need to change the values of the <code> disable </code> and <code> server_args </code> variables. Change the value of <code> disable </code> to "no" and the value of <code> server_args </code> to point to the directory that will contain files you wish to share on your '''TFTP Server'''. In our lab we use the directory <code> /tftpboot </code>. You need to remember this directory because this is where you will need to put your <code> xinu.boot </code> file that you want to run on the back end. After you've made the necessary changes to the file <code> /etc/xinetd.d/tftp </code>, it should look like this:<br />
<pre># default: off<br />
# description: The tftp server serves files using the trivial file transfer \<br />
# protocol. The tftp protocol is often used to boot diskless \<br />
# workstations, download configuration files to network-aware printers, \<br />
# and to start the installation process for some operating systems.<br />
service tftp<br />
{<br />
socket_type = dgram<br />
protocol = udp<br />
wait = yes<br />
user = root<br />
server = /usr/sbin/in.tftpd<br />
server_args = -s /tftpboot<br />
disable = no<br />
per_source = 11<br />
cps = 100 2<br />
flags = IPv4<br />
}</pre><br />
<br />
If you are going to use our approach you may need to create a <code> /tftpboot </code> directory. To do this execute the following command: <code> mkdir /tftpboot </code>. Then you'll want to check to make sure that the ''xinetd'' is running, and make sure that its running a '''TFTP Server'''. Execute the command <code> chkconfig --list </code>. You should get output that looks like this:<br />
<pre>[root@argolis compile]# chkconfig --list<br />
NetworkManager 0:off 1:off 2:off 3:off 4:off 5:off 6:off<br />
acpid 0:off 1:off 2:on 3:on 4:on 5:on 6:off<br />
anacron 0:off 1:off 2:on 3:on 4:on 5:on 6:off<br />
atd 0:off 1:off 2:off 3:on 4:on 5:on 6:off<br />
auditd 0:off 1:off 2:on 3:on 4:on 5:on 6:off<br />
avahi-daemon 0:off 1:off 2:off 3:on 4:on 5:on 6:off<br />
...<br />
...<br />
...<br />
winbind 0:off 1:off 2:off 3:off 4:off 5:off 6:off<br />
wpa_supplicant 0:off 1:off 2:off 3:off 4:off 5:off 6:off<br />
xinetd 0:off 1:off 2:off 3:on 4:on 5:on 6:off<br />
xinu-consoled 0:off 1:off 2:off 3:on 4:on 5:on 6:off<br />
ypbind 0:off 1:off 2:off 3:off 4:off 5:off 6:off<br />
yum-updatesd 0:off 1:off 2:on 3:on 4:on 5:on 6:off<br />
<br />
xinetd based services:<br />
chargen-dgram: off<br />
chargen-stream: off<br />
cvs: off<br />
daytime-dgram: off<br />
daytime-stream: off<br />
discard-dgram: off<br />
discard-stream: off<br />
echo-dgram: off<br />
echo-stream: off<br />
rsync: off<br />
tcpmux-server: off<br />
tftp: on<br />
time-dgram: off<br />
time-stream: off<br />
[root@argolis compile]# </pre><br />
<br />
The important lines in this output are the ''xinetd'' line in the list of services and the ''tftp'' line at the bottom section of xinetd based services. Make sure that the ''xinetd'' line says "on" for 3, 4, and 5. Also make sure that the ''tftp'' line says "on".<br />
<br />
There are a couple other configurations that you may need to set up in order to get your '''TFTP Server''' running. If your front end is running a ''SE Linux'' firewall (our front end with a fresh install of Fedora 9 came running this firewall by default) you may have to configure it to allow clients to access your front end's '''TFTP Server''' running through ''xinetd''. The simplest solution is to just tell the ''SE Linux'' firewall to allow any activity over the network connection your front end is using to connect to the back end. Our front end machine is set up with two network cards and configured so that <code>eth0</code> is our network connection to the outside world and <code>eth1</code> is our connection to our back end. To tell the firewall to accept all activity over our network connection with the backend we used the command <code> iptables -I INPUT -i eth1 -j ACCEPT</code>. '''NOTE:''' this could be very dangerous because the connection between your front end and back end is now '''insecure'''. This should only be done if you trust all possible users of the backend because they now have unchecked access to your frontend machine.<br />
<br />
Also, you may need to configure your frontend's IP address. If you are using a DHCP server for your frontend machine you can simply execute <code> ifconfig eth0 -auto </code> on your backend's CFE prompt to obtain an IP for your backend automatically. However, most likely this is not the case and you will have to make sure that the network connection that your front end machine is using to communicate with the backend is configured with a static IP address in the 192.168.1.[2-255] range because your backend router will have a default IP address of 192.168.1.1 when it reboots. If it is the case that the IP address of your frontend machine's network connection with the backend is set outside of this range, then click [[HOWTO:Change your Frontend's IP Address | here]] for a quick tutorial on changing the IP address of your network connection.<br />
<br />
The last step before actually trying to boot your backend with a XINU image, is to copy the actual <code>xinu.boot</code> file to the directory from which the '''TFTP Server''' allows clients to get files. This is the directory that the <code> /etc/xinetd.d/tftp </code> file's <code> server_args </code> variable points to. In our example we used the directory <code> /tftpboot</code>. This is the directory where you need to copy the <code> xinu.boot </code> file. This is easily done by using a command like <code> cp xinu.boot /tftpboot/xinu.boot</code>, assuming that your current working directory contains the <code> xinu.boot </code> file and that <code> /tftpboot </code> is the directory from which your '''TFTP Server''' allows clients to get files.<br />
<br />
== Booting XINU on your Backend ==<br />
<br />
By now your '''TFTP Server''' should be up and running correctly, your <code> xinu.boot </code> file should be in the correct directory so your backend can access it through the TFTP protocol, and your frontend machine should either be running as a DHCP server or (more likely) has a static IP address in the 192.168.1.[2-255] range on its network connection with the backend.<br />
<br />
To boot your backend router running XINU, first make sure you are connected to the backend with some serial communication software and are at the CFE prompt. If you are not looking at the backend router's CFE prompt follow the instructions on how to [[HOWTO:Connect_to_a_modified_router| connect to your backend router]]. In the CFE prompt type the command <code> boot -elf [host ip]:xinu.boot </code> where "[host ip]" is the IP address of the frontend machine's connection to the backend router. If all has gone correctly the router should now be running a XINU image and you will be greeted with a basic shell (xsh$ ). On our frontend machine running Fedora 9 with an IP address of <code> 192.168.1.2 </code> we optained the following output:<br />
<pre>CFE> boot -elf 192.168.1.2:xinu.boot<br />
Loader:elf Filesys:tftp Dev:eth0 File:192.168.1.2:xinu.boot Options:(null)<br />
Loading: 0x80001000/114724 0x8001d024/18480 Entry at 0x80001000<br />
Closing network.<br />
Starting program at 0x80001000<br />
(Mips XINU) #0 (root@argolis.mscs.mu.edu) Mon Jun 23 17:47:42 CDT 2008<br />
<br />
16777216 bytes physical memory.<br />
4096 bytes reserved system area.<br />
133204 bytes XINU code.<br />
32764 bytes stack space.<br />
16607152 bytes heap space.<br />
<br />
______________________________________<br />
_ _ _____ ______ _ _ <br />
\ \ / /(_____)| ___ \ | | | |<br />
\ \/ / _ | | | || | | |<br />
) ( | | | | | || | | |<br />
/ /\ \ _| |_ | | | || |___| |<br />
/_/ \_\(_____)|_| |_| \______|<br />
______________________________________<br />
<br />
Welcome to the wonderful world of XINU!<br />
xsh$ </pre><br />
<br />
Within the shell you have some basic commands: exit, gpiostat, help, kill, memstat, led, ps, reset, sleep, uartstat. Each can be described using [command] --help. <br />
<pre>xsh$ help<br />
Shell Commands:<br />
clear<br />
ethstat<br />
exit<br />
gpiostat<br />
help<br />
kill<br />
led<br />
memstat<br />
memdump<br />
ps<br />
reset<br />
sleep<br />
test<br />
testsuite<br />
uartstat<br />
nvram<br />
?<br />
xsh$ </pre><br />
<br />
Congratulations, You now have a working backend running XINU! You can now make changes to the XINU code, recompile it using the <code> make </code> command to get a new <code> xinu.boot </code> image, copy that file into the <code> /tftpboot </code> directory (or whatever directory your '''TFTP Server''' uses to share files), and use the same <code> boot -elf [host ip]:xinu.boot </code> command to run your very own, modified version of the XINU operating system.<br />
<br />
<br />
== What to do next? ==<br />
<br />
Now that you have successfully booted and ran XINU on your backend router, you might want to try to [[HOWTO:Build_Backend_Pool|build a pool of backends]] to allow multiple users to each run their own version of XINU on a different backend.<br />
<br />
For more information on the XINU operating system check out the Embedded XINU wiki [http://mulug.mscs.mu.edu/xinu/].<br />
<br />
<br />
<hr/><br />
''This work is supported in part by NSF grant DUE-CCLI-0737476.''</div>Brylowhttps://xinu.cs.mu.edu/index.php?title=Deploy_Xinu&diff=2747Deploy Xinu2008-06-26T15:57:11Z<p>Brylow: Reverted edits by Brylow (Talk); changed back to last version by Amallen</p>
<hr />
<div>By this point it is assumed you have [[List_of_supported_platforms| obtained a supported router]] to use as a back end, have [[HOWTO:Modify_the_Linksys_hardware| made the necessary modifications]] to use the serial port, have [[HOWTO:Connect_to_a_modified_router| connected to your backend router]] using serial communication software (such as PICOCOM), and have [[HOWTO:Build XINU#Cross-Compiler| built a cross-compiler]] (from your host computer's architecture to MIPS) and used it to [[HOWTO:Build XINU#Building the XINU Image|build a XINU boot image]] to run on the back end (a file called <code> xinu.boot </code> should be in your <code> compile </code> directory). If you have not it is suggested you visit http://mulug.mscs.mu.edu/xinu/ to understand what you need and why.<br />
<br />
<br />
== TFTP Server ==<br />
<br />
=== Installing the TFTP Server Package ===<br />
The first step in running your XINU image is to run a '''TFTP Server''' on your front end so that it can transfer the boot image onto the back end via the network connection. Getting a '''TFTP Server''' running on your front end is a fairly simple process on Linux. Use your front end's package install commands to search for a tftp-server package and then install that package. Using Fedora 9 and the YUM package install command, we entered the command <code> yum list | grep tftp </code> and obtained the following output:<br />
<pre>[root@argolis compile]# yum list | grep tftp<br />
tftp.i386 0.48-6.fc9 mulugupdates <br />
tftp-server.i386 0.48-6.fc9 mulugupdates <br />
[root@argolis compile]#</pre><br />
<br />
This command tells the package installer to find any packages with "tftp" in the title. We want the package called ''tftp-server.i386'' because this will allow us to run a '''TFTP-Server''' on our front end machine. Next, we need to actually install the package. Again we use our package install command to install the package. Using Fedora 9 and the YUM package install command, we entered the command <code> yum install tftp-server </code> and obtained the following output:<br />
<pre>[root@argolis compile]# yum install tftp-server<br />
Loaded plugins: refresh-packagekit<br />
Setting up Install Process<br />
Parsing package install arguments<br />
Resolving Dependencies<br />
--> Running transaction check<br />
---> Package tftp-server.i386 0:0.48-6.fc9 set to be updated<br />
--> Finished Dependency Resolution<br />
<br />
Dependencies Resolved<br />
<br />
=============================================================================<br />
Package Arch Version Repository Size <br />
=============================================================================<br />
Installing:<br />
tftp-server i386 0.48-6.fc9 mulugupdates 35 k<br />
<br />
Transaction Summary<br />
=============================================================================<br />
Install 1 Package(s) <br />
Update 0 Package(s) <br />
Remove 0 Package(s) <br />
<br />
Total download size: 35 k<br />
Is this ok [y/N]: yes<br />
Downloading Packages:<br />
(1/1): tftp-server-0.48-6.fc9.i386.rpm | 35 kB 00:00 <br />
Running rpm_check_debug<br />
Running Transaction Test<br />
Finished Transaction Test<br />
Transaction Test Succeeded<br />
Running Transaction<br />
Installing: tftp-server ######################### [1/1] <br />
<br />
Installed: tftp-server.i386 0:0.48-6.fc9<br />
Complete!<br />
[root@argolis compile]#</pre><br />
<br />
=== Configuring the TFTP Server ===<br />
Now that your '''TFTP Server''' package is installed, you need to configure some settings to get it to run properly. First open the file <code> /etc/xinetd.d/tftp</code>. ''xinetd'' is a server daemon that can run many different types of servers. Here, though, we're only interested in running a '''TFTP Server''', so we open the tftp configuration file for ''xinetd'' and make the necessary changes. At first, the file should look something like this:<br />
<pre># default: off<br />
# description: The tftp server serves files using the trivial file transfer \<br />
# protocol. The tftp protocol is often used to boot diskless \<br />
# workstations, download configuration files to network-aware printers, \<br />
# and to start the installation process for some operating systems.<br />
service tftp<br />
{<br />
socket_type = dgram<br />
protocol = udp<br />
wait = yes<br />
user = root<br />
server = /usr/sbin/in.tftpd<br />
server_args = -s /var/lib/tftpboot<br />
disable = yes<br />
per_source = 11<br />
cps = 100 2<br />
flags = IPv4<br />
}</pre><br />
<br />
You need to change the values of the <code> disable </code> and <code> server_args </code> variables. Change the value of <code> disable </code> to "no" and the value of <code> server_args </code> to point to the directory that will contain files you wish to share on your '''TFTP Server'''. In our lab we use the directory <code> /tftpboot </code>. You need to remember this directory because this is where you will need to put your <code> xinu.boot </code> file that you want to run on the back end. After you've made the necessary changes to the file <code> /etc/xinetd.d/tftp </code>, it should look like this:<br />
<pre># default: off<br />
# description: The tftp server serves files using the trivial file transfer \<br />
# protocol. The tftp protocol is often used to boot diskless \<br />
# workstations, download configuration files to network-aware printers, \<br />
# and to start the installation process for some operating systems.<br />
service tftp<br />
{<br />
socket_type = dgram<br />
protocol = udp<br />
wait = yes<br />
user = root<br />
server = /usr/sbin/in.tftpd<br />
server_args = -s /tftpboot<br />
disable = no<br />
per_source = 11<br />
cps = 100 2<br />
flags = IPv4<br />
}</pre><br />
<br />
If you are going to use our approach you may need to create a <code> /tftpboot </code> directory. To do this execute the following command: <code> mkdir /tftpboot </code>. Then you'll want to check to make sure that the ''xinetd'' is running, and make sure that its running a '''TFTP Server'''. Execute the command <code> chkconfig --list </code>. You should get output that looks like this:<br />
<pre>[root@argolis compile]# chkconfig --list<br />
NetworkManager 0:off 1:off 2:off 3:off 4:off 5:off 6:off<br />
acpid 0:off 1:off 2:on 3:on 4:on 5:on 6:off<br />
anacron 0:off 1:off 2:on 3:on 4:on 5:on 6:off<br />
atd 0:off 1:off 2:off 3:on 4:on 5:on 6:off<br />
auditd 0:off 1:off 2:on 3:on 4:on 5:on 6:off<br />
avahi-daemon 0:off 1:off 2:off 3:on 4:on 5:on 6:off<br />
...<br />
...<br />
...<br />
winbind 0:off 1:off 2:off 3:off 4:off 5:off 6:off<br />
wpa_supplicant 0:off 1:off 2:off 3:off 4:off 5:off 6:off<br />
xinetd 0:off 1:off 2:off 3:on 4:on 5:on 6:off<br />
xinu-consoled 0:off 1:off 2:off 3:on 4:on 5:on 6:off<br />
ypbind 0:off 1:off 2:off 3:off 4:off 5:off 6:off<br />
yum-updatesd 0:off 1:off 2:on 3:on 4:on 5:on 6:off<br />
<br />
xinetd based services:<br />
chargen-dgram: off<br />
chargen-stream: off<br />
cvs: off<br />
daytime-dgram: off<br />
daytime-stream: off<br />
discard-dgram: off<br />
discard-stream: off<br />
echo-dgram: off<br />
echo-stream: off<br />
rsync: off<br />
tcpmux-server: off<br />
tftp: on<br />
time-dgram: off<br />
time-stream: off<br />
[root@argolis compile]# </pre><br />
<br />
The important lines in this output are the ''xinetd'' line in the list of services and the ''tftp'' line at the bottom section of xinetd based services. Make sure that the ''xinetd'' line says "on" for 3, 4, and 5. Also make sure that the ''tftp'' line says "on".<br />
<br />
There are a couple other configurations that you may need to set up in order to get your '''TFTP Server''' running. If your front end is running a ''SE Linux'' firewall (our front end with a fresh install of Fedora 9 came running this firewall by default) you may have to configure it to allow clients to access your front end's '''TFTP Server''' running through ''xinetd''. The simplest solution is to just tell the ''SE Linux'' firewall to allow any activity over the network connection your front end is using to connect to the back end. Our front end machine is set up with two network cards and configured so that <code>eth0</code> is our network connection to the outside world and <code>eth1</code> is our connection to our back end. To tell the firewall to accept all activity over our network connection with the backend we used the command <code> iptables -I INPUT -i eth1 -j ACCEPT</code>. '''NOTE:''' this could be very dangerous because the connection between your front end and back end is now '''insecure'''. This should only be done if you trust all possible users of the backend because they now have unchecked access to your frontend machine.<br />
<br />
Also, you may need to configure your frontend's IP address. If you are using a DHCP server for your frontend machine you can simply execute <code> ifconfig eth0 -auto </code> on your backend's CFE prompt to obtain an IP for your backend automatically. However, most likely this is not the case and you will have to make sure that the network connection that your front end machine is using to communicate with the backend is configured with a static IP address in the 192.168.1.[2-255] range because your backend router will have a default IP address of 192.168.1.1 when it reboots. If it is the case that the IP address of your frontend machine's network connection with the backend is set outside of this range, then click [[HOWTO:Change your Frontend's IP Address | here]] for a quick tutorial on changing the IP address of your network connection.<br />
<br />
The last step before actually trying to boot your backend with a XINU image, is to copy the actual <code>xinu.boot</code> file to the directory from which the '''TFTP Server''' allows clients to get files. This is the directory that the <code> /etc/xinetd.d/tftp </code> file's <code> server_args </code> variable points to. In our example we used the directory <code> /tftpboot</code>. This is the directory where you need to copy the <code> xinu.boot </code> file. This is easily done by using a command like <code> cp xinu.boot /tftpboot/xinu.boot</code>, assuming that your current working directory contains the <code> xinu.boot </code> file and that <code> /tftpboot </code> is the directory from which your '''TFTP Server''' allows clients to get files.<br />
<br />
== Booting XINU on your Backend ==<br />
<br />
By now your '''TFTP Server''' should be up and running correctly, your <code> xinu.boot </code> file should be in the correct directory so your backend can access it through the TFTP protocol, and your frontend machine should either be running as a DHCP server or (more likely) has a static IP address in the 192.168.1.[2-255] range on its network connection with the backend.<br />
<br />
To boot your backend router running XINU, first make sure you are connected to the backend with some serial communication software and are at the CFE prompt. If you are not looking at the backend router's CFE prompt follow the instructions on how to [[HOWTO:Connect_to_a_modified_router| connect to your backend router]]. In the CFE prompt type the command <code> boot -elf [host ip]:xinu.boot </code> where "[host ip]" is the IP address of the frontend machine's connection to the backend router. If all has gone correctly the router should now be running a XINU image and you will be greeted with a basic shell (xsh$ ). On our frontend machine running Fedora 9 with an IP address of <code> 192.168.1.2 </code> we optained the following output:<br />
<pre>CFE> boot -elf 192.168.1.2:xinu.boot<br />
Loader:elf Filesys:tftp Dev:eth0 File:192.168.1.2:xinu.boot Options:(null)<br />
Loading: 0x80001000/114724 0x8001d024/18480 Entry at 0x80001000<br />
Closing network.<br />
Starting program at 0x80001000<br />
(Mips XINU) #0 (root@argolis.mscs.mu.edu) Mon Jun 23 17:47:42 CDT 2008<br />
<br />
16777216 bytes physical memory.<br />
4096 bytes reserved system area.<br />
133204 bytes XINU code.<br />
32764 bytes stack space.<br />
16607152 bytes heap space.<br />
<br />
______________________________________<br />
_ _ _____ ______ _ _ <br />
\ \ / /(_____)| ___ \ | | | |<br />
\ \/ / _ | | | || | | |<br />
) ( | | | | | || | | |<br />
/ /\ \ _| |_ | | | || |___| |<br />
/_/ \_\(_____)|_| |_| \______|<br />
______________________________________<br />
<br />
Welcome to the wonderful world of XINU!<br />
xsh$ </pre><br />
<br />
Within the shell you have some basic commands: exit, gpiostat, help, kill, memstat, led, ps, reset, sleep, uartstat. Each can be described using [command] --help. <br />
<pre>xsh$ help<br />
Shell Commands:<br />
clear<br />
ethstat<br />
exit<br />
gpiostat<br />
help<br />
kill<br />
led<br />
memstat<br />
memdump<br />
ps<br />
reset<br />
sleep<br />
test<br />
testsuite<br />
uartstat<br />
nvram<br />
?<br />
xsh$ </pre><br />
<br />
Congratulations, You now have a working backend running XINU! You can now make changes to the XINU code, recompile it using the <code> make </code> command to get a new <code> xinu.boot </code> image, copy that file into the <code> /tftpboot </code> directory (or whatever directory your '''TFTP Server''' uses to share files), and use the same <code> boot -elf [host ip]:xinu.boot </code> command to run your very own, modified version of the XINU operating system.<br />
<br />
<br />
== What to do next? ==<br />
<br />
Now that you have successfully booted and ran XINU on your backend router, you might want to try to [[HOWTO:Build_Backend_Pool|build a pool of backends]] to allow multiple users to each run their own version of XINU on a different backend.<br />
<br />
For more information on the XINU operating system check out the Embedded XINU wiki [http://mulug.mscs.mu.edu/xinu/].<br />
<br />
<br />
<hr/><br />
''This work is supported in part by NSF grant DUE-CCLI-0737476.''</div>Brylow