<!doctypehtml><html lang=en><title>
   Linux Device Driver Training - Development and Administration Classes
  </title><meta content="text/html; charset=utf-8"http-equiv=Content-Type><meta name="We provide Linux training for busy IT professionals. We provide Linux certification bootcamp, Linux for beginners, and onsite linux classes. All attendees get a free linux laptop."><meta content="Linux Certification LinuxCertification LinuxCert Linux Training Linux for beginners LPI Linux Professional Linux bootcamp"name=keywords><meta content="Linux Device Driver Training"name=description><meta charset=utf-8><link href=favicon.png rel=icon type=image/x-icon><meta content=width=device-width,initial-scale=1 name=viewport><link href=dist/css/bootstrap.css rel=stylesheet><link href=css/starter-template.css rel=stylesheet><link href=http://fonts.googleapis.com/css?family=Roboto rel=stylesheet><script>(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-57339832-1', 'auto');
ga('send', 'pageview');</script><body><noscript><iframe height=0 src=//www.googletagmanager.com/ns.html?id=GTM-KD6288 style=display:none;visibility:hidden width=0></iframe></noscript><script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'//www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-KD6288');</script><div class="navbar-fixed-top navbg"><div class="container-fluid pad10"><div class="col-xs-12 col-sm-4 col-lg-6 mobilecentre"><a href=index.html> <img alt border=0 class=img-responsive src=images/logo.jpg> </a></div><div class="col-xs-12 col-sm-8 col-lg-6 text-right mobilepadnone padtop30"><div><ul class=topicons><li><img alt height=22 src=images/topphoneicon.jpg width=30> <a href=tel:18778006873> 1 877 800 6873 </a><li><img alt height=22 src=images/topphoneicon.jpg width=30> <a href=mailto:info@linuxcertified.com> info@linuxcertified.com </a><li><a href=http://www.facebook.com/pages/Linuxcertified/317185705031633> <img alt height=20 src=images/f.jpg width=21> </a> <a href=#> <img alt height=20 src=images/g.jpg width=21> </a> <a href=http://twitter.com/Linuxcertified> <img alt height=20 src=images/t.png width=21> </a></ul></div></div><div class=clearfix></div></div></div><div class=innerbanner><img alt class=img-responsive height=288 src=images/innerpagebanner.jpg width=1366></div><div class=innerpagewarp><div class=container><div><a class="btn btn-default btn-lg fbtn"href=linuxtraining.html role=button> Linux & Open-Source Training </a><a class="btn btn-default btn-lg fbtngray"href=linux_laptops.html role=button> Linux Laptops </a><a class="btn btn-default btn-lg fbtngray"href=linux-services.html role=button> Linux Services </a></div></div><div class=graybg><div class="col-sm-4 col-lg-3 hidden-xs"><ul class=innerpageleftmenu><li><a href=class_offerings.html> Class Offerings </a><li><a href=class_schedule.html> Class Schedule </a><li><a href=distance_learning.html> Distance Learning </a><li><a href=on_site.html> On-Site </a><li><a href=Academic_program.html> Academic Program </a><li><a href=certification.html> Certification </a><li><a href=linux-courseware.html> Courseware </a></ul></div><div class="visible-xs col-sm-4"><div class=dropdown><button class="btn btn-primary dropdown-toggle"data-toggle=dropdown type=button>Menu <span class=caret> </span></button><ul class="dropdown-menu innerpageleftmenu"><li><a href=class_offerings.html> Class Offerings </a><li><a href=class_schedule.html> Class Schedule </a><li><a href=distance_learning.html> Distance Learning </a><li><a href=on_site.html> On-Site </a><li><a href=Academic_program.html> Academic Program </a><li><a href=certification.html> Certification </a><li><a href=linux-courseware.html> Courseware </a></ul></div></div><div class="col-xs-12 col-sm-8 col-lg-9 divBack"><h1 class=subTopPadding>Linux Device Driver Training</h1><p><b> Linux Device Driver Development Course </b><p>Overall objective of this class is to teach attendees on how to develop device drivers for Linux.<p>This three day course provides substantial practice with the key steps in developing Linux device drivers. The course shows attendees how device drivers work with the Linux kernel, how to compile and load drivers, how to debug drivers, as well as other essential topics.<p>This course acquaints developers with the issues essential for Linux device driver development. The course progresses through a number of topics. Each topic is presented along with a supporting laboratory exercise before moving on to the next topic. <br><p>Attendees will spend approximately 50 percent of the class time actually gaining hands-on experience with these topics. <br></p><br><span style="font-weight: bold;"> Course Objectives: </span><br><br> • To provide an understanding of the essentials of Linux device drivers. <br> • To give you practical experience in developing Linux device drivers. <br> • The steps necessary to add devices to a Linux system <br> • How to determine what hardware is present on a Linux system <br> • The purpose and functionality of device drivers <br> • Compiling and linking device drivers <br> • Trade-offs between loadable modules and drivers compiled into the kernel. <br><br><span style="font-weight: bold;"> Who Should Attend: </span><br> The course is designed for software engineers who are new to Linux device drivers. Attendees should have experience with C, be able to perform basic Unix commands, and have some experience with the basic Gnu tools of gcc, gdb, and make. <br><br><span style="font-weight: bold;"> Course Materials </span><br> The class materials for this course have been meticlously designed by leading practioners in this area. The workshop materials include a comprehensive student workbook and CD. The workbook contains all of the slides used in the course as well as hands-on lab exercises.  The CD contains the lab exercise code as well as a large amount of Linux software. <br><br style="font-weight: bold;"><span style="font-weight: bold;"> Course Workshop and Set-up: </span><br> The workshop makes use of standard PC’s with a desktop Linux distribution for development. The course will make use of PC's and PC devices as examples. <br><br><p><p class=maintext>The following modules will be covered during the class:<div class=table-responsive><table width=100%><tbody><tr><td colspan=2><table class=table><tbody><tr><th align=left valign=top>Devices in Linux <br><td>Devices treated as files, the /dev directory <br> Device classes – character, block, network, pipe <br> Creating device files with mknod<tr><th align=left valign=top><strong> User Space Driver APIs </strong> <br><td>Low-level API <br> Streams API<tr><th align=left valign=top><strong> How Loadable Modules Work </strong><td>Benefits of loadable modules <br> Correct use of insmod, modprobe, rmmod, and lsmod <br> Passing parameters to a loadable module <br> The GPL and your driver code<tr><th align=left valign=top><strong> <strong> Compiling, Loading And Exporting </strong> </strong> <br><td>Writing a simple module <br> Compiling modules <br> Loading/unloading modules <br> Exporting symbols from a loadable module <br> Creating stacked loadable modules<tr><th align=left valign=top>Character Devices<td>Major and minor numbers <br> Registering character device file <br> Driver methods – the file operations table <br> Transferring data to/from User Space<tr><th align=left valign=top><strong> Tracing and Debugging </strong><td>printk for debugging <br> Device information in /proc <br> strace to track system calls <br> ksyms and ksymoops <br> Debuggers – gdb and kgdb<tr><th align=left valign=top>Blocking and Wait Queues<td>Multi-tasking <br> Schedule() <br> Wait Queues <br> Safe sleeping <br> Poll()<tr><th align=left valign=top><strong> Accessing Hardware </strong><td>I/O ports vs. memory mapping <br> Allocating and mapping I/O space <br> Functions for reading and writing I/O ports <br> Barriers <br> Accessing I/O from User Space<tr><th align=left valign=top><strong> Handling Interrupts </strong><td>Interrupt Handler functions <br> Restrictions of kernel code running in interrupt context <br> Deferred interrupt handling tasklets and workqueues<tr><th align=left valign=top><strong> Accessing PCI hardware </strong> <br><td><span class=style2> detecting PCI devices <br> Resour </span> ce conflicts <span class=style2> <br> Vendor </span> /device IDs <br> <span class=style2> I/O mapping </span><tr><th align=left valign=top><strong> USB Drivers </strong><td><span class=style2> USB structure and Topology <br> E </span> ndpoints, interfaces and configurations <br> <span class=style2> USB Request </span> B <span class=style2> locks </span> (urbs) <span class=style2> <br> </span> <span class=style2> Driver Structure and organization <br> "Gadget" drivers </span> <span class=style2> </span><tr><th align=left height=86 valign=top><strong> Managing Time </strong><td><span class=style3> Timer interrupts and jiffies <br> Short Delays <br> Task queues <br> Kernel Timers </span></table><tr><td align=left height=19 valign=top width=42%><strong> B </strong> <strong> lock Device Drivers </strong><td width=58%>Block Device Drivers <br> Header files <br> Registering block drivers <br> The block_device_operations structure <br> Special Methods <br><tr><td height=19 valign=top><strong> <br> Network Drivers </strong><td height=19><br> The net_device structure <br> Sockets <br> Naming scheme and registration <br> Network driver methods <br> NAPI the new API <br> <br><tr><td height=19 valign=top><strong> Adding a Driver to the Kernel Tree </strong><td height=19><p><span class=style2> Where to put it - </span> kernel layout for drivers <span class=style2> <br> Modifying the Makefile </span> <span class=style2> <br> </span> Adding it to configuration options - the Kconfig file</p></table></div><p>If you have any questions about the difficulty level of the class or any other aspect of the class, please contact us at: classes (at) linuxcertified.com <br><p><b> Optional: </b> All attendees will get a Linux laptop to be used during the class. You have the option of purchasing this laptop with an additional course fee. <br> <br> <strong> <a href=linux-device-driver-form.html> Enrollment Form </a> </strong><p><b> On-site: </b> If you would like to arrange an on-site Linux Device Driver class, please contact us: classes (at) linuxcertified.com. <br><p><b> Public class schedule: </b> Please see dates on our <a href=class_schedule.html> <strong> calendar page </strong> </a> .<p> </div><div class=clearfix></div></div></div><div class=padtop40><div class=bluewarper><div class=receivetext>Receive Announcements & Linux Tips</div><div class="padtop20 col-xs-12 col-sm-12"><form class=form-inline onsubmit=\cgi-bin\mailing_list.pl><div class="col-xs-12 col-sm-8 text-right"><label class=sr-only for=exampleInputEmail3>Email address</label><input class="form-control domainname"onblur="if(this.value==''){this.value='you@yourdomain.com';}return true;"onfocus="if(this.value=='you@yourdomain.com'){this.value='';}return true;"id=exampleInputEmail3 type=email value=you@yourdomain.com></div><div class="col-xs-12 col-sm-4 submitButton"><p><button class="btn btn-default submitbtn">Submit</button><p></div></form></div><div class=padtop20><a class="btn btn-default btn-lg learnmore"href=privacy_policy.html role=button> Privacy Policy </a></div></div></div><div class=padtop40><div class=fotter2><div class=row><div class="container paddingleft20"><div class="col-xs-12 col-sm-7 col-lg-6 bluetext"><a href=mailto:info@linuxcertified.com> info@linuxcertified.com </a><br> Linux is a registered trademark of Linus Torvalds.</div><div class="col-xs-12 col-sm-7 col-lg-6"><a class="btn btn-default btn-lg fbtn"href=news_links.html role=button> News and Links </a>    <a class="btn btn-default btn-lg fbtn"href=company_info.html role=button> About LinuxCertified Inc. </a></div><div class=clearfix></div></div></div></div></div><footer><div class=footer1><div class=row><div class=container><div><img alt height=71 src=images/flogo.jpg width=249></div><div class=padtop20><div class="col-xs-12 col-sm-4 col-lg-3"><ul class=flinkspanel><li><a href=company_info.html> About us </a><li><a href=linuxtraining.html> Training programs </a><li><a href=class_offerings.html> Class schedule </a><li><a href=news_links.html> News </a><li><a href=contact_us.html> Contacts </a><li><a href=#> Partners </a><li><a href=#> Affiliate program </a><li><a href=#> Student feedback </a></ul></div><div class="col-xs-12 col-sm-4 col-lg-4 mobilemarbtn20"><div class="col-xs-3 col-sm-4 col-lg-3 brdright"><img alt height=70 src=images/fphoneicon.jpg width=49></div><div class="col-xs-9 col-sm-8 col-lg-9">Linux Certified, Inc. 209 E Java Dr, # 64018 , Sunnyvale, CA 94089 <p> </div><div class=clearfix></div></div><div class="col-xs-12 col-sm-4 col-lg-5"><div class="col-xs-3 col-sm-4 col-lg-3 brdright"><img alt height=70 src=images/flocationicon.jpg width=49></div><div class="col-xs-9 col-sm-8 col-lg-9">Toll free: <a href=tel:1-877-800-6873 style=color:#a7a7a7> 1-877-800-6873 </a><br> International: <a href=tel:1-408-314-6700 style=color:#a7a7a7> 1 (408) 314 6700 </a><br> Fax: (253) 399 7329</div><div class=clearfix></div></div><div class="col-xs-12 col-sm-8 col-lg-9"><div class=padtop30 style=padding-left:100px><a href=http://www.facebook.com/pages/Linuxcertified/317185705031633> <img alt height=22 src=images/ff.jpg width=21> </a>     <a href=#> <img alt height=22 src=images/fg.jpg width=21> </a>     <a href=http://twitter.com/Linuxcertified> <img alt height=22 src=images/ft.png width=21> </a></div></div></div><div class=clearfix></div></div></div></div><div class="fotter2 text-center graytext"><div class=row><div class=container><p class="text-center copytext">Copyright � 2000-2016 LinuxCertified.com. All rights reserved.<p class=text-center>LinuxCertified, Inc: Linux Training, Services & Laptop Provider</div></div></div></footer><script src=js/jquery.min.js></script><script src=js/bootstrap.min.js></script>