In case you didn’t catch it in the
Freescale git repository or on the
Meta-Freecale mailing list, Freescale has released a beta version of Linux 3.10.17 for i.MX6, and we’ve added support for it into
our Github repository.
We’ve tested it quite a bit on our various boards, and the table shows the results. As you can see, it’s very nearly feature-complete, though not yet tested as well as the
3.0.35 versions.
We’re hoping that you can help with that, though it will likely take a while.
Otavio
posted a patch set to the
master-next branch of meta-fsl-arm, but some assembly is still required.
We’ll be posting updates for the kernel to the mailing list shortly.
You may also need an updated U-Boot version to support setting the
cpu and
board variables so that the
updated boot script can load the proper DTB (Device Tree Binary or Blob) based on the processor and board type you’re using.
The change to the newer kernels will require a bit of effort, but we think the results will be well worth it.
Testing details
|
|
3.10.17 |
3.10.17 |
3.10.17 |
| Function |
4.1.0 kernel |
SABRE Lite |
Nitrogen6Q
Nitrogen6DL/S |
Nitrogen6-Lite |
| Boots |
Yes |
Yes |
Yes |
Yes |
| Peripherals |
| SD Card |
Yes |
Yes |
Yes |
Yes |
| Ethernet |
Yes |
Yes |
Yes |
Yes |
| USB Host |
Yes |
Yes |
Yes |
Yes |
| USB Slave |
Yes |
Yes |
Yes |
Yes |
| USB OTG |
Yes |
Yes |
Yes |
Yes |
| Audio out |
Yes |
Yes |
Yes |
Yes |
| Microphone |
Yes |
Yes |
Yes |
Yes |
| GPIO Buttons |
Yes |
Yes |
Yes |
not yet |
| SATA |
Yes |
Yes |
Yes
N/A for DL/S |
N/A |
| PCIe |
Yes |
Yes |
Yes |
Yes |
| Wi-Fi |
Yes |
N/A |
Yes |
Yes |
| BT |
Yes |
N/A |
Yes |
Yes |
| SPI-NOR |
Yes |
Yes |
Yes |
Yes |
| Uart1/2 |
Yes |
Yes |
Yes |
Yes |
| CAN bus |
Unknown |
Unknown |
Unknown |
Unknown |
| Displays |
| Hannstar LVDS |
Yes |
Yes |
Yes |
N/A |
| 1024×600 LVDS |
Yes |
Yes |
Yes |
Yes |
| 800×480 RGB |
Yes |
Yes |
Yes |
N/A |
| 480×272 RGB |
N/A |
N/A |
N/A |
Yes |
| HDMI |
Yes |
Yes |
Yes |
Yes |
| Composite video out |
Yes |
not yet |
not yet |
N/A |
| Backlights |
| LVDS |
Yes |
Yes |
Yes |
Yes |
| RGB |
Yes |
Yes |
Yes |
Yes |
| Touch screens |
| eGalax (Hannstar) |
Yes |
Yes |
Yes |
N/A |
| ft5x06 (7″ PCAP) |
Yes |
Yes |
Yes |
Yes |
| tsc2004 (7″ Resistive) |
Yes |
Yes |
Yes |
Yes, tested with 480×272 panel |
| Cameras |
| OV5642 parallel |
Yes |
Yes |
Yes |
N/A |
| OV5640 MIPI |
Yes |
Yes |
Yes |
N/A |
| ADV Composite video |
Yes |
not yet |
not yet |
N/A |
| Internals |
| Tapeout 1.0 |
Yes |
Unknown |
No HDMI |
N/A |
| Thermal sensor |
Yes |
Yes |
Yes |
Yes |
| CPUFreq |
Yes |
Yes |
Yes |
Yes |
| OTP |
Yes |
Yes |
Yes |
Yes |
| CAAM |
Yes |
Yes |
Yes |
Yes |
| RNG |
Yes |
Yes |
Yes |
Yes |
| MTD |
Yes |
Yes |
Yes |
Yes |
| GPU |
Yes |
Yes |
Yes |
Yes |
| VPU |
Yes |
Yes |
Yes |
Yes |
Comments 44
Kernel hangs up upon booting on Nitrogen6Q-SOM board (with i.MX6Q). It has been default-configured to nitrogen6x_defconfig + kernel image load address LOADADDR=0x10800000. I’m trying to boot the kernel by hand from U-Boot with the following command sequence (related 6x_bootscript on https://github.com/boundarydevices/u-boot-imx6/blob/production/board/boundary/nitrogen6x/6x_bootscript-yocto.txt#L87 doesn’t seem to work either):
Removing fdt_high and fdt_addr doesn’t seem to have any effect.
Kernel boot log (on the console) follows:
Starting kernel ... Booting Linux on physical CPU 0x0 Linux version 3.10.17-g4f2be0c (root@ubuntu-server) (gcc version 4.8.1 (Ubuntu/Linaro 4.8.1-10ubuntu7) ) #1 SMP Fri Jan 24 12:56:51 EET 2014 CPU: ARMv7 Processor [412fc09a] revision 10 (ARMv7), cr=10c5387d CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache Machine: Freescale i.MX6 Quad/DualLite (Device Tree), model: Freescale i.MX6 Quad Nitrogen6x Board cma: CMA: reserved 256 MiB at 40000000 Memory policy: ECC disabled, Data cache writealloc PERCPU: Embedded 8 pages/cpu @81076000 s8704 r8192 d15872 u32768 Built 1 zonelists in Zone order, mobility grouping on. Total pages: 260096 Kernel command line: console=ttymxc1,115200 vmalloc=200M consoleblank=0 rootwait root=/dev/mmcblk0p1 PID hash table entries: 4096 (order: 2, 16384 bytes) Dentry cache hash table entries: 131072 (order: 7, 524288 bytes) Inode-cache hash table entries: 65536 (order: 6, 262144 bytes) Memory: 1024MB = 1024MB total Memory: 768088k/768088k available, 280488k reserved, 0K highmem Virtual kernel memory layout: vector : 0xffff0000 - 0xffff1000 ( 4 kB) fixmap : 0xfff00000 - 0xfffe0000 ( 896 kB) vmalloc : 0xc0800000 - 0xff000000 (1000 MB) lowmem : 0x80000000 - 0xc0000000 (1024 MB) modules : 0x7f000000 - 0x80000000 ( 16 MB) .text : 0x80008000 - 0x80781f9c (7656 kB) .init : 0x80782000 - 0x807c7200 ( 277 kB) .data : 0x807c8000 - 0x807fffa0 ( 224 kB) .bss : 0x807fffa0 - 0x8085f8fc ( 383 kB) SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1 Hierarchical RCU implementation. NR_IRQS:16 nr_irqs:16 16 L310 cache controller enabled l2x0: 16 ways, CACHE_ID 0x410000c7, AUX_CTRL 0x32070000, Cache size: 1048576 B sched_clock: 32 bits at 3000kHz, resolution 333ns, wraps every 1431655ms ... ... full log available at http://pastebin.com/aAskepP4 ... hub 1-0:1.0: 1 port detected input: gpio-keys.22 as /devices/soc0/gpio-keys.22/input/input0 snvs_rtc 20cc034.snvs-rtc-lp: setting system clock to 1970-01-01 00:06:36 UTC (396) ALSA device list: #0: imx6q-nitrogen6x-sgtl5000 #1: imx-hdmi-soc kjournald starting. Commit interval 5 seconds EXT3-fs (mmcblk0p1): mounted filesystem with ordered data mode VFS: Mounted root (ext3 filesystem) readonly on device 179:1. devtmpfs: mounted Freeing unused kernel memory: 276K (80782000 - 807c7000) usb 1-1: new high-speed USB device number 2 using ci_hdrc hub 1-1:1.0: USB hub found hub 1-1:1.0: 3 ports detected init: ureadahead main process (137) terminated with status 5 mountall: Disconnected from Plymouth ov5640_read_reg:write reg error:reg=300a ov5642_read_reg:write reg error:reg=300a ERROR: v4l2 capture: slave not found!The problem doesn’t seem to be related to Video for Linux, because either compiled with or without it, the kernel hangs up in the same manner.
Author
Hi Georgi,
You’re right that this has nothing to do with V4L. The v4l driver is simply the last to produce a message. This is typical even on working boots.
Also note that the kernel itself booted successfully, and that something appears to be happening during early init. These messages are produced from userspace:
AFAIK, the kernel knows nothing about either ureadahead or Plymouth. These are Ubuntu/Debian features.
There are some Ubuntu flags that can be set on the kernel command-line to force a trace of the startup scripts, but I can’t recall what they are. Perhaps simply adding --debug debug=7 initcall_debug to your bootargs will provide additional clues.
Can you retry with those arguments? Also, can you add enable_wait_mode=off? That was used when you tried with the boot script, so it’s unlikely to be the culprit, but I’d like to rule it out.
Finally, please use pastebin or something similar if the log is this big. That increases the signal-to-noise ratio.
I have been trying to get the PCIe interface working on a Nitrogen6X board for a while now. I am using the Nit6X_PCIE daughter card with board-to-board connector and no jumper. I am using a SYBA SD-MPE24031 mini PCIe Ethernet card as a test case. I don’t actually need the Ethernet card to function; all I want to do is get the board to respond to a configuration space probe. I am just using it to verify that I have a reasonable starting point for getting an FPGA to communicate over the PCIe interface.
I first tried using the mainline kernel (linux-next) when i.MX6 PCI support was added, and now I tried the 3.10.17 beta version from the boundary devices repository. The result is the same. When I boot, I see the following error
imx6q-pcie 1ffc000.pcie: phy link never came up
The lspci command shows only
00:00.0 Class 0604: 16c3:abcd
which is the root complex itself. Interestingly, I could get an IMX build of U-Boot that has recently had PCI support added to it to sort of recognize the board, but only if I insert the clock jumper while resetting the board, and then remove the jumper once U-Boot outputs ” 00:01.0 – 16c3:abcd – Bridge device”. Then, and only then, do I see U-Boot output “01:00.0 – 10ec:8168 – Network controller”. This is the correct vendor and device ID (RealTek, 8168). U-Boot then hangs.
Any guidance would be appreciated.
Thanks.
Author
HI Greg
The clock jumper should only be used for a Sabrelite board. Nitrogen6x gets its clock
from the processor. Does the boundary-imx_3.0.35_4.1.0 branch have PCIe working for you?
I had not tried boundary-imx_3.0.35_4.1.0. It does not seem to work either. It generates
iMX6 PCIe PCIe RC mode imx_pcie_pltfm_probe entering.
PCIE: imx_pcie_pltfm_probe start link up.
link up failed, DB_R0:0x001aec00, DB_R1:0x08200000!
IMX PCIe port: link down!
With this version, the lspci command does not even show the bridge.
I understand about the jumper; I was just trying anything I could to get the setup to respond in a different way. Somehow, toggling the jumper coaxes the link to come up briefly.
Author
Hi Gregg,
The likeliest thing that you’re seeing is some form of incompatibility with the device you’re using, and since you’re currently just evaluating a random device, perhaps a list of those that we’ve tested is in order:
Some of these did require some kernel tweaks to get them to run, but most of those were quite some time ago, when things like MSI interrupts weren’t supported by the kernel. All of these should be supported in the 4.1.0 kernel tree.
Marek at Denx has been expressing some difficulties with certain devices and the PCIe reset line, but those mostly have to do with devices going into and out of suspend. It is possible that your device also requires a jumper and GPIO assignment.
As it happens, I had an Intel Ultimate N Wifi card in my laptop. I connected that to the Nitrogen6X, but unfortunately the results were the same as before. It is the half-length version of the card, as seen here:
http://www.amazon.com/Intel-Ultimate-WiFi-533AN_HMW-Mini-PCIe/dp/B007VI5M4S
Device/Vendor ID: 8086:4235
I am having trouble building this, in vivante,
gc_hal_kernel_device.c, L29, mach/hardware.h is not found?
I ran make nitrogen6x_defconfig, then make uImage modules. Hoping this is a simple miss on my end
Author
Hi Johnny,
I suppose I should have added these notes.
You need to add LOADADDR=10008000 to your make command-line, and you’ll also want to run make distclean and possibly delete include/version.h when switching your working tree from the 3.0.35 version.
Hi ,
How can i build this kernel for sabrelite board?
I tried to build it as
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- imx_v7_defconfig
but it gives error while bulding.
If there is any other config file for sabrelite then how to add it?
currently I am using 3.0.35 kernel.
Thanks,
Pratik
Author
Hi Pratik,
Sorry for not publishing the detailed instructions. What you’re looking for are nitrogen6x_defconfig (which works for SABRE Lite as well as Nitrogen6X), and the LOADADDR variable.
You’ll also want to build the dtbs target to build imx6q-sabrelite.dtb (the device tree binary).
I have a SabreLite board, and I’ve built a Yocto Dora release image with the 3.0.35 kernel (via this page http://boundarydevices.com/yocto-dora-release-mx6/)
If it’s feasible, what steps would I go through to create (via bitbake) an image using a 3.10.x kernel?
Thanks!
Author
Hi Tony,
You’ll take the same basic steps, except:
— at the first stage, replace dora with master
— Add this line to your local.conf:
Thanks Eric. I tried that out. Unfortunately I the build ran into problems when compiling systemtap (problem with “EM_AARCH64″ not defined”) and when compiling xserver-xorg ( error related to some GLMULTITEXCOORDARB functions not found when linking libglx.a)
I hacked my way quickly past the first problem, the second is a bit more daunting.
Is “master” a moving target?
Author
Hi Tony,
Yes. master is a moving target. It’s the branch where integration happens and breakage is common.
Author
Were you building fsl-image-gui or something else?
“fsl-image-gui” is my target. I actually don’t even need the xserver. I just want a build with the 3.10 kernel, gstreamer accelerated plugins and such for doing to video capture.
So, I copied in the recipe files for the older version of xorg-xserver (1.14.0), and that built too.
Now, on the final stage (fsl-image-gui:do_rootfs), the image creation is failing during the running of “create_image.sdcard” So close!
I *think* it’s unable to find the bootscripts to copy to the first partition. Any thoughts?
Author
Hi Tony,
I found that one (the boot script problem) and posted a patch for it.
It appears that something in the build process changed the working directory in which this script is run.
Author
Hi Tony,
It seems that Otavio has pushed this patch, so you should be able to run git pull in sources/meta-fsl-arm and get the patch.
Thanks for the quick turnaround on that fix!
It turns out that I had to complete the step of making (I think) and copying over the imx6q-sabrelite.dtb file to the SD card. Once that was in place, I was able to boot up.
Dear Sir.
I’m using the sabrelite with the ov5640_mipi module.
I’m using the yocto Master-next.
when i try to start the driver of the ov5640_mipi, I have the following error:
“mipi csi2 can not receive sensor clk! 200″
looking in the driver the ov5640_init_mode function is waiting for a change of status on the dphy reg:
“””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””
/* wait for mipi sensor ready */
while (1) {
mipi_reg = mipi_csi2_dphy_status(mipi_csi2_info);
if (mipi_reg != 0×200)
break;
if (i++ >= 20) {
pr_err(“mipi csi2 can not receive sensor clk! %xn”, mipi_reg);
return -1;
}
msleep(10);
}
“””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””
Thank Omar
Hi Omar
Can you email me your dmesg output ?
Can you try our boundary-imx_3.10.17_1.0.0_beta from github using
nitrogen6x_defconfig ?
If that doesn’t work, try deleting ov5642_camera.ko to see if some race
is causing trouble.
Then try our boundary-imx_3.0.35_4.1.0 branch to verify that
your hardware is good. Or try one of Eric’s prebuilt SD card images
to verify hardware.
Thanks
Troy
Hi, Troy
with the 3.0.35 works (load the driver with no errors and the video1 is present and working.
But during boot i see ERROR slave device not present (referring to video0 dev..)..
Yuo should also received the boot mesg for 3.10.17 beta
Omar
Hi.
A fix to my previous message the second video dev created was my fault:
so with the 3.0.35 the ov5640mipi is working.
still now investigating on 3.10.17 beta.
Omar
Hi, the patch you sent me is working fine.
could you please patch it on your github.
https://github.com/boundarydevices/linux-imx6/tree/boundary-imx_3.10.17_1.0.0_beta
Thanks
Omar
Has anyone got the freescale gstreamer plugins working in 3.10.17? I’m running 3.10.17 successfully, but when I compile and install
firmware-imx-3.5.7-1.0.0 (there doesn’t seem to be a later version)
imx-lib-3.10.17-1.0.0
fsl-alsa-plugins-3.10.17-1.0.0
libfslcodec-3.10.17-1.0.0
libfslparser-3.10.17-1.0.0
libfslvpuwrap-3.10.17-1.0.0
gst-fsl-plugins-3.10.17-1.0.0
after installing the 3.10.17 linux headers, I get the following error when trying to use vpuenc:
gst-inspect vpuenc
*** Error in `/usr/bin/gst-inspect-0.10′: double free or corruption (top): 0x011ee658 ***
I’ve tried reinstalling all of the libgstreamer stuff, gstreamer-tools, all of the gstreamer plugins (good/bad/ugly) but I’m still seeing this error. I see the same error when running gst-launch.
Any ideas?
Author
Hi Allan,
Yes. We’ve tested 3.10.17-beta with gstreamer. You can test it out using the image in this post.
We’re also testing with Ubuntu Saucy, though we’re not quite ready for a release.
What userspace are you running?
I’ll give the prepackaged version a try, but I’m betting it will work. What version of the freescale plugins/libs are in that image?
I’m using Ubuntu Core 13.10.
Author
Hi Allan,
I hate to give out versions of Freescale plugins, ’cause they have so many version numbers… They’re the ones in the 3.10.17-beta packages:
Eric-
I’ll give the prepackaged image a shot, I’m sure it will work. Do you know what version of gst-fsl-plugins, etc was comipled in the yocto build?
I’m running Ubuntu Core 13.10.
-Allan
Sorry for the multiple posts.
Thats interesting, I wasn’t able to compile gst-fsl-plugins 3.5.7 or 3.0.10 on my 3.10.17 kernel and headers as there was a change to an ioctl (http://comments.gmane.org/gmane.comp.lib.uclibc.buildroot/78098) in the kernel. Yocto must be using older kernel headers to build the older gst-fsl-plugins.
Version question…
so if i’m running the version linked from the Nitrogen6x page called “boundary-imx_3.0.35_4.1.0”, what am I actually running?
Does this version support USB OTG? and if so, what’s the mechanism to enable it in host mode? I’m assuming you need some additional gadget driver for device mode.
Author
boundary-imx_3.0.35_4.1.0 refers to a branch in our kernel tree which is based on Freescale’s L3.0.35_4.1.0 GA Release package.
You can find Freescale’s release in this page on i.MX Community.
boundary-imx_3.0.35_4.1.0 doesn’t refer to a particular userspace. It can be used with many different userspace environments (essentially any non-Android build).
Can you be specific about the page you’re referring to, so we can narrow things down?
The ‘latest version’ link
http://boundarydevices.com/i-mx6-frequently-asked-questions-and-answers/#latest-kernel
Author
If you use that source tree to build the kernel, and use our standard nitrogen6x_defconfig, USB OTG will function.
You should be able to use a USB OTG adapter and plug in a USB stick, for example, and have the device recognized. Similarly, you can hook up to a PC or a USB host port on one of our boards and the board will recognize that it’s in “device mode”.
In order to use any particular peripheral, you’ll need the driver for that configured in the kernel (USB stick support should be present).
Similarly, you’ll need to configure a USB Gadget to configure the port as a device. We often use the USB ethernet, USB serial, and USB mass storage gadgets on our boards.
Is there a ubuntu-image which run with the 3.10.17 kernel for testing?
Or are you working on an image at the moment? so i could safe a lot of work 😉
Hello,
Has anyone compile succesfully linux-imx6-boundary-imx_3.10.17_1.0.0_beta-rt?
LD vmlinux.o
MODPOST vmlinux.o
GEN .version
CHK include/generated/compile.h
UPD include/generated/compile.h
CC init/version.o
LD init/built-in.o
drivers/built-in.o: In function `mxc_epdc_fb_runtime_resume’:
of_iommu.c:(.text+0x25504): undefined reference to `request_bus_freq’
…
… snip
…
sound/built-in.o: In function `fsl_spdif_runtime_suspend’:
last.c:(.text+0x3ea00): undefined reference to `release_bus_freq’
make: *** [vmlinux] Error 1
Author
Hi John,
I built it using nitrogen6x_defconfig (which doesn’t include either mxc_epdc or fsl_spdif drivers).
Hello,
I again.
I just compile kernel linux-imx6-boundary-imx_3.10.17_1.0.0_beta-rt without any problems.
But SabreLite-imx6 doesnt boot.
it freeze in this point:
4517920 bytes read in 350 ms (12.3 MiB/s)
## Booting kernel from Legacy Image at 10800000 …
Image Name: Kinux-3.10.17-rt12
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 4517856 Bytes = 4.3 MiB
Load Address: 10008000
Entry Point: 10008000
Verify checksum … OK
Loading kernel Image …. OK
Starting kenel……
And no more message…………
My kernel config is : http://tny.cz/5b18dca1
And now, with the same cross compiler, I have compiled linux-imx-boundary-3.0.35 and it works fine.
Author
Hi John,
Is your boot script loading the dtb properly? Did you start with nitrogen6x_defconfig?
I’m at a Freescale conference in Dallas and won’t be able to go through your config until later.
Hello Ericn,
Yes, before build my kernel, I use nitrogen6x_defconfig as kernel config file.
About dtb file, I am not sure how to use it. I follow a manual about how to load this file, but nothing.
Author
Hi John,
We have this in our standard 6x_bootscript and you can use that as a reference (starting at line #90).
The easiest way to test is to copy your uImage and modules into this Yocto-based image for 3.10.17-beta.
Hello,
Well, now I could booting board with new kernel. Thanks for advice.
Now I have problem with kernel version 3.10.17-rt12.
It doesnt work fine. I now that it is beta version.
Perhaps, I need to check xenomai for this board.
Hi Eric,
I have a nitrogen6x_max board from Boundary and I booted up the kernel 3.10.17 beta release on it.
I also wanted to add MIPI OV5640 camera support and how do I go about getting the camera to work with this board with that particular kernel.
Hope you can help me out here.
Thanks in advance.