Linux Kernel & Device Driver Programming

Programming Assignment #4 - Team Project
a useful device driver or other kernel module

Summer 2006

Value:       (See the Grading section of the Syllabus.)

Due Date and Time:       (See the Course Calendar.)

Summary:

This is your final project. You will be writing a new or improved device driver, or possibly another kernel module, working on a team of two or three people. You may propose a project that interests you. If you do not propose a project of your own, you will write an improved device driver for a video frame grabber device.

Objectives:

Tasks:

Pay attention and take notes in class, as more details will be given there than are written down here.

  1. Form a team, and tell me who are your teammates. Be certain that the team members have compatible schedules, since you will need to communicate a lot. Meet and decide how you will first divide the work. Plan on revising this work breakdown repeatedly as you make progress and understand the task better. Do this by the end of the 3rd week of class.

  2. Read the relevant references (see links below for the video frame grabber, and find your own references if you are working on a different device).

  3. If you are working on the frame grabber, you should try to get one of the drivers from a prior term up and running, with a demonstration program, by the middle of the 4th week. If you are doing another driver, you should get the device up and running with whatever other driver may exist for it (either an existing Linux driver, or if there is no Linux driver then a Windows driver).

    Read through the existing driver code, if such is available, and design your changes; otherwise, if you are starting from scratch, design your driver.

    Submit short a document describing your design, and demonstrate that you have the older driver and demo program (if any) working, on Monday of the 5th week. Give a 5-10 minute presentation of your team's plans in class that day. It would be best if you have Web-readable notes to go with your presentations.

  4. By the end of the 5th week of the course, develop a working prototype, with at least some of the (new) functionality you have planned. Give a team presentation on this in class that Friday.

  5. Spend the 6th (last) week of the course refining your driver, and writing up the documentation. Plan on giving an extended team presentation and demonstration in class on Thursday or Friday of that week.

Advice:

References:

The following references may be augmented during the course of the project.

Delivery Method:

  1. Please follow instructions given in class for details, including turn-ins and reviews of intermediate results at the end of each week.

  2. Your team will be expected to give a final presentation and demonstration of your project in the last two days of classes.

  3. Each person is required to individually provide me with a signed sheet of paper indicating your estimation of the percentage contribution of each team member to the project, something like this:

    Your name: 
     member #1member #2member #3
    Team member name   
    Percentage contribution   
  4. Before the final grade is turned in, each team is required to turn in a tar archive of the team web page, including:

    1. The names of the team members
    2. A description of your project goals and accomplishments.
    3. A journal of your progress
    4. The code that you wrote, including any test programs.

Assessment:

Your work will be judged according to quality of function (including the number of the deficiences of the older driver mentioned above that you correct), quality of design, quality of coding, quality of testing, and quality of documentation.

Quality of coding will include (but need not be limited to) consideration of simplicity, readability, portability, efficiency, and robustness.

The documentation includes not just comments in the code, but also the user-level documentation (how an application uses the driver).

Your design should provide access to all the functionality of the hardware, and also make the device as convienent to use as you are able.

You may be asked to demonstrate the installation and compilation of your software "out of the box" on an "out of the box" Linux distribution.

($Id: prog4.html,v 1.1 2008/04/28 17:57:51 baker Exp baker $)