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,183 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

2,145 Views
sanjayapalliker
Contributor I

HI

You can try RidgeRun SabreLite Linux SDK.

Getting Started Guide for iMX6 SabreLite - RidgeRun Developer Connection

For further support, please contact : sanjay@ridgerun.com

Sanjay

RidgeRun Embedded Solutions

sanjay@ridgerun.com

0 Kudos

2,145 Views
nehaly_omran
Contributor II

hello community ,

i could build smp_primes application for SDK for sabrelite
but now i can not debug it at all :

how to use the sdk with the gdb for debugging on sabrelite?

is there gdb_init  file for sdk to use it when debugging?

thanks &best regards ,

0 Kudos

2,147 Views
LeonardoSandova
Specialist I

EricNelson Do You think Yocto can help bkowal on this issue? In other words, are the sample applications provided in the meta-fsl recipes?

0 Kudos

2,147 Views
EricNelson
Senior Contributor II

Hi Leo,

I haven't even downloaded the Platform SDK, so I don't have my bearings here.

In general, the broad-strokes differences between SABRE Lite are going to be:

  • SABRE Lite uses UART2 (ttymxc1) for its' console (this is the big one), and
  • SABRE Lite has no PMIC, so the bootstrap shouldn't include that

Since SABRE SDx seem to load U-Boot without any PMIC accesses during the DCD, I'd be surprised if the Platform SDK had early accesses there.

Rod, have you seen any reference to which UART is used? If so, have you tried just changing it?

2,147 Views
nehaly_omran
Contributor II

Mr. RodBorras ,

How could i download the PLATLIB SDK?

i could not find its source code

thanks,

0 Kudos

2,147 Views
libaizhang
Contributor II

the website has not source code of sabrelite ,i hava made the patch for

sabrelite。do you need it?

Li Baizhang

在 2013-8-3,下午5:45,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/343180?et=watches.email.thread#343180>

2,147 Views
nehaly_omran
Contributor II

Li, i think what Mr.RodBorras meant another old SKD , released end of 2012 ,other than iMX6_SDK that supports i.mx5 and i.mx6-based sabrelite

0 Kudos

2,147 Views
libaizhang
Contributor II

the attachment is the patch for imx6_platform_sdk_v1.1.0.tgz in

sabrelite. all my changes in source codes is marked by "55555555555"

2013/8/5 nehal omran <admin@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/343241?et=watches.email.thread#343241>

2,147 Views
rafalfabich
Contributor II

Hi Li and everyone,

I used your patch and successfully run SDK binaries on Sabre Lite from Boundary Devices. However, the ethernet PHY does not seem to work, have you tested it?

Every time enet tries to read PHY ID and it gets 0xfffffffff0 instead. In U-boot code as well as in Linux kernel, are used GPIO pins (port 6) that are missing from board_network.c in SDK.

I mean the following snippet from U-boot code for sabrelite:

iomux_v3_cfg_t const enet_pads1[] = {

(...)

/* pin 35 - 1 (PHY_AD2) on reset */
MX6Q_PAD_RGMII_RXC__GPIO_6_30        | MUX_PAD_CTRL(NO_PAD_CTRL),
/* pin 32 - 1 - (MODE0) all */
MX6Q_PAD_RGMII_RD0__GPIO_6_25        | MUX_PAD_CTRL(NO_PAD_CTRL),
/* pin 31 - 1 - (MODE1) all */
MX6Q_PAD_RGMII_RD1__GPIO_6_27        | MUX_PAD_CTRL(NO_PAD_CTRL),
/* pin 28 - 1 - (MODE2) all */
MX6Q_PAD_RGMII_RD2__GPIO_6_28        | MUX_PAD_CTRL(NO_PAD_CTRL),
/* pin 27 - 1 - (MODE3) all */
MX6Q_PAD_RGMII_RD3__GPIO_6_29        | MUX_PAD_CTRL(NO_PAD_CTRL),
/* pin 33 - 1 - (CLK125_EN) 125Mhz clockout enabled */
MX6Q_PAD_RGMII_RX_CTL__GPIO_6_24    | MUX_PAD_CTRL(NO_PAD_CTRL),

(...)

}

Are these pins configured somewhere else in the SDK, or should they be added?

I added the following to imx_enet_iomux(void) definition but without success:

#ifdef BOARD_SABRE_LITE

    gpio_set_gpio(GPIO_PORT6, 30);

    gpio_set_gpio(GPIO_PORT6, 25);

    gpio_set_gpio(GPIO_PORT6, 27);

    gpio_set_gpio(GPIO_PORT6, 28);

    gpio_set_gpio(GPIO_PORT6, 29);

    gpio_set_gpio(GPIO_PORT6, 24);

    gpio_set_direction(GPIO_PORT6, 30, GPIO_GDIR_OUTPUT);

    gpio_set_direction(GPIO_PORT6, 25, GPIO_GDIR_OUTPUT);

    gpio_set_direction(GPIO_PORT6, 27, GPIO_GDIR_OUTPUT);

    gpio_set_direction(GPIO_PORT6, 28, GPIO_GDIR_OUTPUT);

    gpio_set_direction(GPIO_PORT6, 29, GPIO_GDIR_OUTPUT);

    gpio_set_direction(GPIO_PORT6, 24, GPIO_GDIR_OUTPUT);

   

    gpio_set_level(GPIO_PORT6, 30, GPIO_HIGH_LEVEL);

    gpio_set_level(GPIO_PORT6, 25, GPIO_HIGH_LEVEL);

    gpio_set_level(GPIO_PORT6, 27, GPIO_HIGH_LEVEL);

    gpio_set_level(GPIO_PORT6, 28, GPIO_HIGH_LEVEL);

    gpio_set_level(GPIO_PORT6, 29, GPIO_HIGH_LEVEL);

    gpio_set_level(GPIO_PORT6, 24, GPIO_HIGH_LEVEL);

#endif

It does not help, I still get the output like this (three lines are added by me to see the value read from iim registers):

imx_enet_phy_init: value = 0x0000ffff

imx_enet_phy_init: value = 0x0000ffff

imx_enet_phy_init: id = 0xfffffff0

[Warning] ENET not connect right PHY: ID=fffffff0

Have you got any suggestions?

Best regards,

Rafal

0 Kudos

2,143 Views
aleksandrmuravi
Contributor III

Having same issue on MCIMX6Q-SDP SCH-27392 REV C3 700-27392 REV B. I mean "[Warning] ENET not connect right PHY: ID=fffffff0" messages when trying to run ethernet test.

I am using Platform SDK without any patches.

Someone know how to fix it?

Regards.

0 Kudos

2,143 Views
rafalfabich
Contributor II

Hi Aleksandr,

If the issue is the same as mine, then you need to know the phy chip address and use it when the ethernet connection is configured. 


Honestly, I do not know much about the board you are using, i.e. what is the ethernet phy chip and how it is configured, but I will explain what I did in my case.
I use SABRE Lite which is populated with KSZ9021RN ethernet PHY chip. At power-on the three lines of the chip (PHYADDR0, PHYADDR1 and PHYADDR2) are scanned and phy address is set according to their state.
On SABRE Lite, the chip is connected in such way that PHYADDR0 and PHYADDR1 are connected to ethernet connector LEDs (the default role of the pins are LEDs) with pull-up and pull-down resistors. So, when the board is powered on, I always get PHYADDR0 = 0 and PHYADDR1 = 1. So, this is done by hardware.

Now, the software part. The third line (PHYADDR2) is connected to RGMII_RXC line, that is why this pin initially must be configured as GPIO-out not as RGMII_RXC. In my case the GPIO pin is set to 1, which means PHYADDR2=1. In result the PHY address is set to 0x6 not 0x0 as it was hardcoded in original SDK.
Similar way the MODE0-3 pins of the KSZ9021RN chip are set. They are connected to RGMII_RD0-3, so same story about pin configuration...

In original Freescale SDK, the pins are confgured once according to the IOMUX Tool generated files (a function defined in enet_iomux_config.c), that is why I had to change the initial function so that it configures the lines as GPIOs and add another function that would reconfigure the lines as RGMII interface after PHY chip is up.

Apart from the pin configuration, also the ethernet applications (enet_test and lwIP) had to be changed to use the correct PHY address when running on SABRE Lite board.


You can check the patch for details. But before you apply it to the original SDK, first you need to apply the patch posted by Li above in the same thread. Then you can follow the changes and try to apply them to your board specific code.

Hope it helps.

Regards,
Rafal

2,143 Views
shefft
Contributor IV

Well, I've been through all this stuff tooth and nail, applied the patch, etc.  I can't get my link to be UP with either straight or loopback cable.  I have what looks like a floating green LED (there's a slight hint of green in the center, not quite on or off, so that's obviously bad) and permanently on yellow LED.  Running a Nitrogen board, which requires just a tweak or two to the nice description of the Ethernet fix in this thread.

ENET KSZ9021RN PHY: ID=221610

enet phy skew: f0f0

enet phy status 6: 7949

enet 0x0 6: 1140

enet 0x5 6: 0000

KSZ9021 reg 0x1f = 0300

enet phy op mode status: 8001

ENET 6: [ HALF_DUPLEX ] [ disconnected ] [ 10M bps ]:

ENET link status DOWN, test terminated

Anybody else see this kind of thing, or maybe have already gotten it working with the Nitrogen?

0 Kudos

2,143 Views
EricNelson
Senior Contributor II

Hi Tyler,

Did you see the comment about pads and PHY_RESET above?

0 Kudos

2,143 Views
shefft
Contributor IV

1

Hi Eric - do you know which Ethernet driver is being used by the Uboot Nitrogen6x build? 

0 Kudos

2,143 Views
libaizhang
Contributor II

sorry,i don't kown

Li Baizhang

在 2014-2-11,上午7:23,Tyler Sheffield <admin@community.freescale.com> 写道:

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

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

reply from Tyler

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

*i.MX

Community* - View the full

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

0 Kudos

2,143 Views
shefft
Contributor IV

2

At long last, I discovered it's a timing issue in the SDK Ethernet driver send function.  Had to add a 1 second delay between setting the TxBD ready bit and setting TDAR to enable transmission.  Yep, you are right - it doesn't make any sense at all.

0 Kudos

2,143 Views
enekofernandez
Contributor I

I am trying to get Ethernet running on SABRE LITE. I applied both patches and got the DHCP working properly. I am trying to get PING test working but it doesn't send any packet. It works properly until DHCP as it gets a proper IP address (so I guess PHY is working properly). After that, the app asks for a destination IP address to start the test, and the app seems to stop, and I cannot see any packet using Wireshark in my PC.I can see all the ARP and DHCP packets in Wireshark, but no packet after that.

It seems that the packet sending is not working, I tried adding a 1 second delay in the imx_enet_send as commented but no luck.

Any help on this from someone that got it working?

Thank you,

Eneko

0 Kudos

2,146 Views
shefft
Contributor IV

2

The one second delay I had to add turned to be related to an as yet undiagnosed problem with the arm dstream debugger or ds-5 ide.  Once I ran without it, didn't have the issue and didn't need the delay.  Infuriating.

Wish I could help you, but I'm using a Nitrogen6x and don't have ping.

0 Kudos

2,146 Views
enekofernandez
Contributor I

I managed to have it working by modifying g_state variable to kSendPingState in the run() function as follows:

case kAskForTargetState:

                get_target_address();

                g_state = kSendPingState;

                break;

It used to be "g_state = kWaitState;" what makes the app wait for ping reply (as indicated in the comments) when no ping sent by the moment.

I have it working now but the delay between pings is very variable with timings between 4ms and 30secs!! Trying to figure it out now... (Maybe my workaround is not that good  :-(   )

I think this fix is only needed when using DHCP, as if using AutoIP, that variable is updated as soon as the configuration is OK.

0 Kudos

2,146 Views
aleksandrmuravi
Contributor III

Having same problem, but no luck yet.

0 Kudos