This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Need help with USB RNDIS connection - WinCe Unified BSP and OMAP3530-based board

Other Parts Discussed in Thread: TPS65930, OMAP3530, TSC2006, TSC2046, ASH

Hi everyone,

Since switching to the Unified BSP from BSP6.15.00, I am no longer able to have a USB RNDIS connection between Platform Builder and my custom board to download the image.  My board does not have the Ethernet port so I am using the OTG USB port on the TPS65930 for the USB RNDIS connection.

In the project with the new BSP, I added all the catalogue items that I did for the one with the old BSP.  It failed regardless whether I included USB OTG item from the catalogue menu or not.

Booting with XLDR/EBBOT created from the Unified BSP, I got the following outputs on the HyperTerminal:

HostMiniInit:: !!
Rndis:: Address static map to addr=B60AB000
Rndis:: initialization!
Rndis:: PDDInit Success!
Rndis:: Get MAC address 200,902F,B5D
Rndis:: initialization: Fail!
ERROR: Boot device driver Init call failed

Booting with XLDR/EBOOT from BSP6.15.00, the outputs are as below:

HostMiniInit:: !!
Rndis:: initialization: with addr=480AB000
Rndis:: Address static map to addr=480AB000
Rndis:: initialization!
Rndis:: PDDInit Success!
Rndis:: Get MAC address 200,902F,B5D
RndisMdd:: PDD's max RX buffer = [8192] bytes.
Rndis:: initialization: Success
HostMini:: New filter set: [0x0] --> [0xB]
+EbootSendBootmeAndWaitForTftp
Sent BOOTME to 255.255.255.255
Sent BOOTME to 255.255.255.255

I see that the static map addresses are different between the versions but don't know whether this causes any problem.

I have had this issue for a week now and don't know how to resolve it so I am desperate and would appreciate any tips / suggestions that you can give me on how to debug it.

Thanks,

Luan

  • Luan,

    Could you please post the result of " [1] Show Current Settings"?

     

  • Hi Tao,

    Below is the result of "[1] Show Current Settings"?

    Main:
      Boot device:   USBFn RNDIS
      Debug device:  USBFn RNDIS
      Retail Msgs:   disabled
      Device ID:     0
      Display Res:   LCD  480x640 60Hz
    ERROR: C:\WINCE600\PLATFORM\COMMON\SRC\SOC\COMMON_TI_V1\COMMON_TI\BOOT\LAN911X\.
    \lan911x.c line 657: Invalid Ethernet chip ID (0xffffffff)!

     Network:
      KITL state:    enabled
      KITL type:     active
      KITL mode:     interrupt
      DHCP:          disabled
      IP address:    192.168.1.26
      IP mask:       255.255.255.0
      IP router:     0.0.0.0
      Eth MAC Addr:  20:20:40:30:60:50 (Boot settings)
      VMINI:         enabled
      Note: USBFN RNDIS MAC Addr cannot be changed.

    Thanks,

    Luan

  • Hi Tao,

    And here is the result of "[1] Show Current Settings" when BSP 6.15.00 XLDR/EBOOT is loaded.  Note that there is no ERROR line under "Display Res:" as shown in the previous post and "Eth MAC Addr:" is also different.

    Main:
      Boot device:   USBFn RNDIS
      Debug device:  USBFn RNDIS
      Device ID:     0
      Retail Msgs:   disabled

     Network:
      KITL state:    enabled
      KITL type:     active
      KITL mode:     interrupt
      DHCP:          disabled
      IP address:    192.168.1.26
      IP mask:       255.255.255.0
      IP router:     0.0.0.0
      Eth MAC Addr:  Controller not found!
      VMINI:         enabled
      Note: USBFN RNDIS MAC Addr cannot be changed.

     

  • Luan

    Few Pointers:

    1. Make sure you are selecting the right OTG driver from the catalog (TPS659xx and not ISP1507) and re-building your OTG driver

    2. Compare the TPS659xx OTG drivers between 6.15 and ARM-A8 in your version of BSP. I did compare them in shipped BSP and didnt find anything different (except for some code cleanup).

    3. Are there any differences in the setup between 6.15 and ARM-A8 cases you mentioned above?

     

    -Madhvi

  • Hi Madhvi,

    I did select TPS659xx from the USB OTG catalog and rebuilt the BSP but still have the problem.  I also did the comparison and did not see anything different.

    For the build with BSP 6.15, regarless of whether I have "set BSP_USBHSOTG_ISP1504=1" or "set BSP_USBHSOTG_TPS659XX=1", USB RNDIS connection works even my custom board uses the USB OTG on the TPS65930.  I do not understand why is that because in platform.bib, the USB OTG driver is dependent upon which flag is set.

    However, for the build with BSP ARM-A8, USB RNDIS connection does not work for either selection (TPS659xx or ISP1507) from the catalog. Another thing I would like to ask you is what could cause the following situation:

    With BSP 6.15, the outputs below come out continuously

    Hit space to enter configuration menu 1...
    HostMiniInit:: !!
    Rndis:: initialization: with addr=480AB000
    Rndis:: Address static map to addr=480AB000
    Rndis:: initialization!
    Rndis:: PDDInit Success!
    Rndis:: Get MAC address 200,902F,B5D
    RndisMdd:: PDD's max RX buffer = [8192] bytes.
    Rndis:: initialization: Success
    HostMini:: New filter set: [0x0] --> [0xB]

    But with ARM-A8,  these lines are output

    Hit space to enter configuration menu 1...
    HostMiniInit:: !!

    Rndis:: Address static map to addr=B60AB000
    Rndis:: initialization!
    Rndis:: PDDInit Success!
    Rndis:: Get MAC address 200,902F,B5D

    The line "RndisMdd:: PDD's max RX buffer = [8192] bytes." is missing.  Then after a long delay, the two lines below are output,

    Rndis:: initialization: Fail!
    ERROR: Boot device driver Init call failed

    Could the problem be caused by something else instead of the USB OTG driver?  I am not familiar with this process at all.

    Thank you for your continued support,

    Luan 

  • Hi,

    This issue is expected as the Unified BSP does not support EBOOT/KITL over USB RNDIS with the TPS659XX as a PHY (only the ISP1504 has been implemented/tested). If you need this support, you will have to implement proper TPS659XX USB transceiver initiliazation under:

    WINCE600\PLATFORM\EVM_OMAP3530\SRC\BSP_COMMON\USBFN\trans.c

    Note that this was supported in BSP 6.15, you will then find the required code to copy/paste/adapt under:

    WINCE600\PLATFORM\TI_EVM_3530\SRC\COMMON\KITL\musbfn\trans.c

     

     

     

  • Hi Adeneo Embedded support team,

    EBOOT/KITL over USB RNDIS with the TPS659XX was supported in BSP 6.15 (even though untested by BSQUARE) and it was working fine for me.  It is unfortunate now that is taken out of the new BSP.  Will it be put back in the future release?

    I tried the changes that you recommended in the previous post by merging the two source files (trans.c from BSP6.15 and trans.c from Unified BSP) and got some progress but it is not quite working yet.  I now see these familiar outputs soon after boot:

    HostMiniInit:: !!
    Rndis:: initialization: with addr=480AB000
    Rndis:: Address static map to addr=B60AB000
    Rndis:: initialization!
    Rndis:: PDDInit Success!
    Rndis:: Get MAC address 200,902F,B5D
    RndisMdd:: PDD's max RX buffer = [8192] bytes.
    Rndis:: initialization: Success
    HostMini:: New filter set: [0x0] --> [0xB]

    and the download from PB is started.  However, after the Windows CE image is launched, I don't get these outputs again as I used to get with BSP6.15.  Now I only get

    Rndis:: initialization: with addr=480AB000
    Rndis:: Address static map to addr=B60AB000
    Rndis:: initialization!

    and it just hangs right here.

    Is there any other changes that I need to do after the image is lauched?

    Thanks for your help,

    Luan

     

  • Luan

    We are looking into bringing this change back into ARM-A8 future release - will update you soon on that.

    In the meantime, can you compare your changes with the ones attached here and see if this helps.

    6012.TPS_RNDIS_KITL_PATCH.zip

     

    -Madhvi

  • Hi Madhvi,

    I used the changes in the attached above and got the same outcome as described in my previous post.  When it hangs, I also get a message "USB Device Not Recognized" on my computer.

    Do you know if this patch has been tested or worked for someone?

    Thanks,

    Luan

  • This patch has been tested on a BeagleBoard xM that uses the TPS6595xx as the OTG transceiver. I believe you are using a custom design with a modified BSP, can you tell us how deep the modifications you made in the BSP are?

    Also, there is a small thing you might want to check under:

     

    PLATFORM\EVM_OMAP3530\SRC\BSP_COMMON\TPS659XX\bsp_tps65xx.c

    In the BSPSetT2MSECURE function, make sure "BSP_EVM2" is set and that the TPS659XX_MSECURE_GPIO definition matches the MSECURE GPIO of your design.

  • Hi Adeneo Support Team,

    I already did what Madhvi suggested but it does not help with the hang problem along with a message "USB Device Not Recognized" on my computer.

    Yes, I am using a custom design with a modified BSP.  However, I believe that my modifications are very minor.  Below are changes that I did to the BSP and OS design

    - Change bsp_padcfg.h to add paddings for additional GPIOs and SPI

    - Add a driver for custom GPIO/SPI support

    - Modify the touch screen driver to use TSC2006 along with a change in reg file to use different touch irq

    - Modify the LCD driver for 640X480 resolution and LCD configurations

    - Change wave driver reg file to route audio signal to speaker output and to get different audio gain

    - Select MCSPI3, MCSPI4, UART2, and of course OTG Driver (TPS659xx) from the catalog for my OS design.

    I am not sure what you said about TPS659XX_MSECURE_GPIO matching MSECURE GPIO.  I see that BSP_EVM2 is set in my BSP build file.  TPS659XX_MSECURE_GPIO is defined as GPIO_64 for LAN_RESET but my custom board does not have the Ethernet chip.

    Please give me some insights on this and any other suggestions that you might have.

    Thanks again for your help,

    Luan

  • Hi Madhvi and Adeneo Support Team,

    I also need to add some details in addition to that I listed above.  Just adding the patch that Madhvi sent me, my BSP failed the linking since functions in trans.c call functions in twl_access.c which call functions in oali2c.c.  Therefore, I added the following libs to kitldll\sources file to solve the linking issue:

    $(_PLATCOMMONLIB)\$(_CPUINDPATH)\triton_oal.lib \

    $(_TARGETPLATLIB)\$(_CPUDEPPATH)\ceddk.lib \

    $(_TARGETPLATLIB)\$(_CPUDEPPATH)\bspcfg.lib \

    The linking issue was resolved but I started to have the hang problem with this build.  Below is the debug outputs from the time the download is started:

    BL_IMAGE_TYPE_BIN

    Download file information:
    -----------------------------------------------------------
    [0]: Address=0x80002000  Length=0x010da6dc  Save=0x80002000
    -----------------------------------------------------------
    Download file type: 1
    ................................................................................
    .............................................................rom_offset=0x0.
    ..ImageStart = 0x80002000, ImageLength = 0x10DA6DC, LaunchAddr = 0x800124A0

    Completed file(s):
    -------------------------------------------------------------------------------
    [0]: Address=0x80002000  Length=0x10DA6DC  Name="" Target=RAM
    ROMHDR at Address 80002044h
    Got EDBG_CMD_JUMPIMG
    Got EDBG_CMD_CONFIG, flags:0x00000000
    Launch Windows CE image by jumping to 0x800124a0...

    Windows CE Kernel for ARM (Thumb Enabled) Built on Jul  6 2010 at 14:10:31
    OAL: CPU revision 0x6:OMAP3530
    OAL: CPU L2 Aux register 0x400042
    Failed to request pads for the GPIOs
    +TWLOpen: Device.refCount = 0
    TWLOpen: Call I2COpen() at 8001fbd4
    OALI2C.c: +I2COpen
    OALI2C.c: -I2COpen
    TWLOpen:: Device.hI2C = 810eb7c0
    -TWLOpen: Device.refCount = 1
    ****Profiler Build****
    ---High Performance Frequency is 26000701 hz---
    DeviceId................. EVM3530-
    pArgs->flags............. 0x29
    pArgs->devLoc.IfcType.... 0
    pArgs->devLoc.LogicalLoc. 0x480AB000
    pArgs->devLoc.PhysicalLoc 0x0
    pArgs->devLoc.Pin........ 0
    pArgs->ip4address........ 1
    pArgs->mac............... 0x2020 0x3040 0x5060
    pDevice->Name............  s
    pDevice->ifcType......... 0
    pDevice->id.............. 0x15000000
    pDevice->resource........ 0
    pDevice->type............ 2
    pDevice->pDriver......... 0x810F2018
    HostMiniInit:: !!
    Rndis:: initialization: with addr=480AB000
    Rndis:: Address static map to addr=B60AB000
    Rndis:: initialization!
    rndis.c: +PDDInit
    PDDInit: Call InitializeHardware()
    trans.c: +InitializeHardware
    InitializeHardware: Call TWLOpen()
    +TWLOpen: Device.refCount = 0
    TWLOpen: Call I2COpen() at 80040768                                               // hang right here

    I output the address of I2COpen() before calling it.  The first time is 8001fbd4 and the second time is 80040768, where it hung.  So I thought that there might be some conflict between I2COpen() in I2C.c and I2COpen in OALI2C.c, so I replace $(_TARGETPLATLIB)\$(_CPUDEPPATH)\ceddk.lib \ in kitldll\sources with $(_PLATCOMMONLIB)\$(_CPUDEPPATH)\common_ti_oali2c.lib.  I rebuilt the BSP and had lots of other linking errors.

    Would you please build the EVM_3530 OS with the patch instead of the Beagle's to see if you have the linking errors?

    Thanks,

    Luan 

     

  • The patch attached contains the right KITLDLL\sources file along with a modified trans.c that allows proper linking. I tested it on an EVM (even though it is wired through the ISP1507) and it did not hang.

    7271.TPS_RNDIS_KITL_PATCH.zip

     

     

  • Hi Adeneo Support Team,

    With your latest patch, I am able to download the image to my board and go the touch calibration screen.  Unfortunately, I am encountering a touch screen problem and can not see the explorer screen yet.  I want to wait until this touch screen problem is resolved so I could say whether the USB OTG RNDIS is fully resolved.

    Thanks for your help,

    Luan

  • can you please give more details - are you able to calibrate the touchscreen and then you dont see the windows desktop or are you not able to calibrate at all? Which one is it?

    As an extra data point - Do you have DVI out on your board? - if yes, can you change in eboot to boot up in DVI mode and not LCD (so that touch driver is not needed)

     

    -Madhvi

  • Hi Madhvi,

    I am not able to calibrate the touchscreen so I can't not go to the windows desktop.  There are no response to touch.

    I modified the touchscreen driver to use TSC2006 controller and it have worked well with BSP6.15.  With the new BSP, I have done the follows for touchscreen:

    1. Migrated all the changes related to the TSC2006 controller in touchscreen.c over to the new BSP.

    2. Changed the touch registry file name from tsc2046_touch.reg to tsc2006_touch.reg

    3. Changed TARGETNAME in TOUCH\sources file from TSC2046_touch to TSC2006_touch

    4. Changed contents of the registry file tsc2006_touch.reg for correct DriverName (tsc2006_touch.dll) and PenGPIO (162)

    5. Changed the touch registry file name in platform.reg from tsc2046_touch.reg to tsc2006_touch.reg

    6. Added DEBUGMSG at the beginning of function DdsiTouchPanelGetPoint() in touchscreen.c

    7. Rebuilt the BSP

    After all these works, the touchscreen calibration doesn't work and there are no debug output.  This indicates that PenIRQ is not recognized.

    Am I missing anything in the migration process?

    Thanks,

    Luan

  • Have you changed the Pad configuration of your PENIRQ pin?

    By default in the BSP, GPIO 162 is not assigned to the GPIO controller but configured as MxBSP1_CLKX (Mode 0)such ash shown under WINCE600\PLATFORM\EVM_OMAP3530\SRC\INC\bsp_padcfg.h:

     #define MCBSP1_PADS \

    PAD_ENTRY(MCBSP1_CLKX, INPUT_ENABLED | PULL_RESISTOR_DISABLED | MUXMODE(0)) \

    You need to set the multiplexing of this pin to Mode 4 (GPIO) for the GPIO controller to have access to this pin and properly report interrupts from this pin. To do this, remove the following line from "MCBSP1_PADS"

    PAD_ENTRY(MCBSP1_CLKX, INPUT_ENABLED | PULL_RESISTOR_DISABLED | MUXMODE(0)) \

    And add this new one to GPIO_PADS (if you are using an OMAP3530 CPU, or GPIO_PADS_37XX for an OMAP3730):

    PAD_ENTRY(MCBSP1_CLKX, INPUT_ENABLED | MUXMODE(4)) \

    If you actually get an error trace when initializing your touch driver, please post this trace so we can help you debug further.