summaryrefslogtreecommitdiff
path: root/www
diff options
context:
space:
mode:
Diffstat (limited to 'www')
-rw-r--r--www/devcon/IMG_4083.JPGbin0 -> 739023 bytes
-rw-r--r--www/devcon/IMG_4084.JPGbin0 -> 744194 bytes
-rw-r--r--www/devcon/IMG_4085.JPGbin0 -> 807416 bytes
-rw-r--r--www/devcon/IMG_4086.JPGbin0 -> 626454 bytes
-rw-r--r--www/devcon/IMG_4087.JPGbin0 -> 904011 bytes
-rw-r--r--www/devcon/IMG_4088.JPGbin0 -> 1012372 bytes
-rw-r--r--www/devcon/IMG_4089.JPGbin0 -> 1006566 bytes
-rw-r--r--www/devcon/bildtext.txt5
-rw-r--r--www/devcon/img4083.jpgbin0 -> 67794 bytes
-rw-r--r--www/devcon/img4083t.jpgbin0 -> 12444 bytes
-rw-r--r--www/devcon/img4084.jpgbin0 -> 80091 bytes
-rw-r--r--www/devcon/img4084t.jpgbin0 -> 16550 bytes
-rw-r--r--www/devcon/img4085.jpgbin0 -> 90051 bytes
-rw-r--r--www/devcon/img4085t.jpgbin0 -> 10035 bytes
-rw-r--r--www/devcon/img4086.jpgbin0 -> 56036 bytes
-rw-r--r--www/devcon/img4086t.jpgbin0 -> 12220 bytes
-rw-r--r--www/devcon/img4087.jpgbin0 -> 79846 bytes
-rw-r--r--www/devcon/img4087t.jpgbin0 -> 8665 bytes
-rw-r--r--www/devcon/img4088.jpgbin0 -> 112641 bytes
-rw-r--r--www/devcon/img4088t.jpgbin0 -> 11368 bytes
-rw-r--r--www/devcon/img4089.jpgbin0 -> 101347 bytes
-rw-r--r--www/devcon/img4089t.jpgbin0 -> 18188 bytes
-rw-r--r--www/devcon/index.t132
-rwxr-xr-xwww/devcon/show.cgi96
24 files changed, 233 insertions, 0 deletions
diff --git a/www/devcon/IMG_4083.JPG b/www/devcon/IMG_4083.JPG
new file mode 100644
index 0000000000..d6ed305045
--- /dev/null
+++ b/www/devcon/IMG_4083.JPG
Binary files differ
diff --git a/www/devcon/IMG_4084.JPG b/www/devcon/IMG_4084.JPG
new file mode 100644
index 0000000000..fedff94c8e
--- /dev/null
+++ b/www/devcon/IMG_4084.JPG
Binary files differ
diff --git a/www/devcon/IMG_4085.JPG b/www/devcon/IMG_4085.JPG
new file mode 100644
index 0000000000..d592852b0d
--- /dev/null
+++ b/www/devcon/IMG_4085.JPG
Binary files differ
diff --git a/www/devcon/IMG_4086.JPG b/www/devcon/IMG_4086.JPG
new file mode 100644
index 0000000000..758c6ad3fb
--- /dev/null
+++ b/www/devcon/IMG_4086.JPG
Binary files differ
diff --git a/www/devcon/IMG_4087.JPG b/www/devcon/IMG_4087.JPG
new file mode 100644
index 0000000000..15846b5a9b
--- /dev/null
+++ b/www/devcon/IMG_4087.JPG
Binary files differ
diff --git a/www/devcon/IMG_4088.JPG b/www/devcon/IMG_4088.JPG
new file mode 100644
index 0000000000..53c760d9aa
--- /dev/null
+++ b/www/devcon/IMG_4088.JPG
Binary files differ
diff --git a/www/devcon/IMG_4089.JPG b/www/devcon/IMG_4089.JPG
new file mode 100644
index 0000000000..00dacfc742
--- /dev/null
+++ b/www/devcon/IMG_4089.JPG
Binary files differ
diff --git a/www/devcon/bildtext.txt b/www/devcon/bildtext.txt
new file mode 100644
index 0000000000..f8869f815c
--- /dev/null
+++ b/www/devcon/bildtext.txt
@@ -0,0 +1,5 @@
14083: Comparison between Recorder and Player
24084: Contest: Spot the development box!
34086: A stack of "virgins"!
44087: A pre-4.50 player (left) and a post-4.50 player (right).
54089: There's lots of fun to be had with these things!
diff --git a/www/devcon/img4083.jpg b/www/devcon/img4083.jpg
new file mode 100644
index 0000000000..e26cb18829
--- /dev/null
+++ b/www/devcon/img4083.jpg
Binary files differ
diff --git a/www/devcon/img4083t.jpg b/www/devcon/img4083t.jpg
new file mode 100644
index 0000000000..b615af2d92
--- /dev/null
+++ b/www/devcon/img4083t.jpg
Binary files differ
diff --git a/www/devcon/img4084.jpg b/www/devcon/img4084.jpg
new file mode 100644
index 0000000000..9dbd59ae86
--- /dev/null
+++ b/www/devcon/img4084.jpg
Binary files differ
diff --git a/www/devcon/img4084t.jpg b/www/devcon/img4084t.jpg
new file mode 100644
index 0000000000..31c2b6e9a7
--- /dev/null
+++ b/www/devcon/img4084t.jpg
Binary files differ
diff --git a/www/devcon/img4085.jpg b/www/devcon/img4085.jpg
new file mode 100644
index 0000000000..376a8f31ae
--- /dev/null
+++ b/www/devcon/img4085.jpg
Binary files differ
diff --git a/www/devcon/img4085t.jpg b/www/devcon/img4085t.jpg
new file mode 100644
index 0000000000..52f3afe1c3
--- /dev/null
+++ b/www/devcon/img4085t.jpg
Binary files differ
diff --git a/www/devcon/img4086.jpg b/www/devcon/img4086.jpg
new file mode 100644
index 0000000000..051361c30b
--- /dev/null
+++ b/www/devcon/img4086.jpg
Binary files differ
diff --git a/www/devcon/img4086t.jpg b/www/devcon/img4086t.jpg
new file mode 100644
index 0000000000..18736fecb1
--- /dev/null
+++ b/www/devcon/img4086t.jpg
Binary files differ
diff --git a/www/devcon/img4087.jpg b/www/devcon/img4087.jpg
new file mode 100644
index 0000000000..2c047babe3
--- /dev/null
+++ b/www/devcon/img4087.jpg
Binary files differ
diff --git a/www/devcon/img4087t.jpg b/www/devcon/img4087t.jpg
new file mode 100644
index 0000000000..89ed22845e
--- /dev/null
+++ b/www/devcon/img4087t.jpg
Binary files differ
diff --git a/www/devcon/img4088.jpg b/www/devcon/img4088.jpg
new file mode 100644
index 0000000000..f2cb22fb65
--- /dev/null
+++ b/www/devcon/img4088.jpg
Binary files differ
diff --git a/www/devcon/img4088t.jpg b/www/devcon/img4088t.jpg
new file mode 100644
index 0000000000..520023100d
--- /dev/null
+++ b/www/devcon/img4088t.jpg
Binary files differ
diff --git a/www/devcon/img4089.jpg b/www/devcon/img4089.jpg
new file mode 100644
index 0000000000..a21385f118
--- /dev/null
+++ b/www/devcon/img4089.jpg
Binary files differ
diff --git a/www/devcon/img4089t.jpg b/www/devcon/img4089t.jpg
new file mode 100644
index 0000000000..b3443677f5
--- /dev/null
+++ b/www/devcon/img4089t.jpg
Binary files differ
diff --git a/www/devcon/index.t b/www/devcon/index.t
new file mode 100644
index 0000000000..8f0e1d78e7
--- /dev/null
+++ b/www/devcon/index.t
@@ -0,0 +1,132 @@
1#define _PAGE_ Rockbox Developer Conference 2002
2#include "head.t"
3
4<table align="right"><tr><td><a href="show.cgi?img4083.jpg"><img src="img4083t.jpg" alt="photo" border=0 width=200 height=150></a><br><small><i>Comparison of Recorder and Player</i></small></td></tr></table>
5
6<p>Well, almost. :-) Björn, Linus, Daniel and Kjell sat down at Linus' house
7friday night (2002-04-19) with our Archoses and had a long and fruitful discussion about software design.
8Here are a few things that we discussed:
9
10<h2>Application Programming Interfaces</h2>
11
12<p>We want to try to stick to POSIX where these exist and are practical. The
13reason is simply that many people already know these APIs well. Here are a
14few which haven't already been defined in the code:
15
16<h3>File operations</h3>
17<ul>
18<li>open
19<li>close
20<li>read
21<li>write
22<li>seek
23<li>unlink
24<li>rename
25</ul>
26
27<table align="right"><tr><td><a href="show.cgi?img4084.jpg"><img src="img4084t.jpg" alt="photo" border=0 width=200 height=150></a>
28<br><small><i>Contest: Spot the development box!</i></small></td></tr></table>
29
30<h3>Directory operations</h3>
31<ul>
32<li>opendir
33<li>closedir
34<li>readdir
35</ul>
36
37<h3>Disk operations</h3>
38<ul>
39<li>readblock
40<li>writeblock
41<li>spindown
42<li>diskinfo
43<li>partitioninfo
44</ul>
45
46<p>We also decided that we will use the 'newlib' standard C library,
47replacing some functions with smaller variants as we move forward.
48
49<h2>Multitasking</h2>
50
51<p>We spent much time discussing and debating task scheduling, or the lack
52thereof. First, we went with the idea that we don't really need "real"
53scheduling. Instead, a simple "tree-task" system would be used: A
54main-loop, a timer tick and a "bottom half" low-priority interrupt, each
55with an event queue.
56
57<p>Pretty soon we realized that we will want to:
58
59<ol style="a">
60<li> Use a timer tick to poll disk I/O (assuming we can't get an interrupt)
61<li> Perform slow disk operations in both the MP3->DAC feeder and the user
62 interface, sometimes at the same time.
63<li> Not lock up the user interface during I/O.
64</ol>
65
66<table align="right"><tr><td><a href="show.cgi?img4086.jpg"><img src="img4086t.jpg" alt="photo" border=0 width=200 height=150></a>
67<br><small><i>A stack of "virgins"!</i></small></td></tr></table>
68
69<p>At the same time, we agreed that we should not walk into the common trap
70of engaging in "job splitting". That is, to split up jobs in small chunks
71so they don't take so long to finish. The problem with job splitting is
72that it makes the code flow very complex.
73
74<p>After much scratching our collective heads over how to make a primitive
75"three-task" system be able to do everything we wanted without resorting
76to complex job splitting, we finally came to the conclusion that we were
77heading down the wrong road:
78
79<p><blockquote>
80 <b>We need threading.</b>
81</blockquote>
82
83<p>Even though a scheduler adds complexity, it makes the rest of the code so
84much more straight-forward that the total net result is less overall
85complexity.
86
87<p>To keep it simple, we decided to use a cooperative scheduler. That is, one
88in which the threads themselves decide when scheduling is performed. The
89big gain from this, apart from making the scheduler itself less complex,
90is that we don't have to worry as much about making all code "multithread
91safe".
92
93<p>Affording ourselves the luxury of threads, we soon identified four basic
94threads:
95
96<ul>
97<li>Disk thread, performing all disk operations
98<li>UI thread, handling the user interface
99<li>MP3 feed thread, making sure the MAS is fed with data at all times
100<li>I2C thread, handling the sometimes very relaxed timing of the I2C bus
101</ul>
102
103<p>Threads use message passing between them and each have a message queue
104associated to it.
105
106<table align="right"><tr><td><a href="show.cgi?img4089.jpg"><img src="img4089t.jpg" alt="photo" border=0 width=200 height=150></a>
107<br><small><i>There's much fun to be had with these things!</i></small></td></tr></table>
108
109<p>In addition to the threads, we need a timer interrupt with the ability to
110send messages to threads at specific intervals. This will also be used to
111scan the keys of the jukebox and handle key repeat detection (when a key
112has been pressed for a number of ticks).
113
114<p>None of these things are, of course, written in stone. Feel free to
115comment, discuss and argue about them!
116
117<p>We are currently 89 subscribers to this list. If you want to get more
118deeply involved in what's going on, I encourage you to:
119
120<ul>
121<li>Subscribe to the rockbox-cvs list, to see all code that goes in.
122<li>Join the #rockbox channel on irc.openprojects.net. There are always a
123couple of us in there.
124</ul>
125
126<p>I have written a set of guidelines for contributing code to the project.
127Take a look at them in CVS or here:
128<a href="http://bjorn.haxx.se/rockbox/firmware/CONTRIBUTING">CONTRIBUTING</a>
129
130<p>/Björn
131
132#include "foot.t"
diff --git a/www/devcon/show.cgi b/www/devcon/show.cgi
new file mode 100755
index 0000000000..c8123b38e0
--- /dev/null
+++ b/www/devcon/show.cgi
@@ -0,0 +1,96 @@
1#!/usr/bin/perl
2
3use File::Basename;
4
5$cgi = basename $0;
6
7print "Content-Type: text/html\n\n";
8
9$image = $ARGV[0];
10
11$image =~ /img(\d+)/;
12
13print "<html><head><title>Rockbox - Photo $1</title></head>\n";
14print "<body bgcolor=black text=white link=white vlink=gray>\n";
15
16if ($image eq "" ) {
17 print "<p>No image specified\n";
18 exit;
19}
20
21print "<h1>&nbsp;</h1><div align=center><img src=$image>\n";
22
23# compressed image
24if ( $image =~ /img(\d+).jpg/ ) {
25 $num = $1;
26 for $i ( 1 .. 10 ) {
27 $prev = sprintf("%04d",$num-$i);
28 last if ( -f "img$prev.jpg" );
29 }
30 if ( $prev == $num-10 ) {
31 undef $prev;
32 }
33
34 for $i ( 1 .. 20 ) {
35 $next = sprintf("%04d",$num+$i);
36 print "<!-- Trying $next -->\n";
37 last if ( -f "img$next.jpg" );
38 }
39 if ( $next == $num+20 ) {
40 undef $next;
41 }
42
43 if ( -f "bildtext.txt" ) {
44 open FILE, "<bildtext.txt";
45 @txt = <FILE>;
46 close FILE;
47 @match = grep /^$num: /, @txt;
48 if ( $match[0] =~ /^$num: (.*)/ ) {
49 print "<p><i>$1</i>\n";
50 }
51 }
52
53
54 print "<p>\n";
55 print "<a href=$cgi?img$prev.jpg>&lt; Previous</a> &nbsp; \n" if ( $prev );
56 print "<a href=.>Index</a>\n";
57 if ( -f "IMG_$num.JPG" ) {
58 $size = int( (stat("IMG_$num.JPG"))[7] / 1024 );
59 print " &nbsp; <a href=IMG_$num.JPG>Fullsize ($size kB)</a>\n";
60 }
61
62 print " &nbsp; <a href=$cgi?img$next.jpg>Next &gt;</a>\n" if ( $next );
63
64}
65
66# showing fullsize already
67elsif ( $image =~ /IMG_(\d+).JPG/ ) {
68 $num = $1;
69 for $i ( 1 .. 10 ) {
70 $prev = sprintf("%04d",$num-$i);
71 last if ( -f "IMG_$prev.JPG" );
72 }
73 if ( $prev == $num-10 ) {
74 undef $prev;
75 }
76
77 for $i ( 1 .. 20 ) {
78 $next = sprintf("%04d",$num+$i);
79 print "<!-- Trying $next -->\n";
80 last if ( -f "IMG_$next.JPG" );
81 }
82 if ( $next == $num+20 ) {
83 undef $next;
84 }
85
86 print "<p>\n";
87 print "<a href=$cgi?IMG_$prev.JPG>&lt; Previous</a> &nbsp; \n" if ( $prev );
88 print "<a href=.>Index</a>\n";
89 if ( -f "img$num.jpg" ) {
90 $size = int( (stat("img$num.jpg"))[7] / 1024 );
91 print " &nbsp; <a href=img$num.jpg>Small ($size kB)</a>\n";
92 }
93
94 print " &nbsp; <a href=$cgi?IMG_$next.JPG>Next &gt;</a>\n" if ( $next );
95}
96print "</div></body></html>\n";