From: "McMullan, Jason" <jason.mcmullan@timesys.com>
To: m madhuker <mythri_madhuker@yahoo.com>
Cc: linuxppc-embedded@lists.linuxppc.org
Subject: Re: Your valuable Suggestions / Advise for Beginners in Device Driver Development under Embedded Linux P
Date: Mon, 12 Jul 2004 09:36:45 -0400 [thread overview]
Message-ID: <1089639405.6032.25.camel@veena.timesys> (raw)
In-Reply-To: <20040712064401.25378.qmail@web13604.mail.yahoo.com>
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@timesys.com>
TimeSys Corporation
** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/
** This list is shutting down 7/24/2004.
next prev parent reply other threads:[~2004-07-12 13:36 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-07-12 6:44 Your valuable Suggestions / Advise for Beginners in Device Driver Development under Embedded Linux P m madhuker
2004-07-12 7:56 ` Marc Leeman
2004-07-12 13:36 ` McMullan, Jason [this message]
2004-07-12 14:35 ` Your valuable Suggestions / Advise for Beginners in DeviceDriver " Kevin P. Dankwardt
2004-07-12 13:51 ` Your valuable Suggestions / Advise for Beginners in Device Driver " Mark Chambers
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1089639405.6032.25.camel@veena.timesys \
--to=jason.mcmullan@timesys.com \
--cc=linuxppc-embedded@lists.linuxppc.org \
--cc=mythri_madhuker@yahoo.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.