Creating a Windows CE .NET-based CEPC

Posted January 28, 2003

Chat Date: January 23, 2003

Chat Participants:

  • Jeff Glaum, Software Development Lead
  • Kyle J. Sparks, Support Engineer for Windows Embedded Systems
  • Jim DeBroeck, Support Engineer for Windows Embedded Systems
  • Susheel Gopalan, Support Engineer for Windows Embedded Systems
  • Michael Fosmire, Community Program Manager

Moderator: Mike Fos (Microsoft):
Welcome to today's Chat. Our topic is "Creating a Windows CE .NET-based CEPC". Questions, comments, and suggestions are welcome.

Moderator: Mike Fos (Microsoft):
Let’s introduce our hosts for today.

Host: Jeff Gla (Microsoft):
My name is Jeff - I'm a software development lead at Microsoft and I'm responsible for the Windows CE board support packages (BSPs) that ship in Platform Builder.

Host: Kyles (Microsoft):
I'm Kyle J. Sparks, a Windows CE Embedded support engineer supporting customers working with Platform Builder and Windows CE.

Host: Jim (Microsoft):
I'm Jim - a Support Engineer for Windows Embedded Systems. I've worked at MS for the past eight years and recently joined Embedded Systems support.

Moderator: Mike Fos (Microsoft):
Welcome everyone, let’s get started!

Host: Jeff Gla (Microsoft):
Q: are ZF-x86 processors included in the platform builder as CEPC:x86

A: The following x86 processors are supported by the CEPC BSP https://msdn.microsoft.com/embedded/usewinemb/ce/supproc/default.aspx

Host: Jeff Gla (Microsoft):
Q: What are the major differences from PB 3.0? Any major departures?

A: What area of the OS are you concerned about?

Host: Jeff Gla (Microsoft):
Q: Apart from making it .NET based, are there any other changes? Not some part of the OS specifically, if you were to list the main differences, what would those be?

A: We've made a number of changes to the OS between 3.0 and 4.1 - updated drivers, new BSPs, kernel changes, etc. Most likely to affect you in the early porting work would be the changes to the OAL tick timer code.

Moderator: Mike Fos (Microsoft):
Q: Is it possible to use C# language to design CE .NET?

A: Do you mean creating a C# application for CE .NET?

Host: Jim (Microsoft):
A: Through Visual Studio and the .Net framework one can write a C# application to run on the compact framework. However, one cannot compile to native code.

Host: Kyles (Microsoft):
Q: Are there any QFEs or patches to the USB stack on CE .NET?

A: Just 1 so far - Q324793 for Windows CE .NET 4.1 is an RNDIS QFE - https://www.microsoft.com/downloads/details.aspx?FamilyID=033afc0e-b968-42f3-9a19-b2e71040f0f0&DisplayLang;=en

Host: Jeff Gla (Microsoft):
Q: Could you expand on the OAL tick timer code a bit?

A: We've removed diffmsec and have made other changes in our OALs to allow for variable tick timing (OEMIdle).

Host: Jeff Gla (Microsoft):
Q: Any portability problem we should consider in porting to .net cepc?

A: Typically not. What are you porting and from which platform/CPU? Unlike RISC, you typically don't run into alignment problems, etc. as you would in porting from x86 to RISC.

Host: Kyles (Microsoft):
Q: Apart from what is described in the tutorials, how do we connect a CEPC to our desktop development PC via LAN / serial connection?

A: With you CEPC connected via Ethernet, you set up the Ethernet connection in PB using "Configure Remote Connection" on the Target menu to set up the Ethernet for debug and download. With serial, you can connect and debug over Serial KITL by setting it

Moderator: Mike Fos (Microsoft):
Q: Is it ok for me to ask what "Windows Installer is?

A: Although the question is not within the scope of this chat, you might want to check out: https://www.microsoft.com/windows2000/community/centers/management/msi_faq.asp

 

Host Guest_susheelg_MS:

Q: John-Intermec : Are currently available hardware components supported in the CEPC? In the past, you had to pay a premium to get obsolete hardware that was supported by CEPC.

A: Did you have a specific hardware in mind?

Host: Jeff Gla (Microsoft):
Q: Is there support in CE .NET to specify more than 115000 Kbps speed for a virtual serial port?

A: If your hardware UART supports speeds in excess of 115200 then Windows CE can support it.

Host: Kyles (Microsoft):
Q: APK: What drivers for sound cards will be there ?

A: Our Hardware Compatibility List shows each of the drivers we support between 4.1, 4.0 and 3.0 for cross reference.

Moderator: Mike Fos (Microsoft):
Hello. For those just joining the chat - Our topic is “Creating a Windows CE .NET-based CEPC”. Questions, comments and suggestions are welcome.

Host: Jeff Gla (Microsoft):
Q: lets say x86 3.0 based nk.bin to .net cepc

A: We document the the specific differences between 3.0 and .NET in the .NET Platform Builder help documentation. From an OAL standpoint, the major change has to do with the tick timer (see the earlier question). In .NET, our example OALs contain conditionally compiled code that demonstrate the differences in this area between 3.0 and .NET.

Host: Kyles (Microsoft):
Q: What might be the problems when downloading & debugging a platform image through ethernet / serial connection? Why can't I see anything in the available devices list although there's no problem with the hardware?

A: With your CEPC connected over Ethernet, you should boot EBOOT.BIN with LOADCEPC to do the BOOTME broadcast to 255.255.255.255. Your PB machine will then see it pop into the list of available devices if it is not already in the list on the right.

Host: Kyles (Microsoft):
Q: I have seen problem opening the project created on platform builder 3.0 to 4.0 any issues known or documented to backward support?

A: You can migrate your platform to 4.x from 3.0, but opening a 3.0 workspace in 4.x is not necessarily going to work.

Host: Jeff Gla (Microsoft):
Q: But if I configure a dial up connection using a modem, I see the top end of the speed is 115200 Kbps. Is it true that CE .NET will automatically reflect higher speeds based on UART speed?

A: The serial driver we ship would need to be modified to support the faster baud rates if the hardware supported it. Since this isn't generically available, our sample serial driver code doesn't implement (to my knowledge) speeds above 115200.

Host: Jim (Microsoft):
Q: Is there DCOM support under CE.NET ?

A: Yes. DCOM support can be added to a CE .Net platform configuration by selecting it from the catalog if it is not already included in the base configuration.

Host: Kyles (Microsoft):
Q: Will KITL ever be supported over other transports such as USB and wireless?

A: Plans for future expansion of KITL have not been formalized at this time.

Host: Jeff Gla (Microsoft):
Q: In other words, is it true that CE OS will detect the max speed of UARTs present in the system and reflect it in modem settings?

A: The max speed is determined by the driver. We don't "autodetect" the speed.

 

Host Guest_susheelg_MS:

Q: John-Intermec : Regarding my previous question about hardware supported, it pertained more to general hardware considerations such as motherboards, video cards, etc.

A: I had not much problems adapting my CEPC to different video cards on CE.Net. The flat video driver appears to work with most Video cards. One exception I have seen is one of the epson video cards.

Host: Jeff Gla (Microsoft):
Q: It means that I should be able to modify the available serial mdd/pdd driver to set speeds higher than 115200?

A: Yes.

Host: Jim (Microsoft):
Q: is there any just in compilation support?

A: Are you asking about Just in Time compilation for the .Net framework run-time?

Host: Jim (Microsoft):
Q: How about out-of-proc com servers?

A: Yes. But be aware that as in most things on CE, compared to the desktop, it is a subset of functionality.

Host: Kyles (Microsoft):
Q: Why hyperterminal doesn't show anything when I boot the CEPC using loadcepc /v sboot.bin? Why platform builder download window always waits for BOOTME messages?

A: Debug output from SBOOT.BIN will be on COM1, 38400 n81, and download will use COM2.

Moderator: Mike Fos (Microsoft):
Q: How to mark COM DLLs self register, during nk.bin build process in CE.NET?

A: Our subject matter experts in the chat today are the CEPC creation experts. You may want to consider posting your question to the public newsgroups.

Host: Jeff Gla (Microsoft):
Q: How can we configure Windows CE to connect to the internet through LAN after the CEPC boots up and how can we save these settings?

A: The network settings enabling the NDIS miniport driver for your NIC is stored in the registry and build time. The Platform Builder documentation does a good job of describing this. Also, you may want to look at common.reg for examples.

 

Host Guest_susheelg_MS:

Q: How can we configure Windows CE to connect to the internet through LAN after the CEPC boots up and how can we save these settings?

A: Goto View->Internet Options then select the Connection tab - check Une Lan, check other box as appropriate and make sure you have a persistent registry.

Host: Jeff Gla (Microsoft):
Q: Do you mean COM ports of the host PC? download-COM2,debug-COM1?

A: COM1 on the target is for debug messages from sboot.bin. COM2 on the target is used for image download. How they're attached to the host is up to you.

Host: Jeff Gla (Microsoft):
Q: Does one always have to build a nk.bin if any of the components have changed, or is there facility for in-place editing and build and execute?

A: There are a number of ways to updated code on the target itself (putting modules on a filesystem, etc.). If you want to generate new download images, however, they yes, you need to rebuild NK.BIN. We don't provide BIN editing tools. You may also want to look into multi-region (multi-XIP) images - with them, you generate multiple BIN files and would only need to update the affected region.

Host: Kyles (Microsoft):
Q: pelekanon: My network environment is a workgroup without a domain and we all give static IPs to our PCs. Do I have to assign these settings in the platform registry files before I build the image?

A: The IP address for downloading can be specified on the command line to LOADCEPC when you boot from the boot floppy. The IP address of the product ethernet in the CEPC is stored in the registry, and can be put in the registry in the build.

Host: Jeff Gla (Microsoft):
Q: Question on the topic of this discussion - does CE.NET as such pose any possible challenges for CEPC development compared to CEPB 3.0?

A: Nothing more challenging than 3.0 development.

Host: Kyles (Microsoft):
Q: pelekanon: Can I reach the CEPC running Windows CE from another PC on the LAN and change/edit files in it if sharing property is available for this? Is there such an option?

A: You can use Remote Registry Editor to edit the registry on a running CEPC over the LAN using Manual Server TCP/IP, and there are various servers you can build into your CEPC to be able to connect and drop files onto it (RAS/PPTP or FTP in, or TELNET to connect to the device, and use TELNET to go from the CEPC out to a server and grab files)

Host: Jeff Gla (Microsoft):
Q: So, if one had multiple XIPs setup, then is it possible that in the process of debugging and stepping through source code, one could make changes , compile and , boom !!, the new changes will be in effect immediately without having to reset the CEPC ?

A: Multiple regions (multi-XIP) is orthogonal to the issue of how you actually do the update on the target. If your update strategy is to change binaries on a live system, then you need to handle these software dependencies yourself. For more information on multi-region, etc. the following provides a relatively good overview: https://msdn.microsoft.com/library/en-us/dncenet/html/systemmemorymgmtwince.asp?

Host: Kyles (Microsoft):
Q: prasanna: Is there any registry tools supported by default in cepc?

A: Local tools that run on the CEPC are not provided by Microsoft, but there are some third-party solutions. Remote Registry Editor can connect over a Platform Manager connection to the device and allow you to edit the registry on the device from a remote PC.

Host: Jeff Gla (Microsoft):
Q: Why are there 3 different kinds of boot disks (cepcbootdisk.144,setupdisk.144,bootdisk.144) ? What are their specifications?

A: For x86-based systems we offer three different bootloaders: the older loadcepc/eboot.bin solution that requires DOS, the BIOS loader which replaces DOS/loadcepc, and romboot which is a BIOS-replacement loader.

The disk images you mentioned, in order, are: loadcepc bootdisk, BIOSloader setup disk for setting up a storage device, and a BIOSloader boot disk that demonstrates the loader on a floppy. The Platform Builder documentation (as does the MSDN link I just posted) describes the various loaders.

Host: Jim (Microsoft):
Q: Is there a way supported to do just in time compilation

A: The compact framework is using an implementation of the .Net framework run-time so in a sense, there is just-in-time via the use of the framework's Intermediate Language.

Host: Kyles (Microsoft):
Q: Why doesn't "3. Boot from ethernet (via eboot.bin)" automatically loads the image and why do I have to assign an IP address?

A: When you select "Boot from Ethernet (via eboot.bin)", it defaults to using no IP address (NET_IP is not set in autoexec.bat). You must have a DHCP server on the LAN, or you must edit autoexec.bat to include the STATIC_IP that you want to use for your CEPC download.

Host: Jeff Gla (Microsoft):
If you don't get your questions answered today, please be aware that Microsoft employees regularly read and respond to questions/issues on our newsgroups. The groups applicable to today's discussion would be microsoft.public.windowsce.platbuilder and microsoft.public.windowsce.targeted.device).

Moderator: Mike Fos (Microsoft):
Q: Could you please explain more on just-in-time

A: Just-in-time compilation is not really on-topic for a CEPC chat. If you need more information, I'd encourage you to post your question to the public newsgroups.

Host: Kyles (Microsoft):
Q: So just connecting the CEPC to the dev. PC via a cross ethernet cable is not enough? A DHCP server must be installed on the dev. PC?

A: Put the IP in the autoexec.bat, or have DHCP on the LAN. IP can be specified on the command line to LOADCEPC.EXE. Type 'LOADCEPC /?" for options.

Moderator: Mike Fos (Microsoft):
Thanks for joining us today and thanks for the questions. A special thank you to all our hosts today: Jeff, Kyle, Susheel and Jim. It's time for us to go now.

Moderator: Mike Fos (Microsoft):
You'll be able to find the transcript of this chat soon on the MSDN Web site at https://msdn.microsoft.com/chats Please see the chats schedule for upcoming topics.

Top of pageTop of page