XPe newbie needs some help

F

frankk

To all,

I downloaded the XPe 2007 SP2 and follow the tutorial of "Building and
Deploying a Run-Time Image" very carefully. I have a SATA first drive as
C: D: E: F: and a blank IDE second drive as G: for testing the image. In
step #4, when defining the target Device setting - should I put in C:
boot path 0 0 0 1 (in the Target Designer help) or G: boot path 0 0 1
1(in MSDN help). Seems like C: is the correct choice as when I use G:,
the boot goes in a loop.

I copied the image to the G: drive and when I boot the second drive in
the multi-boot I encountered the following error message during the
component installing -

fba.exe application error

The instruction at "0x0319e132" referenced memory at "0x0000000c". The
memory could not be "written"...

I cannot pass this point no matter what I try. I have a high res dual
screen DVI graphic card and a few usb drives hooked to the PC.

Can someone shed some light in what I did wrong?

Thanks in advance,

Frank
 
K

KM

Frank,

Do you use dual boot? (I mean you don't move drives when you switch OSes?).
It doesn't rally matter what drive letter you have set up on your development OS. It doesn't affect the target XPe OS drive letter
assignment. However what des is the default rules Windows (XP) assign drive letters to discovered disks and CD/DVD drives. The
latter you haven't mentioned, but I assume you might have one on the dev PC, so I won't even go into guessing what actual drive
letter you are going to end up with for the XPe system partition. Although I can tell you that it wont' be C:.

The easiest way to figure that out, especially taking into consideration the fact that you already tried to deploy the image and run
through FBA, is to look into \Windows\FBA\FBALog.txt file on your XPe partition. There, somewhere a few lines at the beginning, you
should be able to find a line where it says you set the wrong drive letter in TD and it will suggest what drive letter should be
used. Take that and fix the boot settings in TD.

Should you want to know more about the drive letter assignment on XP, you can go to this tip page:
http://msdn2.microsoft.com/en-us/embedded/aa731212.aspx.
 
K

KM

Frank,

Just to clarify, the ArcPath doesn't directly match to a drive letter. I mean your rdisk(1)partition(1) could've gotten mapped to E:
drive letter, for instance, if you happened to have one or more CD-ROM drives. It also depends on how the disk and drives connect to
IDE ports and etc. It may also depend on BIOS disk enumeration (the implementation itself) and how ntdetect transfers that info to
the kernel (in general it shouldn't mater but there are some bugs there that only appear on certain hardware).
There is quite many variables there and some of them are described in some MS KB articles (search this NG archive, I posted a few
related links). Again, although I am a bit familiar with the rules there, I am usually slacking there and check the FBALog.txt to
verify what drive letter I need to set up in the TD. And, btw, to have that very first FBA run to get the FBALog I can always build
a very minimal image like Minlogon Macro and it won't even require platform support (TAP output, etc.) but will still enumerate all
the disk level devices on the target hardware during FBA.

Many of us here prefer creating a separate thread per issue (to simplify the search index of the NG) but I'll answer yours here.

1) There are no "standard" procedures in embedded world. All embedded devices are different and provide different access to
hardware. Typically it is easy enough to take out the hardware local storage (HDD, CF, FD, etc.), put it in another PC and transfer
(xcopy) the image there.
However, a bit of caution here: you must [better off] prepare the media - partition and format - on the target hardware preferably
with the BIOS version you are going to use in the field. Reason is disk geometry parameters of MBR and boot sector records that may
get set wrong if you partition the storage device on a different PC. (Well, generally speaking you can *format* the media on a
different PC but just be careful with the tools selection).
For an industrial PC I can barely imagine situation where you are not going to be able to work with the hard disk offline (plugged
in a different PC). But if that's still the case and, as you mentioned, you've got another OS (XP) running on that PC, you can
always remote-in that OS and copy over the image there via a USB mass storage device or network or else. You mentioned FTP so I
assume that also available to you and can definitely be used. Just keep in mind that you will have to move the image bits to a
proper location on the target PC afterwards anyway.

Most of the techniques on how you can deploy your image are well described in the documentation:
http://msdn2.microsoft.com/en-us/library/ms932924.aspx.

2) I'll leave the answer to this question to Sean :)
But if you take a look at his website you'll find lots of info about his XPe books.

3) If you suspect the power can be interrupted for your target PC in the field and you don't have UPS or similar to work around that
then you might be interested in a few technologies XPe has built in. Read about those in the XPe documentation:

- EWF/FBWF - protecting the storage media with write filters will make it more reliable for the system to recover:
http://msdn2.microsoft.com/en-us/library/ms912906.aspx, http://msdn2.microsoft.com/en-us/library/aa940926.aspx.

- Headless support - this is what you'll definitely need since no console devices are attached to or supported by your hardware:
http://msdn2.microsoft.com/en-us/library/ms932872.aspx.

- Don't include Safe Mode and Dr. Watson components in your image. (http://msdn2.microsoft.com/en-us/library/ms940820.aspx)

- Setup the system crash dump procedure to restart the PC automatically when a GPF occurs. Set the following reg.entry:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CrashControl],"AutoReboot"=dword:1

- Get rid of all [most of] system popups and message boxes that may get your system UI unintentionally locked:
http://msdn2.microsoft.com/en-us/embedded/aa731206.aspx, http://msdn2.microsoft.com/en-us/library/ms933122.aspx.

- It often makes a sense to create your own custom shell for our target XPe OS where you can control the UI behavior (to make it
more headless appropriate) and get rid of Explorer Shell that is not really headless friendly:
http://msdn2.microsoft.com/en-us/library/ms913692.aspx.

4) Run time licenses are not connected to the DevKit license. You have to purchase a runtime license that covers all your devices
where you run the XPe image you create.
If you plan to use the 5 dev PCs to dual boot to an activated (licensed) XPe image then you'd need to purchase 55 licenses. If not,
only 50.
You XPe distributor should be able to perfectly explain your that.

5) Hmm.. Not sure why you don't compare VB6 to VB.Net? That's be more appropriate comparison.
Usually the selection of the programming language is dependent on factors different or above than just the final PC configuration
and price. More important factors would be:
- What language you are already familiar with (or with what language you are a better programmer). The "better" justification is
more related to what the final product quality you are targeting, how difficult the main application would be to program and what
time frames you set for the project. Keep in mind that XPe is more a RAPID development platform.

- How many off-the-shell application components are available to you out there (freeware or shareware source code, OCX
components, .Net 3rd party components, etc.) to meet your application logic and requirements. With the beasts like .Net you are
leveraging huge framework library and that saves you lots of time.

- You can make your XPe image footprint much smaller than a regular full blown XP Pro. Even with .Net (2.0) you could
theoretically come up with a 200-250 Mb image. This however depends on your application dependencies. More it requires, more RAM it
takes. I'd say 500Mb is plenty of RAM there to even run a medium weight .net app.

- What DB component you are referring to? If it is Jet (MDAC), your app may not be that RAM resource consuming. However, if you
plan on SQL server (MSDE or SQL Express) and your query results would be heavy enough to fill up the RAM cache quickly, you'd need
more RAM.

- If you plan on putting lot of time in optimizing the image and main application RAM consumption and performance, often
languages like C/C++ are a better choice. Obviously, would require some programming skills in that language then.
 
S

Sean Liming \(eMVP\)

1. There is no standard. If you are booting from a hard drive - see if you
can boot the system using a USB flash disk. If you can boot to XPe via a USB
flash disk, it makes for a simple way to partition, format, and transfer the
image via a 32-bit environment. Otherwise disk swap is enitrely okay.

2. Books - check out my site: http://www.seanliming.com/books.html. I have a
couple books on XP Embedded.

3. KM covered this :)

4. License - you should contact your local Microsoft distributor. Basically
you purchase a license sticker for each unit.

5. If cost is an issue, then VB 6 is the way to go. VB.NET / C# and using
..NET is the better way to go long term.

Regards,

Sean Liming
www.sjjmicro.com / www.seanliming.com
XP Embedded Book Author - XP Embedded Advanced, XP Embedded Supplemental
Toolkit
 
F

frankk

Guys,

That is exactly my problem - D: !!!

When I use that as the target device, all works!
I must have spent 10+ hours in the tutorial and the funny thing is that
the tutorial says exactly as is - D: but there is no reason for me to
put in D: instead of G: as that is 'my' drive letter. The following is
the tutorial text -

Type the correct values for the second hard disk where the Windows XP
Embedded OS will be deployed. For example, a second hard disk, with the
letter D: and boot arc path of rdisk(1)partition(1) would require the
following values:

* Boot drive: D:
* Windows folder: D:\WINDOWS
* Program Files folder: D:\Program Files
* Documents and Settings folder D:\Documents and Settings
* Boot ARC path: multi(0)disk(0)rdisk(1)partition(1) (default)

Well, I am 1/2 way there now as far as understanding how XPe works. I
build the image, change the boot.ini of the target drive to 0 0 0 1,
change the bios to boot from the target drive and all went well. The
Target disk booted correctly. I guess now I just have to match the
components with my single board industrial PC.

I have an industrial PC with a full XP Pro and I want to build a small
XP with only the necessary components. I guess now I can build the image
in the development XP-Pro computer and then transfer the image to the
single board computer (FTP?). Still have a couple of basic questions
before I dive in.

1. What is the standard procedures of copying the image from the dev PC
to the target PC?

2. Is there a good book to learn about the XPe?

3. When the power is interrupted or some conditions that caused the
XP-Pro to go into 'safe mode' in the next boot. We cannot have that in
the industrial PC as there is no keyboard or VGA. How does XPe take care
of this issue? Does the programmer have to program to handle this
unexpected conditions?

4. After I purchase the Dev Kit for $1,000. How is the $90 license be
accounted for? If I Have 5 dev PCs in the lab and wan to deploy 50
copies to my customers do I have to buy 50 or 55 licenses? Do I need a
full deployment license to have a PC function fully?

5. I plan to put some DB component in the box, I have the choice to use
the classic asp using VB6 or aspx using C# and DotNet (more memory). The
price of a 512 MB single board PC is about $500 and a 1 GB one is about
$1000. What is a better approach - VB6 or C#?


Thanks again for the great help,


Frank
 
F

frankk

Guys,

Seems like you gave me fairly complete reference to get started. You
gave me references to articles, books, training and consulting services.
My VB6 and DotNet question is about which one is more suitable for XPe
type programming. The VB6 + asp way is supposed to be smaller and the
DotNet is much bigger. The size is in reference with the final size of
the embedded system for the industrial PC. I have development in both
framework already and I just want to find out which one to port to the
embedded project. I guess I can load up both of them and see the
performance.

Again, thanks for the very complete pointers !!!


Frank
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top