I have been assigned some project based in Device
Driver Development for USB, Printers, IDE, Ethernet
under Embedded Linux. Since I am a beginner in this
area, I would like to know some details based on the
following clarifications.
1] Pre-requisite skills / knowledge and concepts to
understand before embarking on the above project.
2] Typical Project Environment for Device Driver
Development under Embedded Linux Platform.
3] Ups & Downs of Embedded Linux w.r.t other RTOSes
( VxWorks, Psos, Nucleus, QNX, OSEK etc . . . .)
Please highlight me about the Benchmark details.
4] Suppose I need to start off with the above
project ( Device Drivers for Printers, Scanners, PDAs,
LCDs,
Keypads ), what are the essential points to be
kept in mind for smooth running of the project.
5] What are the Initialization / Installation steps
to be done regarding Embedded Linux. Please declare
the latest version to be used. Upon selecting
the RTOS, how should I deal with the selection of
Target
Board along with the Supporting Tools ?
6] Is it sufficient to use C, ignoring C++ & Java
? Is Assembly Language essential ? Which part of C
is
commonly used in Device Drivers ?
7] Please let me know the typical driver size (
Footprint ) for Printer. What could be the duration
of the
project ?
8] Highlight me about some of the useful websites,
books / references and contact Email IDs of
Experienced
Professionals involved in such Projects.
9] How does the Testing / Debugging takes place ?
What are the Test / Debug Tools available for such
Operations ?
10] Please let me know the Optimization Techniques
involved in the Device Driver Development.
11] In this case of the Project, Linux Porting must
be done prior to writing Device Drivers. Am I right
? Kindly
comment.
12] What Technical details should I need to
understand under RTOS, C, Embedded Linux ? Is it
necessary to
know any Protocol for Device Driver
Development ?
13] How often do you use Oscillators / Logic Analyzer
? Please highlight me about the Connection /
Installation details.
Please furnish the above details as soon as possible
and oblige. Your assistance in this regard would
greatly benefit towards my successful career under
this area.
Looking forward to hear from you soon,
Appreciating your favorable response
Regards
Madhukar
** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/
** This list is shutting down 7/24/2004.
On Mon, 2004-07-12 at 02:44, m madhuker wrote:
1] Pre-requisite skills / knowledge and concepts to
understand before embarking on the above project.
O'Reilly's "Linux Device Drivers" - pick it up!
http://www.xml.com/ldd/chapter/book/
2] Typical Project Environment for Device Driver
Development under Embedded Linux Platform.
1) Cross compilation tools
2) Cross-compiled libc
3) Cross-compiled init/bash/util-linux, etc
4] Suppose I need to start off with the above
project ( Device Drivers for Printers, Scanners, PDAs,
LCDs,
Keypads ), what are the essential points to be
kept in mind for smooth running of the project.
*) Get all your hardware docs! Talk to your vendors,
and get EVERYTHING. Schematics can be *very* useful too!
*) Set up a dedicated lan (a second ethernet on your host and
a patch cable is all you need) for your target.
*) Get a good hardware debugger! For non-x86, Abatron's BDI-2000
is fantastic.
5] What are the Initialization / Installation steps
to be done regarding Embedded Linux. Please declare
the latest version to be used.
For Linux 2.4.x, look in arch/ppc/kernel/setup.c
For Linux 2.6.x, look in arch/ppc/platforms/* for examples.
Upon selecting
the RTOS, how should I deal with the selection of
Target
Board along with the Supporting Tools ?
[ObPlug]
TimeSys Corporation has a wide variety of BSP (Board Support Products)
for ARM, MIPS, XScale, SH3/SH4/SH5, PowerPC and x86. Our 2.4.x kernel
series has integrated hard real-time modifications, and our 2.6.x
products are in release for PowerPC 6xx/7xx/82xx, PowerPC 85xx, and x86.
[/ObPlug]
6] Is it sufficient to use C, ignoring C++ & Java
? Is Assembly Language essential ? Which part of C
is
commonly used in Device Drivers ?
C is sufficient. Although you can use C++ (with my C++ kernel runtime
environment: http://www.evillabs.net/~gus/cppfake/index.html )
is it highly *not* recommended for kernel work.
Java is right out.
Assembly is not often used in driver work, but if you have coded your
own non-standard bootloader, it's very useful when modify the
arch/ppc/kernel/head*.S series of files.
7] Please let me know the typical driver size (
Footprint ) for Printer. What could be the duration
of the
project ?
Printer drivers are composed of two parts - that which drives the
LPT/serial port the printer is connected to (kernel space), and the
render (user space, and a ghostscript driver).
Which aspect are you talking about? For the kernel space, we're
probably only talking a few kb of code. For the renderer, it can be as
small as a few kb (simple rasterizer) to a couple of mb (lots of special
case code, embedded software fonts, etc)
9] How does the Testing / Debugging takes place ?
What are the Test / Debug Tools available for such
Operations ?
The Linux Testing Project: http://ltp.sourceforge.net/
[ObPlug]
TimeSys' "TimeStorm" toolset includes an embedded test environment, with
the Linux Testing Project's test suite
[/ObPlug]
10] Please let me know the Optimization Techniques
involved in the Device Driver Development.
Are you optimizing for space? time? bandwidth? latency?
They're all different, and all have special techniques.
This topic alone is enough for several books.
11] In this case of the Project, Linux Porting must
be done prior to writing Device Drivers. Am I right
? Kindly
comment.
Yes. You need to get linux ported to your CPU (probably already done),
make sure/write firmware to do initial target setup (memory
configuation, bus config, chip selects, address spaces, etc), determine
a method of loading the kernel onto your target, make a simple serial
driver (polled), get IRQs working, get ethernet working, get an
IRQ-based serial driver working, then *poof* - you can start booting a
root filesystem via NFS, and do the rest of the project as loadable
modules.
12] What Technical details should I need to
understand under RTOS, C, Embedded Linux ? Is it
necessary to
know any Protocol for Device Driver
Development ?
Google is your friend.
Sniff out a good IRC/email community for your target board
See if anyone else has already ported Linux to your architecture
SUBMIT YOUR PATCHES BACK TO THE KERNEL!
13] How often do you use Oscillators / Logic Analyzer
? Please highlight me about the Connection /
Installation details.
Usually I get the hardware after it's passed hardware verification, so
a JTAG debugger (ie the BDI-2000) is sufficient in most cases. If you
need to modify bus timings, cache timings, etc, then a sampling logic
probe is very useful.
--
Jason McMullan [off-list ref]
TimeSys Corporation
** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/
** This list is shutting down 7/24/2004.