Problem with newer Linux kernels


We are working with an iMX6 Rex derivative board that is very close to the original Rex design. The u-boot and linux-3.0.35 run fine on the board, and it has been very stable. We need a full PTP (IEEE-1588 Precision Time Protocol) stack running, and that was not supported until Linux kernel version 3.8 and later. 3.0 has some rudimentary PTP support, but it appear to be early “sandbox” code. I followed the directions in “Software->How to start with Linux and uBoot”, and a 3.0 kernel built by me runs correctly on the iMX6.

In order to get PTP support, I have attempted to build some recent kernel versions 3.12.18 and 3.14.2 using the same ARM toolchain, and they build correctly. When I attempt to boot the new kernels with u-boot, it verifies correctly, but it halts at “Starting kernel”.

Loading file "uImage.3.12.18" from mmc device 0:1 (xxa1)
4222464 bytes read
Booting kernel from Legacy Image at 10008000 ...
   Image Name:   Linux-3.12.18
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    4222400 Bytes =  4 MB
   Load Address: 10008000
   Entry Point:  10008000
   Verifying Checksum ... OK
   XIP Kernel Image ... OK
Starting kernel ...
(stops here)

I tried setting the DEBUG_LL config option, but no extra information printed out.

Have anyone else successfully built and run newer Linux kernels than 3.0 on iMX6 Rex? The configuration options are somewhat different for later Linux versions than 3.0. I’m starting with imx_v6_v7_defconfig for the build parameters.

  • You must to post comments
Great Answer

Hi David,

I would try to start from Freescale and compile it for Sabre SD. Maybe have a look here:

Also, github from boundery devices could be an inspiration (look for Sabre Lite and its clones):

Please let me know when you are successful. Thank you very much.
- Robert

  • You must to post comments

BTW: I saw some errata about IEEE-1588. This may not affect your application, just be sure you check the latest processor errata document. For example, I found there something like this:

ERR005895ENET: ENET 1588 channel 2 event capture mode not functional

The ENET module provides a 4-channel IEEE 1588 compliant timer that supports event input
capture and output compare mode. The capture/compare feature requires the ENET 1588 clock to
latch in the correct IEEE 1588 counter value to the Timer Compare Capture Register
(ENET_TCCRn). Due to an integration issue, the ENET 1588 clock and Channel 2 event
capture/compare signal are both connected to the same GPIO16 pin.

Projected Impact:

ENET 1588 channel 2 event capture/compare mode cannot be used.


None. Channels 1, 3, and 4 can be used for the event capture instead.

  • You must to post comments
Showing 2 results
Your Answer

Please first to submit.