I-Appliance BBS
The Official Source for Internet Appliance Upgrades and Mods
Amazon Honor System Click Here to Pay Learn More
BBS Main List | Sign In | Sign Up | Search | Help | Linux-Hacker.netReply to Thread | Printer |

Home / Other I-Appliances / MSN Companion
Building a CE Platform
Uh, Building a CE Platform

New MessageBuilding a CE Platform (modified 0 times) rman
Profile
I am going to make an attempt to create a CE platform to run on my soon to arrive IA1's. I really don't need a full OS to run the appliance for my purpose, just enough for decent browser support and possibly a Citrix client would suit me. I have access to both the CE2 Platform Builder and the Beta for the CE3 Platform Builder and will be making my first attempt at this sort of programming. I am a programmer by profession and work quite a bit at the application level with CE but never at the platform level. I am looking for anybody with advice on how to proceed or time to participate in the project. I have read some earier posts where it sounds like some of you got really close to building this but just ran into some roadblocks. Any help would be appreciated.
12-17-2001 18:44:24

New MessageRE:Building a CE Platform (modified 0 times) keith721
Profile
i used the evaluation copy of CE Platform Builder, and the resulting CE image worked well enough, except for one issue: the screen size. never having done this before, i'm not aware of what can be changed, or even if it can be changed, to support the 600*800 screen of the IA-1. most CE devices use a vertically oriented display, while the IA-1 uses a horizontal orientation. Also, while video drivers for Win9x/NT/2K/XP are readily available, the CE video drivers seem to be proprietary. other than the video size and dimensions being wrong, all of the applications included with the CE Platform Builder executed reasonably well.

good luck with your efforts, and please keep us informed of your progress!!

12-18-2001 13:55:06

New MessageRE:Building a CE Platform (modified 0 times) rman
Profile
Thanks for the reply. How did you get the image to the IA1? In looking through my initial platform I can see the DDI_FLAT module but it contains no reference to orientation or display size. I am going to dig down into the .cpp file listed and see if it sets any possible device sizes. Do you think it could be an on device registry key? I know other devices support configurable resolution but I would think a CE platform would have it set somewhere in the base image.
12-18-2001 16:57:26

New MessageRE:Building a CE Platform (modified 0 times) keith721
Profile
rman:

i used a bootable Win98SE DOS command line 32 megabyte compact flash card, with the CE image of NK.BIN and the DOS loader program for WinCE (can't remember the name while at work ) then, set the autoexec.bat to load the CE image from DOS, and it was off and running when booting from the external CF.

keith721

12-19-2001 09:15:12

New MessageRE:Building a CE Platform (modified 0 times) rman
Profile
In lookin at the gpe_flat.cpp that appears to drive the display for the platform, there is a place where the screen's physical dimensions are set. This section looks for a set of arguments from somewhere in the boot sequence. If the arguments are not present it goes for a default setup. This looks like the following:

GPEFlat::GPEFlat (void)
{
DWORD oldMode;
PBOOT_ARGS args;
ULONG fbSize;
ULONG fbOffset;
ULONG offsetX, offsetY;

DEBUGMSG(GPE_ZONE_INIT,(TEXT("GPEFlat::GPEFlat® ")));

oldMode = SetKMode(TRUE);

args = (PBOOT_ARGS)(*(PBYTE *)BOOT_ARG_PTR_LOCATION);

if (args != 0)
{
args = (PBOOT_ARGS)((DWORD)args | 0x80000000);

// copy needed params from boot args
m_VesaMode = (DWORD)args->vesaMode;
m_nScreenWidth = (DWORD)args->cxDisplayScreen;
m_nScreenHeight = (DWORD)args->cyDisplayScreen;
m_colorDepth = (DWORD)args->bppScreen;
m_pvFlatFrameBuffer = args->pvFlatFrameBuffer;
m_cbScanLineLength = (DWORD)args->cbScanLineLength;
m_cxPhysicalScreen = (DWORD)args->cxPhysicalScreen;
m_cyPhysicalScreen = (DWORD)args->cyPhysicalScreen;
m_RedMaskSize = (DWORD)args->RedMaskSize;
m_RedMaskPosition = (DWORD)args->RedMaskPosition;
m_GreenMaskSize = (DWORD)args->GreenMaskSize;
m_GreenMaskPosition = (DWORD)args->GreenMaskPosition;
m_BlueMaskSize = (DWORD)args->BlueMaskSize;
m_BlueMaskPosition = (DWORD)args->BlueMaskPosition;
}
else
{
DEBUGMSG(GPE_ZONE_ERROR,(TEXT("No Boot Args passed to driver® ")));
m_VesaMode = 0;
m_nScreenWidth = 320;
m_nScreenHeight = 200;
m_colorDepth = 8;
m_cxPhysicalScreen = 320;
m_cyPhysicalScreen = 200;
m_pvFlatFrameBuffer = 0x800A0000;
m_cbScanLineLength = 320;
}

SetKMode(oldMode);

// set rest of ModeInfo values
m_ModeInfo.modeId = 0;
m_ModeInfo.width = m_nScreenWidth;
m_ModeInfo.height = m_nScreenHeight;
m_ModeInfo.Bpp = m_colorDepth;
m_ModeInfo.frequency = 60; // ?
switch (m_colorDepth)
{
case 8:
m_ModeInfo.format = gpe8Bpp;
break;

case 16:
m_ModeInfo.format = gpe16Bpp;
break;

case 24:
m_ModeInfo.format = gpe24Bpp;
break;

case 32:
m_ModeInfo.format = gpe32Bpp;
break;

default:
DEBUGMSG(GPE_ZONE_ERROR,(TEXT("Invalid BPP value passed to driver - %d® "), m_ModeInfo.Bpp));
m_ModeInfo.format = gpeUndefined;
break;
}
m_pMode = &m_ModeInfo;

// compute frame buffer displayable area offset
offsetX = (m_cxPhysicalScreen - m_nScreenWidth) / 2;
offsetY = (m_cyPhysicalScreen - m_nScreenHeight) / 2;
fbOffset = (offsetY * m_cbScanLineLength) + offsetX;

// compute physical frame buffer size
fbSize = (((m_cyPhysicalScreen * m_cbScanLineLength) >> 20) + 1) << 20; // set size to next highest 1MB boundary

m_VirtualFrameBuffer = (DWORD)VirtualAlloc(0, fbSize, MEM_RESERVE, PAGE_NOACCESS);
if (m_VesaMode != 0)
{
VirtualCopy((void*)m_VirtualFrameBuffer, (void *)(m_pvFlatFrameBuffer >> 8), fbSize, PAGE_READWRITE | PAGE_NOCACHE | PAGE_PHYSICAL);
}
else
{
VirtualCopy((void*)m_VirtualFrameBuffer, (void *)m_pvFlatFrameBuffer, fbSize, PAGE_READWRITE | PAGE_NOCACHE);
}
m_pPrimarySurface = new GPESurf(m_nScreenWidth, m_nScreenHeight, (void*)(m_VirtualFrameBuffer + fbOffset), m_cbScanLineLength, m_ModeInfo.format);

memset ((void*)m_VirtualFrameBuffer, 0x0, fbSize);

m_CursorVisible = FALSE;
m_CursorDisabled = TRUE;
m_CursorForcedOff = FALSE;
memset (&m_CursorRect, 0x0, sizeof(m_CursorRect));
m_CursorBackingStore = NULL;
m_CursorXorShape = NULL;
m_CursorAndShape = NULL;
}

As a test, the following code section could be substituted:

if (args != 0)
{
args = (PBOOT_ARGS)((DWORD)args | 0x80000000);

// copy needed params from boot args
m_VesaMode = (DWORD)args->vesaMode;
//m_nScreenWidth = (DWORD)args->cxDisplayScreen;
m_nScreenWidth = 800;
//m_nScreenHeight = (DWORD)args->cyDisplayScreen;
m_nScreenHeight = 600;
//m_colorDepth = (DWORD)args->bppScreen;
m_colorDepth = 16;
m_pvFlatFrameBuffer = args->pvFlatFrameBuffer;
//m_cbScanLineLength = (DWORD)args->cbScanLineLength;
m_cbScanLineLength = 800;
//m_cxPhysicalScreen = (DWORD)args->cxPhysicalScreen;
m_cxPhysicalScreen = 800;
//m_cyPhysicalScreen = (DWORD)args->cyPhysicalScreen;
m_cyPhysicalScreen = 600;
m_RedMaskSize = (DWORD)args->RedMaskSize;
m_RedMaskPosition = (DWORD)args->RedMaskPosition;
m_GreenMaskSize = (DWORD)args->GreenMaskSize;
m_GreenMaskPosition = (DWORD)args->GreenMaskPosition;
m_BlueMaskSize = (DWORD)args->BlueMaskSize;
m_BlueMaskPosition = (DWORD)args->BlueMaskPosition;
}
else
{
DEBUGMSG(GPE_ZONE_ERROR,(TEXT("No Boot Args passed to driver® ")));
m_VesaMode = 0;
m_nScreenWidth = 800;
m_nScreenHeight = 600;
m_colorDepth = 16;
m_cxPhysicalScreen = 800;
m_cyPhysicalScreen = 600;
m_pvFlatFrameBuffer = 0x800A0000;
m_cbScanLineLength = 800;
}

This would bypass any arguments provided at bootup and effectively force an 800x600 16 bpp display. The VESA mode and the frame buffer might have to be adjusted as well but that would take some expirimentation. I do not have my units yet (shipping from TigerDirect, should arrive next week) or I would run the test. If you still have a testing environment and the interest, could you try the setup above and see if it works?

12-19-2001 09:16:35

New MessageRE:Building a CE Platform (modified 0 times) bballctaulbee
Profile
good work so far! and the effort looks promising...

IANAL, but won't there be a problem with [legally] distributing any working image?

OTOH, is the CE development environment free for personal use? if so, could we then just implement a 'diff' to build a version for the IA-1 to allow anyone who has obtained the environment?

many thanks for any illumination on these issues...

regards,

bball

12-19-2001 09:27:15

New MessageRE:Building a CE Platform (modified 0 times) keith721
Profile
IANAL either, but the license provided with the Evaluation Copy of CE Platform Builder explicitly denies distributing or using for gain any CE images generated with it. since i only plan to boot any CE image generated for strictly personal use at home for play/fun/hacking, i consider this a valid 'evaluation' use, as permitted by the license.

now, from the hacking side, i REALLY like what rman found in the ddi_flat.c module, but i might suggest being a little more cautious posting portions of the source code here. rman's information shows you exactly how little skill and time i've been able to apply to the CE effort.

my NT workstation environment with CE Platform Builder is down right now, while transferring my older windoze system contents to the new box where the CE image generation was evaluated (no, really!) as soon as everything's copied / rearranged, i'll give rman's changes a go, unless he gets through it, first.

happy holidays and happy hacking, everyone!!
keith721

12-19-2001 09:55:35

New MessageRE:Building a CE Platform (modified 0 times) sin613
Profile
regarding loading nk0.bin from autoexec.bat... is an executable utility required, or can a standard DOS command (load, device, etc from config.sys) be used?

-barton

12-19-2001 10:24:26

New MessageRE:Building a CE Platform (modified 0 times) sin613
Profile
n/m, i found loadcepc on my WinCE3.0 DVD #1

-barton

12-19-2001 11:11:31

New MessageRE:Building a CE Platform (modified 0 times) TruGeek
Profile
Okay, now you guys are getting me excited! If you are able to run CE successfully would I be able to use my copy of Visual Studio CE (I'm guessing at the name, don't remember for sure) or eMbedded Visual Tools 3.0 to write apps for this platform? Imagine the possibilites!
TruGeek
12-19-2001 11:23:47

New MessageRE:Building a CE Platform (modified 0 times) keith721
Profile
abso-hacking-lutely

that's what it's all about, right?

happy holidays, and especially happy hacking!!

12-19-2001 12:18:10

New MessageRE:Building a CE Platform (modified 0 times) sin613
Profile
one of the "really great features" of windows ce was that it was manageable via snmp and/or http... has anyone tried to configure cesh for use over ethernet yet? i don't have my usb network adapter, so i haven't tried this yet... also, has anyone tried using activesync or the like to connect/configure the ipaq via usb? i ordered a male<->male usb cable to give this a try, if i come up with anything i'll post.

-barton

12-19-2001 12:44:45

New MessageRE:Building a CE Platform (modified 0 times) rman
Profile
You guys are all way ahead of me since I am still waiting for my kit from TigerDirect. Tomorrow I am going to try and setup the CEPC testing environment and see what this image does. For those that are curious, I am pretty certain that Microsoft would not approve of what we are doing here but to this point, nothing illegal is going on. We are all sort of feeding each other and everyone that wants to expiriment along will have to have at least the eval kit for the platfom builder (remember that it runs out after 60 days at which time you can no longer build). With that being the case, I don't think anything illegal is going on, just a sharing of knowledge (although some might consider that sinister). If someone took all this knowledge and created an image and made it available via download then it would be illegal but I don't think anyone here has that intention. Just curious minds seeing what they can accomplish.
12-19-2001 16:45:20

New MessageRE:Building a CE Platform (modified 0 times) keith721
Profile
just a note here -- don't try to install the CE Platform Builder on Win9x -- it won't work. it will install all the development language pieces successfully, but fails trying to read the .inf file for the platform builder suite. at least that's what it says is the problem. what it should say, very clearly, very much earlier in the process is: "You MUST use an NT platform to install this software."

keith721

12-19-2001 19:22:23

New MessageRE:Building a CE Platform (modified 0 times) keith721
Profile
just a quick update - the changes to ddflat.cpp for 800*600 compiled okay, and the image built okay, but when loaded via MS-DOS and LOADCEPC, it gives nothing but a blank screen. tried a second time with LOADCEPC /V, and status messages scrolled by, then said STARTING AT 0x.... in HUGE letters, like 320*200 and then the blank screen.

we may have to check and re-set the m_VesaMode value, to determine how it should be set . . .

12-21-2001 19:09:22

New MessageRE:Building a CE Platform (modified 0 times) keith721
Profile
more MickeySquish fun and wierdness: the /L option on the LOADCEPC program DOESN'T function the way the internal help message describes it, and the /D option ONLY works for the VGA8BPP display driver, not for the DDFLAT display driver.

The correct use of the LOADCEPC /L option (removing the need to hack ddflat.cpp) is:

C:\> LOADCEPC.EXE /L:800x600x16 NK.BIN

back to the original unmodified source, and we'll see what turns out . . .

12-21-2001 19:51:31

New MessageRE:Building a CE Platform (modified 0 times) keith721
Profile
Success

reverted to the original GPEFLAT.CPP file, regenerated the WinCE image, and used the CORRECT syntax for LOADCEPC.EXE, and now full-blown WinCE is running beautifully on my IA-1.

do i need to mention how happy i feel, right now ??

keith721

12-21-2001 20:20:34

New MessageRE:Building a CE Platform (modified 0 times) sin613
Profile
keith, if you are able to provide me with the nk0.bin, i can reconstruct the original ROM image for reburning to the internal SANdisk. how large of a nk0.bin file did you come up with?

-barton

12-21-2001 20:24:53

New MessageRE:Building a CE Platform (modified 0 times) keith721
Profile
about 7500 KB - not bad at all, really, and that was the MAXALL configuration
12-21-2001 21:01:24

New MessageRE:Building a CE Platform (modified 0 times) Rasmus
Profile | Email
I don't suppose this WinCE image is distributable? I don't know what the licensing situation is with this CE platform builder tool you guys are using. I'd just love to get a look at it to see how well it runs a browser compared to Linux on this little box.
( rasmus@php.net ;)
12-21-2001 21:12:26

New MessageRE:Building a CE Platform (modified 0 times) sin613
Profile
i think i'll take a stab using MAXALL tonight... i'm starting to get totally pissed with the current CE dist.

-barton

12-21-2001 21:17:15

New MessageRE:Building a CE Platform (modified 0 times) keith721
Profile
well, it runs, but it's definitely NOT perfect - right now, networking from the Platform Builder is all based on PCMCIA devices, like NE2000, Proxim wireless, and Xircom devices. my 3COM 3C129250 Kawasaki Ethernet device is plugged in, but neither recognized nor active.

does anyone know if we can hack apart the original NK0.BIN file from MSN 2.0 to obtain the necessary driver files??

12-21-2001 21:43:53

New MessageRE:Building a CE Platform (modified 0 times) sin613
Profile
why not try migrating to talisker beta 2, instead? it's a free download (nearly 500MB) but it has USB networking support so that's groovy.

-barton

12-21-2001 21:46:51

New MessageRE:Building a CE Platform (modified 0 times) keith721
Profile
[cynical]
is it a violation of the DMCA to reproduce portions of the EULA text ??
[/cynical]

1.c. Evaluation Purposes Only. This EULA only grants you the right to evaluate the SOFTWARE PRODUCT. You must upgrade to the retail version of Windows CE Platform Builder 3.0 in order to develop and distribute a product based upon Windows CE Platform Builder 3.0. The distribution of your product shall be goverened by the license agreement accompanying this retail release of Windows CE Platform Builder 3.0 and the applicable royalty bearing distribution license.

12-21-2001 21:53:32

New MessageRE:Building a CE Platform (modified 0 times) keith721
Profile
tried several times to download Talisker beta, but downloads always failed to start, or timed out - is it really all THAT hot?
12-21-2001 21:54:59

New MessageRE:Building a CE Platform (modified 0 times) sin613
Profile
one nice feature the dev-kit boasts is the ability to emulate the device for testing purposes... when i did some minor tinkering with talisker, i was *very* impressed.

-barton

12-21-2001 22:15:17

New MessageRE:Building a CE Platform (modified 0 times) rman
Profile
I have played with the latest talisker for a very short period and got the impression that it was emulation only. It doesn't look like a full blown pre-release. With that said the features looked very friendly. There is a device configuration that looks like it would match the IA1 pretty nicely. If anybody gets an image out of this thing, please post.

As a side note, I received my units yesterday from TigerDirect and had one up and running the latest Jailbait within a couple of hours. Kudos to all the people involved on this board, I found a combination of directions and images that suited my need quite well.

12-22-2001 10:41:15

New MessageRE:Building a CE Platform (modified 0 times) crimson
Profile
could someone with balls enough to not listen to the stupid DMCA law or Eula post a CE image? :) corporations wont hunt you down as they end up losing money if they do.
12-22-2001 13:41:49

New MessageRE:Building a CE Platform (modified 0 times) bignerdboy
Profile
Yo, if someone gets an image send it to me and I'll post it somewhere for every1 to get to.

Would love to have a CE image that would support a Pegasus I or II adapter.

If someone gets the image, shoot me an email at bignurdboy@yahoo.com

To email be sure to replace the "u" above with an "e" in nerd.

I've gotten my IA-1 with Jailbait and Dlink adapter to work sporadically by pumping for a DHCP value.

But for my uses, the CE version would be much easier for the family to use.

Happy Holidays all!

-bnb

12-22-2001 13:48:57

New MessageRE:Building a CE Platform (modified 0 times) keith721
Profile
unless you have USB and ethernet drivers for Windows CE 3.0 that can be merged into the image, it won't work so well -- it has NO NETWORK support usable with an un-hacked IA-1.

that being said, if you look at the back of the unit, where the icons are molded into the case, everything is there, EXCEPT for the RJ-45 jack beneath the network icon. is there an NE2000 compatible chip somewhere that can be grafted onto the IA-1 motherboard?

12-22-2001 14:22:13

New MessageRE:Building a CE Platform (modified 0 times) mshowman
Profile
The images you create with Talisker can be loaded on the IA-1 and work just fine (aside from lack of USB support)since the emulater emulates x86. I can't get the images to load higher than 8bpp resolution though.
12-22-2001 19:53:05

New MessageRE:Building a CE Platform (modified 0 times) rman
Profile
I installed Talisker on a dev box at work and did not give it much more than a cursory once-over. The thing that impressed me most was that it looked like it came out of the box with preset platforms that are close to what we are working with? Have you tried to build off of any of the web applicance or networked appliance type projects? I wonder if our USB answer is there somewhere?
12-22-2001 20:20:13

New MessageRE:Building a CE Platform (modified 0 times) mshowman
Profile
It's fairly simple to build and image in Talisker with every application you will ever need and getting a usb mouse and keyboard to work is no problem. Unfortunately I've compiled it with every possible component but it doesn't have any sound, modem, or USB ethernet drivers that work with the IA-1.
12-22-2001 23:14:27

New MessageRE:Building a CE Platform (modified 0 times) Curious
Profile
Can a version of CE written for MIPS processor run on an X86 processor, or can it be re-compiled with the Platform builder? I have various devices running CE 2.11 and 2.12 written for MIPS
12-23-2001 11:05:32

Reply to Thread | Printer |
All times are PSTPowered by UltraBoard v1.62



Copyright © 2000, Netmake Inc. All Rights Reserved.
See Terms and Conditions for more information.




i-opener opener laptop notebook computer help drivers dll free windows dos repair fix linux mac macintosh 2000 95 98 nt pc configure hardware software sound video netscape explorer network networking lan wan software cmos fat bios printer card mouse modem ide scsi cd rom controllers scanner tape hard drive cgi scripts source code mp3