se3910-5-2-InterruptsAndScheduling

Download Report

Transcript se3910-5-2-InterruptsAndScheduling

SE-3910
Real-time Systems
• Week 5, Class 2
– Lab turn-in page is up!
– Lost-and-not-found power supply
– Quick-Quiz (Ungraded)
– Use interrupts in a Linux/C environment
• Watchdog follow-up
– Watchdog demo
– (Tentative) HOW to set time-out for watchdog
– Bash Scripting
– Real-Time OS’s
SE-3910 - Dr. Josiah Yoder
Slide style: Dr. Hornick
Much Material: Dr. Schilling, Some from Dr.
Hornick, etc.
1
Quick Quiz! (1)
How do you get a reference (pointer) to the first
element in an array?
int x[5] = {1,2,3,4,5}
boolean foo(int *ip);
a) foo(&x);
b) foo(&x[0]);
c) foo(x);
d) foo(x[0]);
SE-3910 - Dr. Josiah Yoder
Slide style: Dr. Hornick
Much Material: Dr. Schilling
2
Quick Quiz! (2)
How do you get a reference (pointer) to the
second element in an array?
int x[5] = {1,2,3,4,5}
boolean foo(int *ip);
a) foo(&x+1);
b) foo(&x[0]);
c) foo(x+1);
d) foo(x[0]);
e) foo(&(x+1));
SE-3910 - Dr. Josiah Yoder
Slide style: Dr. Hornick
Much Material: Dr. Schilling
3
Real-Time Operating Systems
• What does an operating system REALLY need?
– Essential
•
•
•
•
Scheduler
Memory allocation (e.g. malloc)
File system
Interrupts
– Important
• Protection (security) (if on network)
– Less important
• Networking
• Protection (security) (if off network)
– Nice to have
• GUI
• Virtual memory
• Multithreading
SE-3910 - Dr. Josiah Yoder
Slide style: Dr. Hornick
Much Material: Dr. Schilling
4
UNIX Operating System
• Common driver strategies
– Write to a file
– Read from a file
– ioctl (system call)
– Short programs that wrap ioctl calls
– [Addendum] “system calls” from C programs
(which don’t really call the kernel, but rather
execute the short command-line programs
mentioned above or execute a program that
reads/writes from
a file…
SE-3910 - Dr. Josiah Yoder
Slide style: Dr. Hornick
Much Material: Dr. Schilling
5
Scripting
• Why learn scripting?
– Faster to write than compiled code
• Why learn command-line (bash) scripting?
– Command line works very naturally with files
– UNIX/Linux runs on files
SE-3910 - Dr. Josiah Yoder
Slide style: Dr. Hornick
Much Material: Dr. Schilling
6
Starting a Script
• (More details)
• Put the following into a file (e.g. script)
#!/bin/bash
echo "Hello World"
# other fun
• Now, run this command to make it executable
chmod u+x script
• Now run the script like this:
./script
SE-3910 - Dr. Josiah Yoder
Slide style: Dr. Hornick
Much Material: Dr. Schilling
7
Variables
Set a variable
export myVar="This is a variable"
Read a variable, printing to standard out:
echo $myVar
Increment a Variable
export myVar=$((myVar+1))
Other integer math
export myVar=$((myVar+1))
SE-3910 - Dr. Josiah Yoder
Slide style: Dr. Hornick
Much Material: Dr. Schilling
8
Arguments
• Suppose we run our script like this:
./script arg1 arg2 arg3
• And inside the script, we run this command:
echo "argument 3 is: $3"
• This will print:
argument 3 is: arg3
SE-3910 - Dr. Josiah Yoder
Slide style: Dr. Hornick
Much Material: Dr. Schilling
9
Quoting - Escapes
• Suppose we run
./script "this is a test" "of" "arguments"
• The quotes group the words …
echo "arg1: $1"
echo "arg2: $2"
echo "arg3: $3"
• will print
arg1: this is a test
arg2: of
arg3: arguments
SE-3910 - Dr. Josiah Yoder
Slide style: Dr. Hornick
Much Material: Dr. Schilling
10
Quoting - Escapes
In the example from the previous section,
echo "arg1: $1"
prints
arg1: this is a test
but
echo 'arg1: $1'
prints
arg1: $1
Escapes (e.g. "\\, \n, \r") are also useful.
SE-3910 - Dr. Josiah Yoder
Slide style: Dr. Hornick
Much Material: Dr. Schilling
11
Quoting Challenge:
• How do I run an ssh command like this
– ssh host “command to run”
• But give “to run” as a single argument?
• Hint: Use escapes!
• Hint2: Command to run will be interpretted
twice.
SE-3910 - Dr. Josiah Yoder
Slide style: Dr. Hornick
Much Material: Dr. Schilling
12
Conditionals
(More details) (UPDATED link at end of lab)
Comparison
if test "$var1" = "$var2”; then
echo "true"
else
echo "false"
fi
If file “$var1” exists…
if test –e "$var1"; then
echo "true"
fi
SE-3910 - Dr. Josiah Yoder
Slide style: Dr. Hornick
Much Material: Dr. Schilling
13
“Counting” Loops
Counting loop (my preferred approach)
for i in `seq 1 10`; do
echo $i;
done;
Processing files in current directory
for i in *.pdf; do
echo cp $i ${i/.pdf}.bak.pdf;
done;
# (Untested – test before use!)
SE-3910 - Dr. Josiah Yoder
Slide style: Dr. Hornick
Much Material: Dr. Schilling
14
“Sentinal” loops
Loop while command succeeds (returns 0)
while command
echo "looping"
done;
Keep looping as long as the command fails.
while !command
echo "looping"
done;
Keep looping as long as test is “true”
while test …
SE-3910 - Dr. Josiah Yoder
Slide style: Dr. Hornick
Much Material: Dr. Schilling
15
Useful commands
• Useful commands
– sleep 0.5 will sleep for half a second
– time command args1 arg2 arg3
– will measure how long it takes
– command arg1 arg2 arg3 to run
SE-3910 - Dr. Josiah Yoder
Slide style: Dr. Hornick
Much Material: Dr. Schilling
16
References for scripting
One of the main resources linked from above:
http://linuxcommand.org/writing_shell_scripts.php
For if test …, I like this one better
http://www.tldp.org/LDP/Bash-BeginnersGuide/html/sect_07_01.html
Intro to variables (possibly useful)
http://www.tldp.org/LDP/abs/html/param
eter-substitution.html
SE-3910 - Dr. Josiah Yoder
Slide style: Dr. Hornick
Much Material: Dr. Schilling
17
Watchdog On the Beaglebone
• http://beaglebone.cameon.net/home/watchd
og-timer
• Open the file /dev/watchdog
• Do not close the file
• Write something (e.g. "\n") to the file at least
every 59 seconds to keep the system running
DEMO
• Yes, it is possible to change the time.
DEMO? DETAILS?
SE-3910 - Dr. Josiah Yoder
Slide style: Dr. Hornick
Much Material: Dr. Schilling
18
Command-Line Cheat-sheet
• I’m working on one
• I’ve got links to online ones I like
• Just ask me
SE-3910 - Dr. Josiah Yoder
Slide style: Dr. Hornick
Much Material: Dr. Schilling
19
Demo – Connecting to Beaglebone
• [TODO]
– I plan to put instructions for setting up a DHCP
server on your laptop using “connection sharing”
– You know my number.
SE-3910 - Dr. Josiah Yoder
Slide style: Dr. Hornick
Much Material: Dr. Schilling
20
Demo – Watchdog
• [See computer]
SE-3910 - Dr. Josiah Yoder
Slide style: Dr. Hornick
Much Material: Dr. Schilling
21