-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathpseudos.html
130 lines (108 loc) · 5.05 KB
/
pseudos.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>
Sophia Li: PseudOS
</title>
<!--[if IE]><script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script><![endif]-->
<link rel='stylesheet' href='css/stylesheet.css' type="text/css"/>
<script src="js/jquery-1.7.2.min.js"></script>
</head>
<body>
<div class="content">
<div class="container">
<div class="navbar">
<table class="navtable">
<tr>
<td><a href="index.html">Home</a></td>
<td><a href="resume.html">Resume</a></td>
<td><a href="about.html">About</a></td>
<td><a href="contact.html">Contact</a></td>
<td><a href="http://blog.justsophie.com">Blog</a></td>
</tr>
</table>
</div>
</br>
<h1 style="margin-bottom:0;"><a href="portfolio.html">Portfolio</a>.PseudOS</h1>
<table class="navtable2">
<tr>
<td><a href="edwin.html"><</a></td>
<td><div id="list"><font color="#5cd9fd">LIST</font></div></td>
<td><a href="pendulum.html">></a></td>
</tr>
</table>
<div class="proj_list">
<a href="website.html">website; </a>
<a href="edwin.html">edwin; </a>
<a href="pseudos.html">pseudOS; </a>
<a href="pendulum.html">pendulum; </a>
<a href="poe.html">desktop_companion; </a>
<a href="walle.html">wall-e; </a>
<a href="underwater.html">underwater_vision; </a>
<a href="jimmy.html">jimmy; </a>
<a href="genecar.html">genetic_car; </a>
</div>
</br>
> ./intro</br>
<iframe src="https://www.youtube.com/embed/jyQzcuLt2gA?rel=0&controls=1&showinfo=0" width="560" height="315" frameborder="0" allowfullscreen="allowfullscreen"></iframe></br>
<!-- <img src='img/pseudos/pseudOS.jpg' height='250px'> -->
<!-- <img src='img/edwin/head_large.jpg' height='250px'> --></br>
<a href="https://github.com/aloverso/SoftwareSystems/tree/master/os">download source code</a></br>
</br>
> ./stats</br>
Status: Completed Dec/2015 </br>
Languages: C, Assembly</br>
Software: PuTTY, QEMU</br>
Hardware: Raspberry Pi2, UART Cable</br>
Documentation: Complete -- <a href="http://blog.justsophie.com/pseudos-a-baremetal-raspberry-pi-os/" target="_blank">Verbose Debrief</a></br>
</br>
> ./documentation</br>
<div class="text_holder">
PseudOS is basic implementation of a baremetal Raspberry PI operating system.</br>
</br>
Take a look at the video above for a demonstration of how it works. We demonstrate that our operating system can simultaneously blink the status LED on the RaspPi while listening for commands over UART.</br>
</br>
Here's the slide deck we made for our final presentation.</br>
<iframe src="https://docs.google.com/presentation/d/1KcVODY3Bz0wwpP2_ySXiIo7kfaCRkcswHA8EwpAhRBQ/embed?start=false&loop=true&delayms=30000" width="540" height="315" frameborder="0" allowfullscreen="allowfullscreen"></iframe>
</br></br>
As this was all baremetal programming, any functions we wanted in our OS we had to implement ourselves. The lack of malloc() and free() was somewhat of an issue, but we skirted around it by passing all the necessary variables around by reference. We didn't write any video drivers, so PseudOS itself is completely UART based and must be accessed via PuTTY when running on the RaspPi, or through the text interface when virtualized through QEMU.
</br></br>
My major contributions to this project were the command line and the calculator.
</br></br>
We wrote a pseudo-command line to allow control of the OS, which allows the user to write anything in an 80-character array that automatically checks for overflow. Currently, the OS can recognize four commands, "calc", "blink", "help", and "stop". You can see this functionality in the video above.
</br></br>
The calculator application lets the user add, subtract, multiple, or divide with positive or negative integers. The challenge for this was largely in converting UART character arrays into integers and vice versa. Solving the suspiciously interview-question-esque problem was actually pretty fun. Ultimately, the conversion was done with some ASCII to int conversions and modular math. The code for this can be viewed in the Github link and in the slideshow above.
</div>
</br>
</br>
<div class="text">> </div>
<div class="cursor">|</div>
</br>
</br>
</div>
<!-- <div class="footer">© Sophia Li 2016</div> -->
</div>
<script type="text/javascript">
$(".proj_list").hide();
$(document).ready(function(){
setInterval('cursorAnimate()', 800);
setInterval('$(".proj_list").hide()', 10000);
$("#list").hover(function(){
$(".proj_list").show();
},
function(){
$(this).removeClass("hover");
});
});
function cursorAnimate(){
$('.cursor').animate({
opacity: 0
}, 'medium', 'swing').animate({
opacity: 1
}, 'medium', 'swing');
}
</script>
</body>
</html>