DOCUMENT:Q189139 17-JUL-2001 [visualc] TITLE :INFO: x86 DEMO7 Sample and Configuration Information PRODUCT :Microsoft C Compiler PROD/VER:WINDOWS: OPER/SYS: KEYWORDS:kbOAK kbOSWinCE200 ====================================================================== ------------------------------------------------------------------------------- The information in this article applies to: - Microsoft Windows CE Embedded Toolkit for Visual C++ 5.0 ------------------------------------------------------------------------------- SUMMARY ======= The Windows CE Embedded Toolkit for Visual C++ 5.0 has several sample projects named DEMO1, DEMO2, ..., DEMO7, and DEMO8. These samples build a Windows CE kernel (Nk.bin file) of different footprints and features for embedded systems. The DEMO7 sample builds a Windows CE system similar to a Windows CE 2.0 Handheld PC (H/PC) operating system. If you have an x86 machine with sufficient RAM (16 MB recommended), you can configure the x86 machine as a Windows CE PC-Based Hardware Development Platform target (CEPC) to run these demos and develop applications for it. This article describes how to build DEMO7 for x86, and then configure the x86 machine for Windows CE. A Windows NT host system is needed to build and debug the CEPC operating system and applications. You can download and debug an application with CEPC after building an application using Visual C++ 5.0 and the Windows CE Embedded Toolkit for Visual C++ 5.0 on the host system. To do this, you need to connect the host and target machines using a null modem cable via the COM ports of the two machines. The procedure is described below. MORE INFORMATION ================ Minimum Hardware and OS Requirement ----------------------------------- - OS: MS-DOS version 6.22 or later. - CPU: Any Intel 486 or Pentium CPU, ISA and/or PCI bus. The Pentium Pro CPU family is not supported. - RAM: 16 MB recommended. - Video Card: Graphics Device Interface (GDI) resolution of 320x200 on most VGA-compatible video cards. GDI resolutions of 320x200, 480x240, or 640x480 on Tseng Labs ET4000 or S3 (Trio 64 Chipset) video cards. GDI resolution of 640x480 on Diamond Stealth 64 video cards. - Keyboard or Pointing Device: Microsoft Mouse compatible on PS/2 port (Bus Mouse). - Debug Serial Port and CEPC Communication Serial port assigned to COM1 and COM2 respectively: (16550 UART recommended; 8250 UART will work at lower speeds). The cable should be a standard null modem cable. - Ppsh Port/Cable (Optional): Bi-directional ECP parallel port assigned to a normal LPT1 address and interrupt for use with the parallel port shell utility (Ppsh). Most newer PCs (with a P5 or greater) are equipped with a bi-directional parallel port; however, bi-directional mode is generally not set by default. Bi-directional mode can be set using the development workstation's BIOS setup utility. A custom parallel cable is required. See PC-Based Development Platform Parallel Port Cable Specification in the online documentation if you want to build it yourself. Or, order this cable from Redmond Cable, Part Number: 64355913: Redmond Cable 15331 NE 90th Street Redmond, WA 98052 Telephone: (425) 882-2009, Fax: (425) 883-1430 NOTE: You need the parallel cable and the use of the Ppsh utility for transferring binary images only if there is no other way to transfer an image to the target machine from the host machine. If you have a network connection between the two computers or already have file transfer capability (for example, Laplink, Direct Cable Connection, and so on) then you do not need a parallel cable. The files needed to configure the target for CEPC are Loadcepc.exe and Nk.bin. The Loadcepc.exe file fits on a floppy disk. The size of the Nk.bin file depends on the DEMO# sample (where # is 1,2,...,8) you build and the build options. The Nk.bin file for DEMO7 is about 5 MB in size for the default retail build. Building the DEMO7 Sample ------------------------- The following discussion assumes that you have installed the embedded toolkit in directory C:\WINCE of the host machine. If you have already built a DEMO# sample on your host, then delete the Demo#.bif file in the C:\WINCE\Platform\CEPC\ directory. Also, delete the C:\WINCE\Release directory if it exists. 1. Open a DOS command window on the host machine. Go to the C:\WINCE\Public\Common\OAK\MISC\ directory. Run the following command from the command prompt to configure the build environment for DEMO7 on CEPC platform: WINCE.BAT x86 i486 CE DEMO7 CEPC A successful run of this command puts you in the C:\WINCE\ directory and asks you to run "blddemo" from the command prompt. This command starts the build process. Once the build process is complete, note that a C:\WINCE\Release\ directory was created; the Nk.bin file built for the DEMO7 sample is in this directory. NOTE: The default build is for the S3 Video card. To build for ET4000 and others, add the following line to the Demo7.bat file in the C:\WINCE\PUBLIC\DEMO7\ directory: set CEPC_DDI_VGA8BPP=1 Note that the above setting builds the Nk.bin image allowing you to use it on most VGA-compatible video cards at the default resolution of 320x200. 2. Create a directory on the DOS target machine and copy the Loadcepc.exe file to this directory from the C:\WINCE\PUBLIC\COMMON\OAK\BIN\I386\ host directory. Use a floppy disk or network connection to copy the file. 3. You must copy the Nk.bin file from the C:\WINCE\release directory to the target machine directory created in step 2. Use a network connection or other means to copy the file. If you have to use the Ppsh utility, then boot the target machine into DOS mode. On the host machine, open a DOS window and switch to the C:\WINCE\Release\ directory. Type the following command to start the utility: PPSH -p CEPC NK.BIN On the target machine, in the directory where Loadcepc.exe was copied, run the following command: LOADCEPC -g NK.BIN This action starts the copy process. When you see the "100 percent Complete" message and the command prompt on the target machine, press CTRL+C on the host machine command window to exit out of Ppsh and back to the command prompt. 4. Reboot the target machine in DOS mode, or if a Windows 95 machine, restart in DOS mode. If you reboot with a DOS boot disk, make sure that you have the Himem.sys file copied to the boot floppy disk and have a Config.sys file with the following entry: device=HIMEM.SYS 5. You are now ready to start Windows CE on your target machine. Type the following command on the target machine's command prompt if you have an S3 or ET4000 video card. This command start Windows CE in 640x480 resolution; other cards start Windows CE in the default 320x200 resolution: LOADCEPC /D:2 The 0, 1, or 2, values for /D are 320x200, 480x240, or 640x480 respectively; the default value is 0. 6. You can now enjoy your new Windows CE machine. On the Start menu, click Suspend to exit. To start the Windows Explorer, on the Start menu, click Run, type explorer, and click OK or press ENTER. If you are using the 320x200 resolution, you may not see the entire dialog box. You may still access other parts of the dialog box by dragging the dialog box right or left by using the mouse or the accelerator keys. 7. The DEMO7 sample built using the procedure above divides the 16 MB memory of your hardware based on the entries in the Config.bib file in C:\WINCE\PLATFORM\CEPC\FILES directory. The following entry in the MEMORY section is used (by default IMGMORERAM is not set): IF IMGMORERAM NK 80200000 00500000 RAMIMAGE RAM 80700000 00800000 RAM ENDIF IF IMGMORERAM ! NK 80200000 00800000 RAMIMAGE RAM 80A00000 00500000 RAM ENDIF The NK entry corresponds to the ROM size used for Nk.bin. The RAM entry corresponds to the memory available for storage and applications. The OS needs 2 MB of memory. The DEMO7 sample, therefore, has 8 MB for Nk.bin, 5 MB for the applications, and 3 MB remaining for the OS, in a 16 MB system. Because Nk.bin is about 5 MB for DEMO7, you can get more memory for your applications (8 MB) if you set IMGMORERAM in the DEMO7.bat file as shown below and build again. set IMGMORERAM=1 Because the OS only needs 2 MB, you can increase your application's memory to 9 MB if you change the RAM entry as shown below. RAM 80700000 00900000 RAM Note that if your system has 20 MB or more memory, you can't build DEMO7 or any sample to use more than 16 MB total (ROM+RAM+OS) memory. Also, DEMO7 does not fit in 8 MB. Your system might reboot after running LOADCEPC if you try to run DEMO7 in an 8 MB system. If you have only 8 MB in your system, and your Nk.bin file size is small, you can build and run the kernel. For example, if your Nk.bin size is 2 MB and in an 8 MB system, you may use the following entries in the MEMORY section of the Config.bib file, leaving 2 MB for the OS; applications get 4 MB. NK 80200000 00200000 RAMIMAGE RAM 80400000 00400000 RAM The amount of memory assigned for storage and program use can be viewed and adjusted in the "System" applet in Control Panel. Setting up the CEPC Target and Windows NT Host Communication ------------------------------------------------------------ You need to connect the two machines with a serial null modem cable. Physical port COM2 must be used in the target machine because the CEPC kernel reserves physical port COM1 for debugging purposes. Physical port COM2 is assigned to logical port COM1 on the target machine while Windows CE is running. On the host machine you may use port COM1 or COM2 and configure accordingly. 1. Make sure that the RAS service is running in your host Windows NT machine. To verify that it is running, on the Start menu, point to Programs, Administrative Tools, and then Remote Access Admin. You should see your computer name and condition as running. If not, then select your computer name and select Server, Start Remote Access Service from the menu. If the service fails to start, go to next paragraph below. Otherwise, select Users, Permission, from the menu. Select the user that will make the connection, and verify that the "Grant dialin permission to user" box is selected. If the RAS Service is not shown as running, you may not have rebooted the machine after installing Windows CE Services. Reboot the machine and see if it is running; otherwise, do the following: a. On the Start menu, point to Settings and click Control Panel. b. Double-click the Network icon, point to Services, Remote Access Service, Properties. c. Select one of the installed ports and click Configure. d. Click either Receive calls only or Dial out and Receive calls. e. Click Close, Continue, Close, and restart Windows NT when prompted. 2. On the Start menu, point to Programs, then click Microsoft Windows CE Services, then Mobile Devices. The Mobile Devices Explorer will start up. From the File menu make sure that "Enable Serial Connection" is selected. From the File menu, click Communications. Note that the correct COM (COM1 or COM2) port and Baud rate (default 19200) is shown and there is a check mark on the "Enable mobile device connection" and on the "Enabled" box in the "Device Connection via Serial Port" box. Click the Preferences tab and select both boxes. Click OK to clear the dialog box. This procedure also verifies that Windows CE Services is running. 3. If Windows CE is not running on the DOS machine, run LOADCEPC as described in step 4 above in the "Building the DEMO7 Sample" section. On the Start menu, point to Programs, Communications, and select Remote Networking. Select Connection, then New. A default "My Connection" is created. Select Direct Connection, then click OK. Select "Serial Cable on COM1," then click Configure. Check that the same baud rate is selected, as specified on step 2 in the host NT machine. Click OK, and OK again. In the Connection window, click Connection, then Exit. 4. On the target machine, from the Start menu, point to Settings, and double-click the Communications icon. Click the PC Connection tab. Verify that the "Allow connection [ASCII 133]" check box is selected. If you can not see the entire dialog box, using the mouse, drag the title bar to the left. You will see the Change button. Click the Change button or press ALT+C on the keyboard. Select "My Connection" from the list box. Drag the dialog box left if you do not see the arrow of the list box. Click OK, and OK again, and close Control Panel. This procedure is needed to establish a connection between the two computers using "My Connection" communication properties on the target side. 5. On the target machine, on the Start menu, point to Programs, Communications, PC Link. This action starts Repllog.exe. A dialog box is displayed with user name, password, and domain name prompts. Enter the username for which the Windows NT machine has the dial-in permission. Once the connection is established, the Mobile Devices window titled DEMO7 is displayed on the host Windows NT machine, and the corresponding directories of the x86 CEPC target machine. If you drag a file from Windows NT Explorer to the Mobile Devices Explorer, the file will be copied to the target Windows CE machine. You can verify the presence of the file on the target machine by running Explorer.exe (on the Start menu, click Run, and type Explorer.exe). NOTE: The settings for the target machine must be repeated every time you reboot the machine. If PC Link in the above step does not establish a connection and times out, your serial connection may not be working properly. Troubleshooting the Serial Connection ------------------------------------- 1. On the host machine, make sure Mobile Devices is not running. Start Hyper Terminal (on the Start menu, point to Programs, Accessories, and click HyperTerminal. Give a name and select the correct port (COM1 or COM2) in the "Connect using" list box. Select a baud rate; remember to use the same baud rate on the target side. 2. On the target Windows CE machine, on the Start menu, point to Programs, Communication, Terminal, and make a new session. The default name is My Session. Click Configure and select the baud rate as in step 1. Select the Manual Dial check box. If you can not see the entire dialog box, press ALT+M, and click OK. Type any number in the Telephone Number box, click the Communication tab, and press Enter. A window with a blinking cursor is displayed. Typing should cause text to show on the host HyperTerminal window. If not, the serial communication is not working. Check that the correct port and baud rate is used and check the cable. Once the serial communication works, try PC Link again in step 5 under "Setting up the CEPC Target and Windows NT Host Communication." Building an Application in VC++ 5.0 and Run/Debug ------------------------------------------------- 1. You must have connectivity established between the two computers via Windows CE Services as described in the previous section. 2. Create a Windows CE project in Visual C++ Developer Studio. The project platform type should be Win32 (WINCE x86), Release or Debug. Make sure that the list box in Developer Studio shows H/PC Ver. 2.00. On the Developer Studio Tools menu, click Options, click the Directories Tab, and in the "Show Directories for" list box, verify that "Executable files" is selected and that H/PC 2.00 includes the path for Pfile.exe, which is C:\ProgramFiles\DevStudio\SharedIDE\Bin. This process ensures that you do not get the "error spawning pfile.exe" message. The built application EXE is automatically copied to the target CEPC if you have selected Always Download on the Build menu. 3. From the Developer Studio Build menu you can execute your application, or if it is a debug build, you can debug your application by setting breakpoints and using F5 (Debug Go), F11 (Step Into), and so on. If a dialog box is displayed asking for the location of Mfcce20[d].dll or Olece20[d].dll on the local machine, click Cancel. 4. If you are building an MFC project, then the MFC DLL Mfcce20[d].dll from C:\Program Files\DevStudio\WCE\MFC\LIB\WCE200\WCEX86 must be copied to the CEPC target machine. To copy, you can drag the file from your Windows NT Explorer to the Mobile Devices Explorer window. You may also have to copy the Olece20[d].dll file. You can use Dumpbin.exe to help determine the application's DLL dependencies. 5. If you created a DLL for use with your application and want to debug the DLL code, make sure that you add the DLL. On the Project menu, click Settings, Debug, Additional DLLs. Add the DLL in the Local Name field as well as in the Remote Name field. Local Name should have the full path, Remote Name should be wce:MYDLL.DLL. Include a subdirectory in the path if necessary. Additional query words: kbDSupport kbvc500 kbwince300 ====================================================================== Keywords : kbOAK kbOSWinCE200 Technology : kbAudDeveloper kbWinCEETKSearch kbWinCESearch kbWinCEETKVC500 Version : WINDOWS: Issue type : kbinfo ============================================================================= THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES SO THE FOREGOING LIMITATION MAY NOT APPLY. Copyright Microsoft Corporation 2001.