i.MX6 Platform SDK w/ SABRE Lite

cancel
Showing results for 
Search instead for 
Did you mean: 

i.MX6 Platform SDK w/ SABRE Lite

9,704 Views
bkowal
Contributor I

Has anyone had success utilizing application examples provided in the iMX6 Platform SDK on the Boundary Devices iMX6 SABRE Lite Hardware from an SD card?

I was successfully able to install and configure the arm-none-eabi GNU toolchain and build the complete SDK.  Given that the SABRE Lite is not one of the specific boards supported in the SDK, I tried running a few of the sample applications (Ping, Power Modes Test) for different boards with no luck.  No output on the console and no network traffic being sent.  I tried using both the Linux dd example and the cfimager for programming the SD card.

I can confirm the device is booting successfully off the full size SD slot (using instructions provided here Boards/MX6QSabreLite - Linaro Wiki), as I was capable of running a Linaro Ubuntu Desktop image.

Thank you

Labels (2)
36 Replies

822 Views
EricNelson
Senior Contributor II
0 Kudos

822 Views
shefft
Contributor IV

Yes, went through all that before.  It looks like i'm semi-working now.  One problem was the SDK test wasn't allowing enough time for the link to come up before checking status, so I'm actually having success with a straight cable right now.  Not understanding why my loopback setup (as documented in Freescale's SDK unit test pdf) still fails.  No link for him.

0 Kudos

821 Views
shefft
Contributor IV

The problem turned out to be with the Micrel PHY - by design.  Spoke with an FAE.  It won't work with the loopback cable, so i've moved on.  Now i'm having trouble with the iMX6 MAC.  Can't get it to consistently send packets.  It only occasionally (one out of ten times) will set the transmit buffer complete interrupt in the EIR when I send packet.  This is true in both standard and loopback config of the PHY.

0 Kudos

821 Views
shefft
Contributor IV

Hey, have you guys using the Sabre Lite had any issues with the USB OTG device test in the SDK?  I'm trying to run that on my Nitrogen but having weird problems.  Windows host doesn't recognize the device.  The device is getting a setup packet but the fields are all zeroes.  Also, seem to be failing on USB transmits from the device.

0 Kudos

823 Views
EricNelson
Senior Contributor II

Hi Rafal,

If you look in the U-Boot sources, you'll see that there are two sets of pads for the ethernet PHY

(enet_pads1 and enet_pads2):

     u-boot-imx6/board/boundary/nitrogen6x/nitrogen6x.c at staging · boundarydevices/u-boot-imx6 · G...

     u-boot-imx6/board/boundary/nitrogen6x/nitrogen6x.c at staging · boundarydevices/u-boot-imx6 · GitHub...

And if you look further into their use, you'll see that the first is used before the PHY reset line

is asserted and de-asserted:

     u-boot-imx6/board/boundary/nitrogen6x/nitrogen6x.c at staging · boundarydevices/u-boot-imx6 · G...

This is because the PHY address is determined by the state of the pins when coming out of reset

(GP3:23 on SABRE Lite). If you're not doing this in your startup code, the PHY may be present at

a different address.

0 Kudos

823 Views
rafalfabich
Contributor II

Hi Eric,

Thank you for your hints. I followed the path and successfully managed to run network on my SABRE Lite board.

The following changes to Li's modifications were required:

1. Fixes in ethernet PHY:

    a. setting of PHY address and operation mode in KSZ9021RN required configuring RD0-3, RXC and RX_CTL pins as GPIOs, so initial pin muxing function is modified in enet_iomux_config.c file generated by IOMUXTool. Similar thing could be done in gpio*_iomux_config.c, but I made it 'by hand' and wanted to keep the enet interface in one place.
    b. power-up and reset of KSZ9021RN on SABRE Lite is modified so that the phy_addr is correct (6 in this case). After setting of phy_addr, the RD0-3, RXC and RX_CTL are reconfigured as RGMII Rx interface. To do that a new function is added to enet_iomux_config.c

    c. changes in enet unit test and in lwIP stack (used e.g. by httpd) related to KSZ9021RN initialization and ethernet connection checking

2. Sourcery cross toolchain paths set as were in original SDK provided by Freescale. The path is exported by user depending on the installation.

The patch is attached to this post, so feel free to test it :smileyhappy:

To use it, one should first apply Li's patch to the original SDK and then apply this one.

Best regards,

Rafal

823 Views
shefft
Contributor IV

Note for people wanting to apply these two patches:

Go to your SDK main directory where you issue the build command.  For the first (Li's, above) use patch -p1 <patch file location>


For the next one adding ethernet, use patch -p2 <enet patch file location>


Going to check these out soon. I'm using a Nitrogen6x board but i'm hoping these patches fix some of my problems, since the boards are supposedly so similar.

0 Kudos

823 Views
sergeydanilov
Contributor III

Thank you!

0 Kudos

824 Views
libaizhang
Contributor II

$  ./tools/build_sdk   -t mx6dq     -b sabre_lite   -v a

824 Views
sergeydanilov
Contributor III

Could you please post your patch for running platform sdk on sabre lite?

Thanks!

0 Kudos

824 Views
libaizhang
Contributor II

my steps:

      1] use  IOMux.exe  generation   board/sabre_lite/*   files    by  sabre_lite_reva_iomux.xml 

      2]       change    HW_UART4  of ./common/hardware_modules.c:49     to   HW_UART2

      3]       add  a new file   in  ./board/sabre_lit/dcd.c

      4]       copy   DCD-command data  from  flash-header.S of u-boot   into   the dcd.c

      5]       build :    ./tools/build_sdk    -t mx6dq   -b  sabre_lite   -v  a

      6]       select   serial_downloader mode  on board

      7]       plug   the  usb  cable

      8]       run :      imx_usb     ./output/mx6dq/ping/sabre_lite_rev_a/ping.bin

       but,,,,,   the console  cannot output any  information.................

0 Kudos

824 Views
libaizhang
Contributor II

haha, the all apps  in SDK  can work   on  Sabre Lite  

0 Kudos

824 Views
nehaly_omran
Contributor II

Hello Li,

did you build imx6_platform_sdk_v1.1.0 ? so it successfully booted on SABRELite

0 Kudos

824 Views
libaizhang
Contributor II

yes。

the key step is copy DCD-Items from u-boot。

Li Baizhang

在 2013-8-3,下午5:42,nehal omran <admin@community.freescale.com> 写道:

<https://community.freescale.com/>

<https://community.freescale.com/> i.MX6 Platform SDK w/ SABRE Lite

reply from nehal

omran<https://community.freescale.com/people/nehaly.omran?et=watches.email.thread>in

i.MX Community - View the full

discussion<https://community.freescale.com/message/343179?et=watches.email.thread#343179>

0 Kudos

824 Views
nehaly_omran
Contributor II

i have u-boot from boundary devices git repo.

i have DCD Commands in *.cfg files in U_BOOT_ROOT/board/boundary/nitrogen6x/*.cfg
i think,if you please, it would better to share your patch

Many thanks

0 Kudos

823 Views
RodBorras
NXP Employee
NXP Employee

Hi,

It looks like your build, and SD card programming are all fine.

Unfortunately, for any of the examples to run, you need to make major modifications to the code. Essentially, you have to completely remap all the hardware differences between the Sabre Lite and the Sabre SDB/SDP.

In particular, you need to redo the DDR initialization (unless you run some small examples from internal RAM).

Maybe someone has already done this, and can help. Another option would be to revert back to one of the (very) old versions of the SDK (called PLATLIB at the time), that supported the Sabre Lite.

Regards,

Rod.