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
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
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 ,
EricNelson Do You think Yocto can help bkowal on this issue? In other words, are the sample applications provided in the meta-fsl recipes?
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:
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?
Mr. RodBorras ,
How could i download the PLATLIB SDK?
i could not find its source code
thanks,
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>
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
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>
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
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.
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
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?
Hi Tyler,
Did you see the comment about pads and PHY_RESET above?
1
Hi Eric - do you know which Ethernet driver is being used by the Uboot Nitrogen6x build?
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>
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.
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
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.
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.
Having same problem, but no luck yet.