Keith Koep
TECHNOLOGY PARTNER
ARM CONNECTED Windows Freescale Marvell


Using Eboot

Eboot is a Microsoft-specific implementation of a bootloader for Windows Embedded CE. It features image download, store and boot capabilities with an integration in the Platform-Builder IDE.

For Trizeps IV & Trizeps V, Keith & Koep delivers a sample eboot in the Board Support Packages (.\src\bootloader\eboot) for customers who would like to use it for training purpose.
It is booted from the Keith & Koep bootloader.
This article describes how to use eboot with Trizeps4 and Windows Embedded CE6. If you have a BSP prior to 2009Q1, you should take a look at the Patches & Workaround for Board-Support-Packages (RNDIS-KITL support). Other implementation of eboot work similiar (i.e. for Windows CE5 or Trizeps5).
Trizeps VI got an eboot-command built in.

Trizeps VI Eboot

To download an image using eboot, simply call:

:) eboot

from the bootloader command prompt.
The default setting of the eboot-command is:

  • use on-board ethernet-controller.
  • DHCP enabled.

This can be overriden by passing additional command-line parameters.

Transport setting

Eboot supports the on-board ethernet-controller and RNDIS(USB-Function) as transport. To use RNDIS pass rndis to the command-line.
ie.:

:) eboot rndis

If you want to use the ethernet-transport (default), you may also boot with:

:) eboot eth

DHCP or static IP

If you don't work on a network containing a DHCP-server, you may want to enter a static IP-address.
To use a static IP-address pass ipAddress=ipnumber to the command-line.
ie.:

:) eboot ipAddress=0x01fea8c0

Note that the IP-address is coded hexadecimal: 192.168.254.1 (c0.a8.fe.01)
RNDIS will default to the static IP: 192.168.254.1

KITL Settings

The kitl-settings are not read by eboot, but they are used by the booted Windows Embedded CE image.

To enable kitl, pass kitl to the command-line.
ie.:

:) eboot kitl

If no value is passed to kitl, kitl will boot with DHCP and VMINI enabled. VMINI is a virtual ethernet adapter that sits on top of kitl and allows TCP/IP connectivity while the ethernet-adapter is used for kitl-debugging.

kitl-flags
0×01 Kitl enable
0×04 DHCP enable
0×08 VMINI enable

To disable VMINI unset the VMINI-flag:

:) eboot kitl=0x5

This will enable KITL (0×01), DHCP (0×04) and disable VMINI (0×08).

Connect & Download with Eboot

  • Prepare a SD-Card to contain a file autoboot.bat with following contents:
boot nanddisk
eboot
  • Insert SD-Card.
  • Apply power to the board.
  • In Platform-Builder open the Connectivity Options dialog ( Target→Connectivity Options..).
  • Verify Ethernet is selected as Download, even if you use RNDIS.
  • Press Download Settings button.
  • Wait until device will appear in the Active Target devices:-list.
  • Select it and close dialog with OK.
  • Target→Attach Device

Now eboot should connect to Platform-builder and download the Windows Embedded CE 6 image. If you have problems, view the output on COM1: (38K4, 8N1) and verify thatDownload Image in the Core Service Settings is not set to Never. Disable your firewall.

KITL

If you want to use KITL after downloading the image, make following changes to your autoboot.bat-file:

display
eboot kitl <transport>

Where transport is either eth for ethernet or rndis for USB-function.

In the Target Device Connectivity Options-dialog, verify that Use device name from bootloader is checked in the Transport Settings.

Trizeps IV & Trizeps V Eboot (new version, since 2009Q1-BSP)

In the 2009Q1-BSP major improvements where made to eboot. Parameters, like if to use USB or ethernet as transport or if to use a static IP-address can be given through the bootloader-command-line. Now Windows Embedded CE images are automatically copied to the end of RAM. So no change of EXECUTABLE_PHYSICAL is needed for bigger images anymore.

Build Eboot

After you have done a build of your Windows Embedded CE6 Image, a file named eboot.nb0 should be in your _FLATRELEASEDIR. If you have done some changes to the eboot-source and only want to rebuild it:

  1. Open your Platform-Builder project with Microsoft Visual Studio.
  2. View the Solution Explorer and expand the node: ProjectName→.\WINCE600\tr4conxs\SRC\BOOTLOADER.
  3. Right-Click eboot and select Rebuild.

Modify Eboot

The default setting of the eboot-sample is:

  • use on-board ethernet-controller.
  • DHCP enabled.

This can be overriden by passing command-line parameters.

Transport setting

Eboot supports the on-board ethernet-controller and RNDIS(USB-Function) as transport (Trizeps4). Trizeps5 currently only supports ethernet-transport. To use RNDIS pass rndis to the command-line.
ie.:

> boot mmc eboot.nb0 rndis

If you want to use the default, you should boot with:

> boot mmc eboot.nb0 kitl dm9k_base

Note that this is not necessary for eboot. But it is for the CE-image, when using kitl.

DHCP or static IP

If you don't work on a network containing a DHCP-server, you may want to enter a static IP-address.
To use a static IP-address pass ipAddress=ipnumber to the command-line.
ie.:

> boot mmc eboot.nb0 kitl ipAddress=0x01fea8c0

Note that the IP-address is coded hexadecimal: 192.168.254.1 (c0.a8.fe.01)
RNDIS will default to the static IP: 192.168.254.1

KITL Settings

The kitl-settings are not read by eboot, but they are used by the booted Windows Embedded CE image.

To enable kitl, pass kitl to the command-line.
ie.:

> boot mmc eboot.nb0 kitl dm9k_base

If no value is passed to kitl, kitl will boot with DHCP enabled and VMINI disabled. VMINI is a virtual ethernet adapter that sits on top of kitl and allows TCP/IP connectivity while the ethernet-adapter is used for kitl-debugging.

kitl-flags
0×01 Kitl enable
0×04 DHCP enable
0×08 VMINI enable

To enable VMINI set the VMINI-flag:

> boot mmc eboot.nb0 kitl=0xd dm9k_base

This will enable KITL (0×01), DHCP (0×04) and VMINI (0×08).

Image Start-Offset

Please note that eboot will load the image to the end of RAM. This will leave RAM-Size minus Image-Size(nk_ram.nb0) to use as Storage and Program-RAM.

Too big images (typical debug images) might not load correctly, because too less RAM is left for the operating system. See How to Debug a Windows Embedded CE 6 Image for a workaround. Alternativly you may use a 128MB-RAM Trizeps-module.

Connect & Download with Eboot

  • Copy eboot.nb0 to a SD-Card.
  • Create file autoboot.bat with following contents:
display
boot mmc eboot.nb0 kitl=0xd dm9k_base
  • Insert SD-Card.
  • Apply power to the board.
  • In Platform-Builder open the Connectivity Options dialog ( Target→Connectivity Options..).
  • Verify Ethernet is selected as Download, even if you use RNDIS.
  • Press Download Settings button.
  • Wait until device will appear in the Active Target devices:-list.
  • Select it and close dialog with OK.
  • Target→Attach Device

Now eboot should connect to Platform-builder and download the Windows Embedded CE 6 image. If you have problems, view the output on COM1: (38K4, 8N1) and verify thatDownload Image in the Core Service Settings is not set to Never. Disable your firewall.

Making eboot persistant

If you don't want to start eboot through a SD-card, you may store it to flash. For this use the flash-version, named ebootrom.nb0.

  1. Enter the bootloader-command-prompt (Press <ESC> on startup with COM1: at 38,4kBaud, 8n1).
  2. Type: boot mmc ebootrom.nb0
  3. Create a boot-script; ie.: fscript.bat.
  4. Store this boot-script with: store fscript.bat

Example of a boot-script:

display
fb kitl=0xd dm9k_base

KITL

If you want to use KITL after downloading the image, make following changes to your autoboot.bat-file:

display
boot mmc nk.nb0 kitl <transport>

Where transport is either dm9k_base for ethernet or rndis for USB-function.

In the Target Device Connectivity Options-dialog, verify that Use device name from bootloader is checked in the Transport Settings.

Trizeps IV Eboot (old version, prior 2009Q1)

Build Eboot

After you have done a build of your Windows Embedded CE6 Image, a file named eboot.nb0 should be in your _FLATRELEASEDIR. If you have done some changes to the eboot-source and only want to rebuild it:

  1. Open your Platform-Builder project with Microsoft Visual Studio.
  2. View the Solution Explorer and expand the node: ProjectName→.\WINCE600\tr4conxs\SRC\BOOTLOADER.
  3. Right-Click eboot and select Rebuild.

Modify Eboot

The default setting of the eboot-sample is:

  • use on-board ethernet-controller.
  • DHCP enabled.
  • Copy Windows Embedded CE Image to 32MB offset in RAM.

Transport setting

Eboot supports the on-board ethernet-controller and RNDIS(USB-Function) as transport (Trizeps4). Trizeps5 currently only supports ethernet-transport. To change to RNDIS, set PLAT_EBOOT_RNDIS=1 ( Project→ProjectName Properties→Configuration Properties→Environment) and rebuild eboot.

DHCP or static IP

If you don't work on a network containing a DHCP-server, you may want to enter a static IP-address.
Open loader.h found in the eboot source-directory (.\tr4conxs\src\bootloader\eboot\main).

#ifdef PLAT_EBOOT_RNDIS
  #define USE_DHCP      0
  #define IP_ADDRESS    0x01fea8c0
  #define SUBNET_MASK   0xFFFFFF00
#else
  #define USE_DHCP      1
  #define IP_ADDRESS    0x01fea8c0
  #define SUBNET_MASK   0xFFFFFF00
#endif

To use a static IP, change USE_DHCP to 0. As you can see, RNDIS uses the static IP: 192.168.254.1 with a Subnet-Mask of 255.255.255.0.

Changing Image Start-Offset

Unlike the Keith & Koep Bootloader, the eboot sample does not support dynamic loading of the Windows Embedded CE 6 image to the end of RAM.
The RAM between RAM-adress 0 and image start-offset is used as free RAM by the operating system. The Start-Offset can be adjusted by changing the value of EXECUTABLE_PHYSICAL.
( see mt6_io.inc in .\tr4conxs\src\inc):

EXECUTABLE_PHYSICAL            EQU    0xa2000000

Note that the RAM-base is 0xa0000000. The default is 32MB (0×02000000). This leaves 32MB for the Windows Embedded CE image on a 64MB-module and 32MB of RAM for the operating system. Note that system may fail to boot if the offset is too big or too small. Use the method described in How to Debug a Windows Embedded CE 6 Image to reduce size of a debug image. Alternativly you may use a 128MB-RAM Trizeps-module.

Connect & Download with Eboot

  • Copy eboot.nb0 to a SD-Card.
  • Create file autoboot.bat with following contents:
display
boot mmc eboot.nb0
  • Insert SD-Card.
  • Apply power to the board.
  • In Platform-Builder open the Connectivity Options dialog ( Target→Connectivity Options..).
  • Verify Ethernet is selected as Download, even if you use RNDIS.
  • Press Download Settings button.
  • Wait until device will appear in the Active Target devices:-list.
  • Select it and close dialog with OK.
  • Target→Attach Device

Now eboot should connect to Platform-builder and download the Windows Embedded CE 6 image. If you have problems, view the output on COM1: (38K4, 8N1) and verify thatDownload Image in the Core Service Settings is not set to Never. Disable your firewall.

KITL

If you want to use KITL after downloading the image, make following changes to your autoboot.bat-file:

display
boot mmc nk.nb0 kitl <transport>

Where transport is either dm9k_base for ethernet or rndis for USB-function.

In the Target Device Connectivity Options-dialog, verify that Use device name from bootloader is checked in the Transport Settings.

Related Articles

(C) 2013 Keith & Koep GmbH. Alle Rechte vorbehalten. Nutzungsbedingungen
(C) 2013 Keith & Koep GmbH. All rights reserved. Terms of Use