1 / 21

SE-3910 Real-time Systems

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).

jamuna
Download Presentation

SE-3910 Real-time Systems

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 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.

  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); • foo(&x); • foo(&x[0]); • foo(x); • foo(x[0]); SE-3910 - Dr. Josiah Yoder Slide style: Dr. Hornick Much Material: Dr. Schilling

  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); • 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

  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

  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

  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

  7. 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

  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

  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

  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

  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

  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

  13. 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

  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

  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

  16. 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

  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/parameter-substitution.html SE-3910 - Dr. Josiah Yoder Slide style: Dr. Hornick Much Material: Dr. Schilling

  18. 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

  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

  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

  21. Demo – Watchdog • [See computer] SE-3910 - Dr. Josiah Yoder Slide style: Dr. Hornick Much Material: Dr. Schilling

More Related