210 likes | 364 Views
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. Quick Quiz! (1).
E N D
SE-3910Real-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.
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); • foo(&x); • foo(&x[0]); • foo(x); • foo(x[0]); SE-3910 - Dr. Josiah Yoder Slide style: Dr. Hornick Much Material: Dr. Schilling
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); • foo(&x+1); • foo(&x[0]); • foo(x+1); • foo(x[0]); • foo(&(x+1)); SE-3910 - Dr. Josiah Yoder Slide style: Dr. Hornick Much Material: Dr. Schilling
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
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
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
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
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
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
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
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
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
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
“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
“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 … echo "looping" done; SE-3910 - Dr. Josiah Yoder Slide style: Dr. Hornick Much Material: Dr. Schilling
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
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-Beginners-Guide/html/sect_07_01.html Intro to variables (possibly useful) http://www.tldp.org/LDP/abs/html/parameter-substitution.html SE-3910 - Dr. Josiah Yoder Slide style: Dr. Hornick Much Material: Dr. Schilling
Watchdog On the Beaglebone • http://beaglebone.cameon.net/home/watchdog-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
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
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
Demo – Watchdog • [See computer] SE-3910 - Dr. Josiah Yoder Slide style: Dr. Hornick Much Material: Dr. Schilling