CS333N Assignment 6: A project with your own OS or LinuxAs a part of the last assignment you will have to do a project. This will involve developing an (embedded) application on top of either your own OS or a stripped down version of Linux.
The projects can be done in groups of four. You will have to get your project selection and the detailed project specifications approved by the course instructor. Here are a few project suggestions. You are free to come up with your own ideas as well.
1. Building an MP3 player on your own OSThis will involve building an I/O sub-system in to your own OS which must include support for IDE CDROM drive and a sound card. These device drivers are available in OsKit (please check), you will however have to port the device drivers in to your OS. This will involve writing glue codes for matching the device drivers with your interrupt handling mechanism and threads package.
You will also have to implement the ISO9660 file system (used for CDROM's) in to your OS. Again you can adapt the implementation from OSKit.
Finally, you will need to run MP3 decoding as one of your threads. You can pick up any one of the many open source decoders.
2. Daisy reader, telephone directory, etc.The core issues of the above project are pretty much similar to the issues involved in the Daisy reader and the telephone directory projects suggested in the Microprocessor course (CS315P). You can choose a variant of these projects (using an ARM processor and your own OS, perhaps?) after discussions with both the insructors.
3. Communicating cars.Consider the problem of establishing a wireless communication link between two cars in a crowded street or a highway so that the car in front can indicate automatically to the car behind events like braking, turning right/left etc. The braking event can be captured by tapping the wire connecting the brake light on the dashboard. The left/right turn signals can be obtained by attaching limit switches to the steering wheel. Similarly the driver of the car behind may wish to transmit a signal to the car in front indicating intentions of overtaking.
You may use low bandwidth directional radio or infra-red (IrDA) devices connected to the serial port of an embedded processor via a microcontroller. You may use ARM or pentium based SBC's (single board computers). We have some Pentium based SBC's (runs of 5V, 5W power) which you may use. For the course project it will be sufficient to walk around holding the two units above your head in the lab (poor man's simulation of cars). Primarily, you have to concentrate on setting up the communication.
The project will involve:
4. Bus station, traffic lights etc.Some of the issues in above are similar to those in the traffic light and bus-station projects in the Microprocessor course (CS315P). You may also choose one of these after discussions with both the instructors.
5. TV playerBuild a TV player on your desktop running your own OS. You may use a BT848/878 based TV-tuner/frame-grabber card which takes input from a TV cable or a camcorder. You'll have to port OsKit's device drivers for BT848 and also the sound card on to your OS by writing suitable glue code.
You will also have to develop suitable code for flicker-less image display on the VGA. Again you can adapt code available in OsKit.
6. Robot controlWe have developed a new mobile robot which has two independent motors connected to the two drive wheels and two additional motors for a stereo pan-tilt head. It has on-board 8051/8255 based microcontrollers to control the motor drives which connect to the serial ports of a Pentium based on-board SBC. The SBC also has a radio interface. You'll have to put your own OS on the SBC to calibrate and control the movement of the robot.
7. Porting your OS for Lego MindstormsThe Lego Mindstorms RCX has an 16MHz Hitachi H8/3297 series processor with 32K RAM. It has a few A/D channels for motor control, a sound interface and an Infra-red (IR) device for communicating with a PC host. Code for the RCX can be cross-compiled using gcc.
It will interesting to port your multi-threaded OS of Assignments 3 and 4 on to the Lego processor. You will of course need to build an I/O subsystem to control the I/O and a packer networking system for IR communication.
You can find complete details and documentation related to the RCX processor (and also a multi-threaded OS) at http://www.noga.de/legOS.
8. Possible Linux projectsHere are some possible Linux project ideas that have come up after discussions with some of the students in the class:
Subhashis Banerjee / Dept. Computer Science and Engineering / IIT Delhi / Hauz Khas/ New Delhi 110016 / firstname.lastname@example.org