[U-Boot] Using Uboot to communicate a PCI device.

Darshan Vasisht darshan.vasisht at gmail.com
Sat Jul 18 08:31:46 CEST 2009


Hi Dave,
Thanks for the reply.
Cavium's U-boot version included has been modified to support multicore
OCTEON processors. The 'bootoct' command has been added, which supports the
booting of an Octeon simple executive application.
Let me answer your questions now.
Octeon Software Development Kit: Octeon Bootloader*I assume the Cavium
processor boots U-Boot, and performs some initialization of the NPs, and
then boots its OS. What is the OS?*
Cavium Octeon Processors are multicore network processors which have two
modes for executing a application.
Simple Executive Mode: Its the hardware abstraction mode through which an
user application can perform Network layer processing stuff by accessing
various h/w unit of the Octeon NP.They are faster and have less overhead.
This is called Fast-path Processing.
Linux(Or other OS) Mode: In this mode Linux can be installed and User
applications can be developed over it. This is called Slow-path processing.
In my case I dont have any OS on the board hence i need to do it at Simple
executive level itself. The U-boot is responsible for loading the
aforementioned applications into the Octeon Memory space.
But i have heard that Uboot(inside Octeon) can be modified to communicate
to a device. So that's why my question "What all the prerequisites i need
for the PCI device at Octeon side to add it into u-boot application?".
*
Does the Cavium instance of U-Boot have to boot the NPs?   Can the Cavium
processor U-Boot initialize the PCI interfaces on the NPs and then boot its
OS, and then the Cavium OS can boot the NPs.?*
Since No OS such as Linux exists, Cavium's U-Boot will initialize the
processor itself (As a Simple Executive) along with its PCI interface
initialization is also done. Now, how should i go ahead in talking to the
Winpath NP for doing a task. For eg, Copying the Winpath Boot Image onto the
NP via the PCI interface?

*What OS will the NPs be running? Is there any need for the NPs to run
U-Boot? Can the NPs have their OS image copied into their local memory, and
then the processors boot directly into their OS - no bootloader necessary?
Can the Cavium processor perform all device initialization that U-Boot
running on an NP would normally perform?*
Winpath also has a similar Hardware Abstraction (similar to Simple Executive
as in Octeon). The Winpath has a similar U-boot*-like* bootloader to boot up
the processor... since it doesn't have tftp or flash interface for copying
the bootloader image... Cavium has to do this task via its PCI interface.
Cavium's task is to load Wintegra NP's Bootloader into the memory space of
Wintegra so that WinPath boots itself and further all the applications that
Winpath has to run shall be "loaded" to Winpath into its memory addresses.
The bottomline is Winapth NP does not have direct access to TFTP/Flash for
loading the applications or even the bootloader, it has to do it via the
Cavium on the PCI interface.

*Does the NP need to communicate with the Cavium via the PCI bus, or would
it be just as efficient for them to communicate over the network?*
Since Cavium's Octeon and Wintegra's Winpath are 'sitting' on the same board
as two chips they cant communicate over the network.

I hope i am much clearer this time.
Thanks a lot for the prompt response. :)
Darshan


2009/7/18 <dwh at ovro.caltech.edu>

> Hi Darshan,
>
> Let me summarize your hardware and request:
>  - Cavium Octeon host-processor
>  - Wintegra Winpath Network slave processors
>  - Devices connected via the PCI bus
>  - You want to create a U-Boot application to boot the
>   processors and then communicate over the PCI bus.
>
> However, before we discuss U-Boot coding, it would be
> useful if you could provide a more detailed system-level
> description, so that we can provide suggestions.
> For example;
>
>  - I assume the Cavium processor boots U-Boot, and performs
>   some initialization of the NPs, and then boots its OS.
>   What is the OS?
>
>   Does the Cavium instance of U-Boot have to boot the NPs?
>   Can the Cavium processor U-Boot initialize the PCI
>   interfaces on the NPs and then boot its OS, and then
>   the Cavium OS can boot the NPs.
>
>   U-Boot is a bootloader. More complex features/control
>   may be easier to deal with inside a complete OS such as
>   Linux.
>
>  - What OS will the NPs be running? Is there any need for
>   the NPs to run U-Boot? Can the NPs have their OS image
>   copied into their local memory, and then the processors
>   boot directly into their OS - no bootloader necessary?
>   Can the Cavium processor perform all device initialization
>   that U-Boot running on an NP would normally perform?
>
>  - Does the NP need to communicate with the Cavium via
>   the PCI bus, or would it be just as efficient for
>   them to communicate over the network?
>
>   Ira Snyder has worked on a PCI-to-PCI network driver
>   that might work for your processors, however, I'd
>   need to look at the datasheets for the Cavium and
>   NPs to see if they have the right features for this
>   type of interface.
>
> Try and get the system-level design described first, and
> then the software requirements for the lower-levels will
> become clearer, or others will suggest solutions that you
> may not have considered.
>
> Cheers,
> Dave
>
>


More information about the U-Boot mailing list