pmq imports - problems

  • Thread starter Thread starter Ann Adamson
  • Start date Start date
A

Ann Adamson

In all the documentation and sessions I've ever read/seen, they always talk
about being able to use a .pmq file to produce a platform "Macro" component
which pulls in all the necessary hw components to support your device. This
seems like a GREAT idea, BUT...

When I import .pmq files into Target Designer and Component Designer, I
OFTEN get different results! It seems like the "matching" algorithms must
be different. Does Component Designer just ignore the COMPATIBLEIDS
section? That's what it looks like to me. Isn't this a bug?

For example, from the section that follows from my .pmq file, Target
Desiger matched and brought in the component "PCI Standard PCI-to-PCI
Bridge" (PnPID(819):"PCI\CC_0604"), however, Component Designer did not find
a match and did not bring in any component.

<DEVICE ConfigFlags="0">
<DEVICEDESC>PCI standard PCI-to-PCI bridge</DEVICEDESC>
<HARDWAREIDS>
<DEVICEID
Order="1">PCI\VEN_8086&amp;DEV_0320&amp;SUBSYS_00000000&amp;REV_04</DEVICEID<DEVICEID
Order="2">PCI\VEN_8086&amp;DEV_0320&amp;SUBSYS_00000000</DEVICEID>
<DEVICEID Order="3">PCI\VEN_8086&amp;DEV_0320&amp;REV_04</DEVICEID>
<DEVICEID Order="4">PCI\VEN_8086&amp;DEV_0320</DEVICEID>
<DEVICEID Order="5">PCI\VEN_8086&amp;DEV_0320&amp;CC_060400</DEVICEID>
<DEVICEID Order="6">PCI\VEN_8086&amp;DEV_0320&amp;CC_0604</DEVICEID>
</HARDWAREIDS>
<COMPATIBLEIDS>
<DEVICEID Order="1">PCI\VEN_8086&amp;CC_060400</DEVICEID>
<DEVICEID Order="2">PCI\VEN_8086&amp;CC_0604</DEVICEID>
<DEVICEID Order="3">PCI\VEN_8086</DEVICEID>
<DEVICEID Order="4">PCI\CC_060400</DEVICEID>
<DEVICEID Order="5">PCI\CC_0604</DEVICEID>
</COMPATIBLEIDS>
</DEVICE>

In other cases, if there is a specific Intel Driver that has not yet been
componentized, but a "standard" component will do, Target Designer can make
a match, but Component Designer does not. In the following example, TD
brought in the component "Standard Universal PCI to USB Host Controller"
(PnPID(819):"PCI\CC_0C0300") but CD made no match. PLUS CD does not give
errors when it cannot find a match!!

<DEVICE ConfigFlags="0">
<DEVICEDESC>Intel(R) 82801EB USB Universal Host Controller -
24D2</DEVICEDESC>
<HARDWAREIDS>
<DEVICEID
Order="1">PCI\VEN_8086&amp;DEV_24D2&amp;SUBSYS_10798086&amp;REV_02</DEVICEID<DEVICEID
Order="2">PCI\VEN_8086&amp;DEV_24D2&amp;SUBSYS_10798086</DEVICEID>
<DEVICEID Order="3">PCI\VEN_8086&amp;DEV_24D2&amp;CC_0C0300</DEVICEID>
<DEVICEID Order="4">PCI\VEN_8086&amp;DEV_24D2&amp;CC_0C03</DEVICEID>
</HARDWAREIDS>
<COMPATIBLEIDS>
<DEVICEID Order="1">PCI\VEN_8086&amp;DEV_24D2&amp;REV_02</DEVICEID>
<DEVICEID Order="2">PCI\VEN_8086&amp;DEV_24D2</DEVICEID>
<DEVICEID Order="3">PCI\VEN_8086&amp;CC_0C0300</DEVICEID>
<DEVICEID Order="4">PCI\VEN_8086&amp;CC_0C03</DEVICEID>
<DEVICEID Order="5">PCI\VEN_8086</DEVICEID>
<DEVICEID Order="6">PCI\CC_0C0300</DEVICEID>
<DEVICEID Order="7">PCI\CC_0C03</DEVICEID>
</COMPATIBLEIDS>
</DEVICE>

So, it seems this idea of a "Platform Macro Component" built with Component
Designer is pretty shaky right now. You have to do a lot of manual fiddling
to get it right.

Ann
 
Hi Ann,

Actually manually componentizing Intel platforms is very easy from CD.
You create component that will contain all Intel inf files that you are interested in. (Less than MB can cover all chipsets Intel
ever made).

Consider the fast that Intel rely on MS driver binaries and that they almost always provide just fancy text strings. (Gart
agp440.sys excluded since MS did not make inf file that cover third driver.)
Also by matching Compatible IDs you can find always original MS components.

For instance of your first driver:
XPe component "PCI standard PCI-to-PCI bridge" uses PCI\CC_0604 as PnPID which matches ID from your list <DEVICEID
Order="5">PCI\CC_0604</DEVICEID>

So having this component in your image and including appropriate inf file that contain string "DEV_0320" will solve all your
problems. BTW I can't find inf file with this ID (Probably some new piece of hardware)

So this approach you can use with all hardware components, or you can use all standard components from minlogon MACRO, and just push
all inf files as well, that should cover all your chipsets except GART.

So, it seems this idea of a "Platform Macro Component" built with Component
Designer is pretty shaky right now. You have to do a lot of manual fiddling
to get it right.

It is up to you :(

Best regards,
Slobodan
 
Ann,

I am just curious.. Have you tried to "import" the PMQ file with "Windows Embedded\utilities\econvert.exe" tool?

Btw, I always thought the INF/PMQ importing framework is the same for all XPe tools. It is just a set of COM object (for instance,
INF importer) registered. So, the import results should be the same unless the framework supports some optional parameters to be
passed to the importers.
 
I am trying econvert now.

I expected the imports to work the same, but as I said, that does not appear
to be the case. I definitely don't get matches on COMPATIBLEIDS in CD, but
I do in TD.

Ann

KM said:
Ann,

I am just curious.. Have you tried to "import" the PMQ file with "Windows
Embedded\utilities\econvert.exe" tool?
Btw, I always thought the INF/PMQ importing framework is the same for all
XPe tools. It is just a set of COM object (for instance,
INF importer) registered. So, the import results should be the same unless
the framework supports some optional parameters to be
 
I used econvert at the command line on the same file, and got the same
results as with Component Designer, but at least when I specify the /L
option I can see in the log file what drivers were "skipped". However,
there were drivers that could have been matched based on the COMPATIBLEIDS
section.

Ann
 
We have done some of this, but were hesitant to import all the INFs because
we figure these will "appear" in a future release of the Component Database
from Microsoft, and then we may end up with "versioning" issues. We were
trying to only componentize the drivers that we needed to to make the thing
boot, and to use the more generic components whenever possible.

Ann

Slobodan Brcin (eMVP) said:
Hi Ann,

Actually manually componentizing Intel platforms is very easy from CD.
You create component that will contain all Intel inf files that you are
interested in. (Less than MB can cover all chipsets Intel
ever made).

Consider the fast that Intel rely on MS driver binaries and that they
almost always provide just fancy text strings. (Gart
agp440.sys excluded since MS did not make inf file that cover third driver.)
Also by matching Compatible IDs you can find always original MS components.

For instance of your first driver:
XPe component "PCI standard PCI-to-PCI bridge" uses PCI\CC_0604 as PnPID
which matches ID from your list <DEVICEID
Order="5">PCI\CC_0604</DEVICEID>

So having this component in your image and including appropriate inf file
that contain string "DEV_0320" will solve all your
problems. BTW I can't find inf file with this ID (Probably some new piece of hardware)

So this approach you can use with all hardware components, or you can use
all standard components from minlogon MACRO, and just push
 
Hi Ann,

Do not import inf files to component, just make component that will include them.
I don't how to say this better. You should add all files manually and not by using import option with inf file.
You will not have collision with MS components if MS decide to make their components for these chipsets this is due to fact that
your component only replace manual file copy that could be done after the image build from TD.

Best regards,
Slobodan
 
Also, when you copy files through your own component just don't set "Overwrite" flag to TRUE (or verify it is set to FALSE).
Then you can be sure that MS components will replace the files in future builds.

(btw, the XPe tools will change much in future anyway when it comes to LHe)
 
I'm still confused -- make a component that contains *just* the INF files,
or all the INF and .sys files and etc.? Or should we just cut our losses
and run the Intel install itself after getting past FBA, and before reseal
(we manually reseal anyway)?

Ann

KM said:
Also, when you copy files through your own component just don't set
"Overwrite" flag to TRUE (or verify it is set to FALSE).
 
Hi Ann,

Step 1. Use winzip to unpack selfextracting install file.
Step 2. Use setup.exe with a switch to unpack all driver files.
Step 3. Add all XP related files to your component. (Just add them).

Locate folder that contain all inf and one sys file.
Actually only one driver is provided by Intel and it is used for chipset.
Name of this driver is "Intel (R) System Managment BIOS Driver" and you will have to preinstall it trough registry if you need it
since it is software driver only. (It is not associated with hardware).
This driver is one of the things that Even regular CD import can't make you component for. (Usually you can live without this driver
but nevertheless it is easy to preinstall it).

For more info read this complete thread:
http://groups.google.com/groups?hl=...=1&[email protected]

Best regards,
Slobodan
 
Back
Top