Your valuable Suggestions / Advise for Beginners in Device Driver Development under Embedded Linux P
McMullan, Jason
jason.mcmullan at timesys.com
Mon Jul 12 23:36:45 EST 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 <jason.mcmullan at timesys.com>
TimeSys Corporation
** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/
** This list is shutting down 7/24/2004.
More information about the Linuxppc-embedded
mailing list