Download presentation
Presentation is loading. Please wait.
Published byAron Simon Modified over 9 years ago
1
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
2
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
3
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
4
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
5
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
6
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
7
Starting a Script (More details)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
8
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
9
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
10
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
11
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
12
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
13
Conditionals (More details) (UPDATED link at end of lab)More details 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
14
“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
15
“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 15
16
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
17
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/param eter-substitution.html 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
18
Watchdog On the Beaglebone http://beaglebone.cameon.net/home/watchd og-timer 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
19
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
20
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
21
Demo – Watchdog [See computer] SE-3910 - Dr. Josiah Yoder Slide style: Dr. Hornick Much Material: Dr. Schilling 21
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.