Please note as of Wednesday, August 15th, 2018 this wiki has been set to read only. If you are a TI Employee and require Edit ability please contact x0211426 from the company directory.

WinCE-TIBSP FAQ

From Texas Instruments Wiki
Jump to: navigation, search

Contents

General Questions

Q: What is TI plan with respect to WinCE availability on various SOCs?

Depending upon market needs, TI plans to offer WinCE port on all Sitara, Integra and DaVinci products. Currently, two main BSP releases are offered: one for ARM9 family of processors and another for Cortex A8 family.

Q: What SOCs are currently supported by WinCE BSPs?

ARM9 release supports AM17xx, AM18xx, OMAP-L13x parts. ARM-A8 release supports OMAP35xx, DM37xx, AM37xx, AM35xx, AM335x, AM387x processors.

Q: Where do I get BSPs from?

Go to www.ti.com/wince, navigate to appropriate product folder and then click on "Tools & Software" to see complete software offering for that product.

Q: Do we have to pay for the BSP?

No it is provided free of cost. You obviously have to pay for and procure WinCE license (from Microsoft).

Q: What features are supported in the BSP?

Find it here.

Q: Where can I get list of known issues in the BSP?

All issues are maintained in central database - a pointer to this link is provided in the release notes.

Q: I have been using OMAP3530 6.xx based BSP release. How do I migrate to TI-BSP?

You may find this guide helpful to get you started.

Q: What are future plans for OMAP3530 6.xx based release?

6.15 is the last release posted from ti.com on this baseline. No future releases are planned.


Support Questions

Q: How are these TI BSPs supported?

TI would make periodic maintenance releases with bug fixes and/or new features and these releases would be made available at ti.com. For support questions, please post your queries in TI's Community forum and reference “PLEASE READ FIRST” post. For custom hardware, custom features or application support TI recommends Adeneo or MPC Data. Other Windows Embedded Partners are also an option.

Q: How do I get support on OMAP3530 6.xx release?

You can try TI's Community forum for some guidance but for anything deeper, you can engage with BSquare or other Windows Embedded partners such as Adeneo/MPC Data. There are many BSP vendors familiar with TI parts.

Q: How long are these BSPs going to be supported?

As long as there is market need.

Q: When you make new releases, are you going to address issues reported on older releases?

In order to serve our customers efficiently and effectively, we can only provide support on latest releases. Therefore, we encourage everyone to move to the most current release - while this may not always be possible due to development timelines, we recommend that you at least look at the latest release notes to see if there are issues that are of interest to you.

Q: How do I report problems in the BSP?

If an issue reported on TI's Community forum is found to be real problem, we will log it in our database and try to address it in future maintenance release. We will also update the forum posting with the link to our database entry so you can track the issue as it progresses through development and test.

Q: I have ported the BSP on my custom HW - would you still address BSP issues I am having?

We can only address issues that can be reproduced on our reference platform. However, our forums are monitored by experts across a number of fields (both hardware and software) so you may still be able to find useful guidance/pointers there.

Q: Do we have to pay for support?

No.

Q: Is there SLA associated with support?

No.

Windows Embedded Compact 7 Questions

Q: What TI platforms are supported with WEC7?

Early OMAP3530 support was available in Microsoft's official WEC7 release. But latest releases from TI are documented below.

1. TI's ARM-A8 BSP 2.00.00 GA release on WEC7 for OMAP35x/AM35x/DM37x. (Released Aug25, 2011)
2. TI's ARM-A8 BSP 2.30.00 GA release on WEC7 for OMAP35x/AM35x/DM37x/AM335x/AM387x (Expected to be available for download Feb 15, 2012). Note that this is downloadable only from 
Adeneo Website - it is not provided from ti.com because TI is not directly supporting WinCE releases anymore.

Download link can be found here [1]


Test & QA Questions

Q: What kind of testing do you do before releasing the BSP?

So far the focus has been on functionality and performance tests. There approximately 2000 tests, which are a mix of CETK and TI custom tests.

Q: Do you publish BSP test results?

Yes, high level test summaries and detailed performance test results are provided for each release.

Q: Will you publish BSP test plan?

The test plans are not publicly available at the moment, however TI's goal is to make the test plans publicly available in the near future, after we develop a program to transform the test case definitions data in the test management system (Testlink) into an appropriate test plan report.

Technical Questions

Q: Can I run the same image on OMAP35xx and AM/DM37xx parts?

Only for WinCE 6.0 BSP (1.x releases). Chip is identified at runtime and then BSP takes appropriate action. For WEC 7.0 releases (BSP 2.x), separate image is required for OMAP35xx and OMAP37xx if PowerVR is included in the image.

Q: How is NAND flash partitioned in TI ARM_A8 BSP?

The NAND Flash is divided into the following 3 regions:


Usage
Start block
Size
How to change
Reserved Area
XLDR+EBOOT+Splash Image for Eboot
First good block
14 blocks
IMAGE_BOOTLOADER_NAND_SIZE in image_cfg.h
OS Partition
OS Image (NK.bin)
following Reserved Area
140 blocks
IMAGE_WINCE_CODE_SIZE  in image_cfg.h
File System Partition
File System
following OS Partition
remaining blocks


Q: What flashing tool is used in the BSP? Can I modify it for my own flash

We use a tool called pserial, which is GPL licensed. Look in the BSP manifest and it will point to the location of the tool from where sources can be downloaded and modified.

Q: How to switch between different USB Function clients?

For OMAP35xx/OMAP37xx, build NK.bin with all 3 function clients enabled in Catalog (Mass Storage, RNDIS, Serial). After boot-up, mass storage would be the defaiult client that would be active. To switch, use the "do usbFnSet" command from a telnet window.

usbFnSet [serial/rndis/storage [<storage_device_name ex: DSK1:>]] -> Change current USB Function Client. 
For storage, you can optionally specify device name (along with the colon at the end)

For AM35xx, build NK.bin with only the desired function client selected.

Q: How to switch between LCD and DVI?

There is only one build that supports all the LCD and DVI resolutions. To select the desired resolution, power-up the board and using terminal emulator (ex: teraterm) enter the configuration menu in Eboot. Select "Select Display Resolution" from the menu. This will display the list of supported resolutions. Select the desired LCD or DVI resolution and exit the menu to boot-up the NK.bin. Kernel will use the selected value to display the desktop.

(Note: The actual "selection" value will be different for different platforms and different boot modes. Following is just an example. Follow the prompts that show up on the terminal emulator)

Hit space to enter configuration menu 5...

--------------------------------------------------------------------------------
Main Menu
--------------------------------------------------------------------------------
[1] Show Current Settings
[2] Select Boot Device
[3] Select KITL (Debug) Device
[4] Network Settings
[5] Flash Management
[6] Set Device ID
[7] Save Settings
[8] Enable/Disable OAL Retail Messages
[9] Select Display Resolution
[0] Exit and Continue

Selection: 9

--------------------------------------------------------------------------------
Select Display Resolution
--------------------------------------------------------------------------------
[1] LCD 480x640 60Hz
[2] DVI 640x480 60Hz
[3] DVI 640x480 72Hz
[4] DVI 800x480 60Hz
[5] DVI 800x600 60Hz
[6] DVI 800x600 56Hz
[7] DVI 1024x768 60Hz
[8] DVI 1280x720 60Hz
[0] Exit and Continue

Selection (actual LCD 480x640 60Hz): 8

--------------------------------------------------------------------------------
Main Menu
--------------------------------------------------------------------------------
[1] Show Current Settings
[2] Select Boot Device
[3] Select KITL (Debug) Device
[4] Network Settings
[5] Flash Management
[6] Set Device ID
[7] Save Settings
[8] Enable/Disable OAL Retail Messages
[9] Select Display Resolution
[0] Exit and Continue

Selection: 0

Q: How to enable persistent storage for NAND in BSP?

Following is the general process to follow to enable persistent storage on NAND device. If using BSP 1.02+ release or BSP 2.x release, then this is already implemented and user just need to select the Catalog item: Third Party | <BSP>:ARMV7 | Kernel Features | Persistent Hive Registry Storage

  • Enable Hive based registry support, fat filesystem and partition driver in Catalog.
  • In addition, set these flags in <BSP>.bat batch file:
set IMGREGHIVE=1
if /i "%IMGREGHIVE%"=="1" set PRJ_ENABLE_FSREGHIVE=1
if /i "%IMGREGHIVE%"=="1" set PRJ_ENABLE_REGFLUSH_THREAD=1
if /i "%IMGREGHIVE%"=="1" set PRJ_ENABLE_FSMOUNTASROOT=1
if /i "%IMGREGHIVE%"=="1" set PRJ_BOOTDEVICE_MSFLASH=1
  • Modify the MSFlash profile in registry so that the MSFlash device (say NAND) is mounted as bootable file system during initial bootup phase. (Hint: See nand.reg for EVM_OMAP3530)
;-------------------------------------------------------------------------------

; @CESYSGEN IF FILESYS_FSREGHIVE
; HIVE BOOT SECTION
;
; We want start both storage and device manager. Flags value is combination of
; 0x0001 Start storage manager in boot phases 0 and 1 to load the boot
; file system.
; 0x0002 Start device manager in boot phase 1 to load the boot file system.
;
[HKEY_LOCAL_MACHINE\Init\BootVars]
"Flags"=dword:3

[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\MSFlash]
"Flags"=dword:00011000 ; load driver in boot phase 1; do not load again later

; END HIVE BOOT SECTION
; @CESYSGEN ELSE

[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\MSFlash]
"Flags"=dword:00010000

; @CESYSGEN ENDIF FILESYS_FSREGHIVE
;-------------------------------------------------------------------------------

;-- Storage Manager Configuration ----------------------------------------------
; @CESYSGEN IF CE_MODULES_FSDMGR
;
; HIVE BOOT SECTION

[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\MSFlash]
"DriverPath"="Drivers\\BuiltIn\\MSFlash"
"LoadFlags"=dword:1
IF IMGREGHIVE
"BootPhase"=dword:1 ; Make NAND available in BootPhase1, to load the persisted registry
ELSE
"BootPhase"=dword:0
ENDIF
"Order"=dword:0

[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\MSFlash\FATFS]
IF IMGREGHIVE
"MountAsRoot"=dword:1
"MountAsBootable"=dword:1
"MountPermanent"=dword:1 ; Do not allow un-mounting (else we'd fail to flush the registry)
"MountAsROM"=dword:0
"MountHidden"=dword:0
"CheckForFormat"=dword:1 ; Ask the OAL if we should format on boot (i.e. cold reset)
ENDIF
"Flags"=dword:00000014
"FormatTFAT"=dword:1
"EnableWriteBack"=dword:1

; END HIVE BOOT SECTION
; @CESYSGEN ENDIF CE_MODULES_FSDMGR
;-------------------------------------------------------------------------------
  • Do Build solution

Q: How to enable filesystem support in NAND? How to save the registry and filesystem across warm reboots?

To enable filesystem supprt in NAND, set the MountAsRoot flag in the registry. To be able to save registry and user settings between reboots, you will need to enable persistent storage using hive based registry.

The way persistent storage is implemented, the NK.bin still contains the registry. On boot-up, if the registry is present in the persistent storage, then kernel uses that version else it will use the default version from NK.bin. Note that if the flag CheckForFormat is set to 1 for the filesystem (that is used for persistent storage), kernel checks with the OAL through IOCTL_HAL_QUERY_FORMAT_PARTITION if the persistent storage should be formatted on bootup or not.  In current BSP, this ioctl is implemented to format the NAND device on cold boot. Hence the registry/user settings will be wiped clean on cold boot and will be preserved for warm boot case.

Q: How to dump AM35xx/OMAP35xx registers in TI ARM_A8 WinCE BSP?

The following commands are available to dump registers:

in8 address [size] -> read 8-bit registers
in16 address [size] -> read 16-bit registers
in32 address [size] -> read 32-bit registers
out8 address value -> write 8-bit register
out16 address value -> write 16-bit register
out32 address value -> write 32-bit register
ini2c [1,2,3] address subaddress [size] -> read TWL registers
outi2c [1,2,3] address subaddress value -> write TWL register

Note: address/value used in the commands has to be in HEX but WITHOUT the 0x in the front. 

When KITL connection is available, the above commands can be used from Windows CE command prompt(Target Control Window)

When KITL is not available, the above commands can be entered from the following 2 ways:

1. From Telnet session: do <shell command>
2. From LCD/DVI Start->programs->command prompt window: do <shell command>

Q: How to change Pad configuration?

 The configuration of all the pads used by the BSP are located at the BSP level under:

  • AM35x BSP:
<WINCEROOT>\PLATFORM\AM35X_BSP\SRC\INC\bsp_padcfg.h
  • OMAP35xx BSP:
<WINCEROOT>\PLATFORM\EVM_OMAP3530\SRC\INC\bsp_padcfg.h

When changing pad configuration from XLDR and EBOOT.

  • change the pad configuration in bsp_padcfg.h
  • add corresponding array to ebootPinMux[] in OEMPlatformInit()(main.c) for Eboot if needed
  • add corresponding array to initialPinMux[] in PinMuxSetup()(platform.c) for XLDR if needed

When changing pad configuration through OAL:

Pad configuration library provides functions for configuring the pads. Please refer to User guide for more information.


Q: What is the NK.bin image memory layout? How to calculate the total allocated memory size in System->memory tab?

The memory mapping of NK.bin is configured through config.bib file. The definition of the starting address and size is in image_cfg.h.

For example, for OMAP3530 EVM:

MEMORY
; Name VA Length Type
ARGS $(IMAGE_SHARE_ARGS_CA) $(IMAGE_SHARE_ARGS_SIZE) RESERVED
CPU_INFO $(CPU_INFO_ADDR_CA) $(CPU_INFO_ADDR_SIZE) RESERVED
NK $(IMAGE_WINCE_CODE_CA) $(IMAGE_WINCE_CODE_SIZE) RAMIMAGE
RAM $(IMAGE_WINCE_RAM_CA) $(IMAGE_WINCE_RAM_SIZE) RAM
DISPLAY $(IMAGE_WINCE_DISPLAY_CA) $(IMAGE_WINCE_DISPLAY_SIZE) RESERVED
#if (defined SYSGEN_DSPLINK || defined SYSGEN_CMEM)
CMEM_DSP $(IMAGE_CMEM_DSP_CA) $(IMAGE_CMEM_DSP_SIZE) RESERVED
#endif
#if (defined BSP_SDRAM_BANK1_ENABLE)
RAM_BANK_1 $(IMAGE_WINCE_RAM_BANK1_CA) $(IMAGE_WINCE_RAM_BANK1_SIZE) RESERVED
#endif

In the default build for OAMP3530, the memory map looks like:


start address
size
RAMIMAGE
0x80002000
40MB
RAM
0x82802000
32MB
DISPLAY
0x84800000
16MB
CMEM_DSP
0x85800000
40MB
Additional RAM
0x88000000
128M

Since AUTO_SIZE is turned on, any memory space that is not used by RAMIMAGE will be used as RAM and vice versa.

The total size of allocated memory from System->Memory tab is reffering to the memory allocated to be used in Kernel. It excludes the memory resvered as RAMIMAGE, DISPLAY and CMEM_DSP. If the size of NK.bin is 32M, the total allocated memory can be calculated as:

Total Allocated memory = Total physical memory - size of NK.bin - size of DISPLAY - size of CMEM_DSP

                                   = 256MB - 32MB - 16MB - 40MB = 168MB.

In system->memory tab, the allocated Storage memory + allocated Program memeory is about 168MB.

Q: Is it possible to use UART1/2 for Serial debug message?

UART3 is used as serial debug port by default. The serial debug port can be changed to other UART by changing the debugUartCfg struction inside:

    SRC\BSP_COMMON\BSPCFG\bspcfg.c

Other than the above change, the following changes are also needed:

In OSdesign, disable UART driver for the UART port that used as serial debug port.
1. Enable corresponding UART PAD configurations in XLDR.(PinMuxSetup() in platform.c)

2. Enable corresponding UART PAD configuration in OAL (init.c)

    ConfigurePadArray(BSPGetDevicePadInfo(OMAP_DEVICE_UART3));

3. Adding UART1/UART2 support in EnableDeviceClocks() ( bootloader\stub\bsp_bootstubs.c) for XLDR.

4. Enable debug serial clock for Kernel

    There are two ways:

    a. Enable clock in Eboot before launch the Kernel.(OEMLaunch() in main.c)

        EnableDeviceClocks(BSPGetDebugUARTConfig()->dev, TRUE);

       JumpTo(OALVAtoPA((UCHAR*)launch));

       If debug serial is not used (Retail message is disabled from Eboot menu), then the clock for debug serial port will be disabled in Init.c.

    b. Update function EnableDebugSerialClock() to support UART1/UART2. Code changes are as follows:

Changes in OAL\OALLIB\init.c

void EnableDebugSerialClock(UINT uart_id)
{  
#define OMAP_PRCM_PER_CM_REGS_PA            0x48005000

    OMAP_CM_REGS* pCmRegs;
    
    pCmRegs = (OMAP_CM_REGS*) (OMAP_PRCM_CORE_CM_REGS_PA);
   
    switch(uart_id)
    	{
        case OMAP_DEVICE_UART1:
                SETREG32(&pCmRegs->CM_FCLKEN1_xxx, CM_CLKEN_UART1);
                SETREG32(&pCmRegs->CM_ICLKEN1_xxx, CM_CLKEN_UART1);
                while (INREG32(&pCmRegs->CM_IDLEST1_xxx) & CM_IDLEST_ST_UART1);
            break;

        case OMAP_DEVICE_UART2:
                SETREG32(&pCmRegs->CM_FCLKEN1_xxx, CM_CLKEN_UART2);
                SETREG32(&pCmRegs->CM_ICLKEN1_xxx, CM_CLKEN_UART2);
                while (INREG32(&pCmRegs->CM_IDLEST1_xxx) & CM_IDLEST_ST_UART2);
            break;

        case OMAP_DEVICE_UART3:
                pCmRegs = (OMAP_CM_REGS*) (OMAP_PRCM_PER_CM_REGS_PA);
                SETREG32(&pCmRegs->CM_FCLKEN_xxx, CM_CLKEN_UART3);
                SETREG32(&pCmRegs->CM_ICLKEN_xxx, CM_CLKEN_UART3);
                while (INREG32(&pCmRegs->CM_IDLEST1_xxx) & CM_IDLEST_ST_UART3);
            break;	
    	}
}

Changes in OAL\OALLIB\startup.s

        ''';--------------------------------------------------------------
        ; Enable clock for debug serial port
        ;--------------------------------------------------------------
        bl     BSPGetDebugUARTConfig
        ldr r0, [r0]
        bl	  EnableDebugSerialClock'''

        ;---------------------------------------------------------------
        ; Jump to WinCE KernelStart
        ;---------------------------------------------------------------
        ; Compute the OEMAddressTable's physical address and 
        ; load it into r0. KernelStart expects r0 to contain
        ; the physical address of this table. The MMU isn't 
        ; turned on until well into KernelStart.  


        ; find out CHIP id, use chip id to determine what DDR is used
        ; This approach has following assumptions:
        ; 1. 35xx uses Micron DDR that has 128M connected to CS0 
        ;     and another 128M connected to CS1, if BSP_SDRAM_BANK1_ENABLE
        ;     is enabled.
        ; 2. 37xx uses Hynix DDR that has 256M continuous memory connected to CS0
        ;
        ldr     r0, =OMAP_IDCODE_REGS_PA
        ldr     r1, [r0]
        ldr     r2, =0x0FFFF000
        ldr     r3, =0x0B891000
        and    r1, r1, r2
        cmp   r1, r3
        addne     r0, pc, #g_oalAddressTable - (. + 8)
        addeq     r0, pc, #g_oalAddressTableHynix - (. + 8)
        bl      KernelStart

Q: How to include a replacement Floating Point C Run-Time Library in WinCE 6.0?

In TI ARM_A8 BSP 1.x release (WinCE 6.0), a Floating Point C run-Time library (Files/VFP2FPCRT.dll) from ARM is included but not enabled in the default OSdesign.

To switch to this Floating Point C library, set the Sysgen variable SYSGEN_OEM_FPCRT=1 OR enable from Catalog item view

CoreOS -> CEBASE-> C libraries and Runtimes

If you would like to use your own library, please modify the following entry in config.bib accordingly:

;Include the hardware accelerated FPCRT if SYSGEN_OEM_FPCRT is set
;@CESYSGEN IF !CE_MODULES_FPCRT;
fpcrt.dll $(_FLATRELEASEDIR)\VFP2FPCRT.dll NK SH k.fpcrt.dll $(_FLATRELEASEDIR)\VFP2FPCRT.dll NK SHMK
@CESYSGEN ENDIF !CE_MODULES_FPCRT 

Q: EBOOTSD.nbo debug build doesn't load properly, why?

The image size of the EBOOTSD debug build is bigger than the default setting for RAMIMAGE in ebootsd.bib. To support EbootSD debug build, RAMIMAGE setting needs to be changed in ebootsd.bib.

Example to change the image size to 512KB:

   EBOOTSD 87E00000 00080000 RAMIMAGE

Q: How to use KITL with USB RNDIS?

Here are the steps you need to follow in order to make USB RNDIS work:

Setup Device:

1. On the debug terminal, press SPACE when prompted. Using the bootloader menu, set the boot device to USBFn RNDIS.
2.Set the debug device to USBFn RNDIS
3.In ‘Network Settings’:
a. Disable DHCP
b. Assign Static IP Address
c. Assign IP Mask
4. In the bootloader main menu, select “Exit and Continue” to download image.

Setup Host PC:

5. Host PC will display ‘Found New Hardware Wizard’
6. Select ‘No, not this time’ and press next.
7. Select ‘Install from a list or specific location then press ‘next’ button
8. Ensure that ‘Search for the best driver in these locations’ is selected. Also ensure that ‘Include this location in the search’ is selected and click ‘Browse” button.
9. In the ‘Browse for Folder’ window navigate to: ‘C:\WINCE600\PUBLIC\COMMON\OAK\DRIVERS\ETHDBG\RNDISMINI\HOST’
10.Press ‘Next’ button. RNDIS Connection is made.
11.In network connections, make sure to set an IP and subnet mask similar to that set on the device.
Example: Set IP as 192.168.1.24 and subnet mask as 255.255.255.0.
12.From Platform Builder, select Target | Connectivity Options. Set:
a. Download to Ethernet
b. Transport to Ethernet
c. Click on the Settings button and select the device (on the debug console, you should see that the device is sending BOOTME packets).
d. Apply these settings.
13.Attach the device

Q: How to mount a drive in Windows to Wince device?

To mount drive from Windows to WINCE device, you just need type \\<pc_name>\shared_drive in explorer in WinCE device. But you need make sure your build has the following enabled: Core OS / CEBASE / Communication Services and Networking / Networking General / Windows Networking API/Redirector (SMB/CIFS) and NTLM, Kerberos Authentication services.

You may also need to enable "simple file sharing" in XP. Open a File Explorer window, select menu opt Tools -> Folder Options, View tab, scroll down to the end of the list of check boxes and enable "use simple file sharing".

Q: Why is the performance of Floating Point Operations (measured using BMQ) less than expected? Is VFP enabled in the BSP for WinCE6?

The VFP (Vector Floating Point) support is disabled in TI BSPs for WinCE6 (both the BSP 6.xx releases and the newer BSP_WinCE_ARM_A8 01.xx releases) due to errors in certain FP arithmetic operation when using the driver provided by ARM. These errors can create undesired effects (for instance the Graphics applications that use FP operations on the host can be severely affected). Hence by default the software emulated operations are used which prevents the arithmetic errors but reduces performance. WinCE7 from Microsoft incorporates a new driver provided by ARM that fixes these issues, enabling the use of the VFP co-processor again (this will be available only when WinCE7 is officially released by Microsoft).

The VFP functionality can be re-enabled again by selecting the variable: SYSGEN_OEM_FPCRT from the Catalog; which is now disabled by default in the sample OSDesigns.

Q: Do the "do" command prompts take values of registers as hexadecimal numbers?

Please provide the register values and input values without the '0x' prefix.

Example - to read the value of d9 register in TPS659XX on OMAP35XX BSP, use the following command - "do ini2c 1 4a d9"

Q: How can I exit the transcriber application (available on desktop in BSP_WINCE_ARM-A8.01.01.00 )?

Wait for input on transcriber tool to get deleted (this happens within 2 or 3 seconds of inactivity with the tool) and then, click on the "hand with pen" icon at right corner of display window and select either "keypad" or "hide input panel" options to start using touchscreen again. This will allow you to exit the transcriber application.

Q: How to download WinCE XLDRNAND.BIN/EBOOTNAND.BIN/NK.bin into NAND FLASH via SD card?

This feature is added in BSP_WINCE_ARM-A8.01.01.00 release.

To flash XLDR/Eboot/nk.bin from SD card,

1. Copy EBOOTND.bin/XLDRNAND.bin/NK.bin to SD card.

2. Enable flashing by select following option from Eboot menu:

    [Flash Management] -> [8]Enable flashing NK.bin

3. Change the SDcard settings for image name to eboot.bin/xldrnand.bin/nk.bin from following Eboot Menu:

    [SDCard Settings] -> [Enter Filename]

4. Select boot from SD card:

    [Select Boot Device] -> [NK from SDCard File]

If NK.bin is loaded, after flashing, the program will continue to boot Kernel. If XLDR/EBoot is loaded, reboot is needed.

Please note that since BootROM can only recognize Hamming 1 bit ECC, XLDR should always be flashed in 1 bit ECC mode. Eboot should be flashed in desired ECC mode. When using BCH 4 bit and BCH 8 bit XLDR/EBOOT, please use the following Eboot menu to set to Hamming 1 bit ECC mode:

    [Flash Management] -> [9]Set ECC mode -> 0 (hamming 1 bit ECC)

Q: Silverlight Hardware acceleration: How can I enable OpenGL XR Renderer plugin debug log?

OpenGL XR Renderer plugin allows Silverlight to use device specific Graphics hardware acceleration. (For more information on Silverlight for Windows embedded, refer this link http://msdn.microsoft.com/en-us/library/ee502198.aspx). Enabling OpenGL XR Renderer plugin debug log will explain the inner working of Silverlight core interface to PowerVR harware acceleration.

The easiest way to do this is to

  1. Enable a KITL build
  2. Open up Windows Registry Editor on the desktop (Start -> Run ->regedit)
  3. Find the following key and add the option shown below.
     [HKEY_CURRENT_USER\Pegasus\Zones]
     "XRRendererOpenGL"=dword:0000ffff
  (Make sure that the value shows up as 0000ffff and not ffff0000. If you don't need all the debug zones
   then look at the file C:\WINCE700\public\COMMON\oak\XamlRenderPlugin\OpenGL\debug.hpp and find which 
   ones you need and accordingly set the value in the registry above)

Save the desktop registry file. (Note: the registry is changed\saved on the desktop and not the device).

Run the silverlight app again and you should see debug messages. (If you don't see debug messages, close the project and restart it and then rerun the application)

Q: Kitl Error: Why does my board not completely boot up and I see "ERROR: OALKitlInit: KitlInit failed" on retail output?

If you are not trying to connect platform builder to target, disable kitl from network settings in eboot menu so that kitl connection is not attempted. If you need to connect platform builder, then ensure that the Target Connectivity is setup correctly on platform builder before attempting again.

Q: SPI Test: How do I use the tux_spi dll provided with the BSP?

Source code for the tux_spi test is at location similar to below:

Sources\PLATFORM\EVM_OMAP3530\SRC\test\Tux_SPI

You can choose the serial port, chipselect, number of threads, number of buffers, etc using the tux command-line. For example, to run the test on port 1, chipselect 2, number of threads 10, number of writes, buffersize to be written (in bytes), use the command-line as follows.

tux -o -d tux_spi -x 1 -c"-p 1 -s 2 -t 10 -w 10 -b 10"

Support files required for this tux_spi.dll to run are tux.exe, kato.dll and tooltalk.dll (for wince6.0). These files can be found at platform builder installation under program files and would need to be ftp-ed to \windows folder of target before executing the test.

Q: Capture Test: How do I use the capturetest app provided with the BSP?

Capturetest app has a command-line help. Telnet to platform and key in "capturetest -help" to understand the meaning of the various parameters. Sample command-line for raw capture on ce7 target is as follows

capturetest /auto /cap 176x120@30 /pv /time 10000 /vin av

(if using ce6, use the /venc raw option for raw capture and /venc <codec_name> for encoding in addition to the above command-line)

Also, in telnet window, just entering command like "capturetest /auto /pv /time 2000" will list all the capablities of the capture filter of the target. You can then select your /cap parameter from that list.

Q: Display Driver and VRFB: What is VRFB, How do I enable it and under what use cases do I need to enable it?

VRFB enables hardware support for rotation on OMAP35x/DM37x/AM37x/AM35x processors. Under most use cases VRFB should be disabled. This includes use cases where the platform is pre-decided to be running either in Landscape mode or in Portrait mode and is not expected to change orientation while in use and the LCD orientation matches the intended use. VRFB degrades performance a little bit when used in 0 degrees (i.e, matching the default orientation) and has some other known limitations as documented below.

Enabling VRFB

1. Each platform that supports VRFB will have a catalog entry called "VRFB driver" under Display (disabled by default). Enable this catalog entry. 
2. dss.reg for the appropriate platform needs to have the proper "Angle" parameter defined (for the default orientation).
3. Recompile BSP.

VRFB use cases

Significant performance gain is observed (compared to not having VRFB) in all non-zero degree orientations (90, 180, 270 degrees). Such use cases include

1. If a platform is designed with a LCD whose orientation does not match the intended use, then VRFB should be enabled for optimal performance since in such 
   cases you would be using a non zero degree rotation setting. For e.g., on the TI EVM for OMAP35x/DM37x the default LCD orientation is portrait mode and if
   one needed to run an app in landscape mode then enabling VRFB is recommended. If VRFB is not enabled, then there is high probability for display distortion
   leading to unusable display (gets worse with larger resolution).
2. If dynamic rotation is desired then VRFB should be enabled.

VRFB known limitations

Please note that there are some known issues with enabling VRFB. Customers should carefully consider these limitations and see if these limitations are acceptable for their application before enabling VRFB.

1. With VRFB enabled, capturetest preview stops working
2. With VRFB enabled, ARM based video codecs may not display video correctly (especially in WinCE6)
3. With VRFB enabled, dynamic rotation is not thoroughly tested and may have issues